Skip to content

Commit

Permalink
Refactor API third step (fields).
Browse files Browse the repository at this point in the history
  • Loading branch information
minborg committed Aug 28, 2015
1 parent 94511aa commit 91bcab3
Show file tree
Hide file tree
Showing 115 changed files with 890 additions and 695 deletions.
Expand Up @@ -14,21 +14,23 @@
* License for the specific language governing permissions and limitations under * License for the specific language governing permissions and limitations under
* the License. * the License.
*/ */
package com.speedment.core.entity; package com.speedment.api;


import com.speedment.core.exception.SpeedmentException; import com.speedment.api.db.MetaResult;
import com.speedment.core.encoder.JsonEncoder; import com.speedment.api.annotation.Api;
import com.speedment.core.manager.metaresult.MetaResult; import com.speedment.api.exception.SpeedmentException;
import com.speedment.core.field.encoder.JsonEncoder;
import java.util.function.Consumer; import java.util.function.Consumer;


/** /**
* This interface contains the common methods that are the same for all * This interface contains the common methods that are the same for all
* entities. Do not assume that an entity must implement this interface. * entities. Do not assume that an entity must implement this interface.
* *
* @author pemi * @author pemi, Emil Forslund
* @param <ENTITY> type * @param <ENTITY> type
*/ */
public interface BaseEntity<ENTITY> { @Api(version = "2.1")
public interface Entity<ENTITY> {


/** /**
* Creates and returns a new copy of this entity. * Creates and returns a new copy of this entity.
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/com/speedment/api/HasSpeedment.java
@@ -1,9 +1,28 @@
/**
*
* Copyright (c) 2006-2015, Speedment, Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); You may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.speedment.api; package com.speedment.api;


import com.speedment.api.annotation.Api;

/** /**
* *
* @author pemi * @author pemi
*/ */
@Api(version = "2.1")
public interface HasSpeedment { public interface HasSpeedment {
Speedment getSpeedment(); Speedment getSpeedment();
} }
6 changes: 3 additions & 3 deletions src/main/java/com/speedment/api/Manager.java
Expand Up @@ -16,12 +16,12 @@
*/ */
package com.speedment.api; package com.speedment.api;


import com.speedment.api.db.MetaResult;
import com.speedment.api.annotation.Api; import com.speedment.api.annotation.Api;
import com.speedment.api.config.Column; import com.speedment.api.config.Column;
import com.speedment.api.config.Table; import com.speedment.api.config.Table;
import com.speedment.core.exception.SpeedmentException; import com.speedment.api.exception.SpeedmentException;
import com.speedment.core.lifecycle.Lifecyclable; import com.speedment.core.runtime.Lifecyclable;
import com.speedment.core.manager.metaresult.MetaResult;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.stream.Stream; import java.util.stream.Stream;


Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/speedment/api/Speedment.java
Expand Up @@ -18,7 +18,7 @@


import com.speedment.core.platform.component.Component; import com.speedment.core.platform.component.Component;
import com.speedment.api.annotation.Api; import com.speedment.api.annotation.Api;
import com.speedment.core.exception.SpeedmentException; import com.speedment.api.exception.SpeedmentException;


/** /**
* The {@code Platform} class acts as a generic holder of different system * The {@code Platform} class acts as a generic holder of different system
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/speedment/api/config/Column.java
Expand Up @@ -21,7 +21,7 @@
import com.speedment.api.annotation.External; import com.speedment.api.annotation.External;
import com.speedment.api.config.aspects.Child; import com.speedment.api.config.aspects.Child;
import com.speedment.api.config.aspects.Enableable; import com.speedment.api.config.aspects.Enableable;
import com.speedment.core.config.impl.ColumnImpl; import com.speedment.core.config.ColumnImpl;
import com.speedment.api.config.aspects.ColumnCompressionTypeable; import com.speedment.api.config.aspects.ColumnCompressionTypeable;
import com.speedment.api.config.aspects.FieldStorageTypeable; import com.speedment.api.config.aspects.FieldStorageTypeable;
import java.util.Optional; import java.util.Optional;
Expand Down
5 changes: 2 additions & 3 deletions src/main/java/com/speedment/api/config/Dbms.java
Expand Up @@ -18,13 +18,12 @@


import com.speedment.api.Speedment; import com.speedment.api.Speedment;
import com.speedment.api.annotation.Api; import com.speedment.api.annotation.Api;
import com.speedment.core.config.impl.utils.ConfigUtil;
import com.speedment.api.annotation.External; import com.speedment.api.annotation.External;
import com.speedment.api.config.aspects.Parent; import com.speedment.api.config.aspects.Parent;
import com.speedment.api.config.aspects.Child; import com.speedment.api.config.aspects.Child;
import com.speedment.api.config.aspects.Enableable; import com.speedment.api.config.aspects.Enableable;
import com.speedment.api.config.aspects.DbmsTypeable; import com.speedment.api.config.aspects.DbmsTypeable;
import com.speedment.core.config.impl.DbmsImpl; import com.speedment.core.config.DbmsImpl;
import groovy.lang.Closure; import groovy.lang.Closure;
import java.util.Optional; import java.util.Optional;
import java.util.function.Function; import java.util.function.Function;
Expand Down Expand Up @@ -57,7 +56,7 @@ static void setSupplier(Function<Speedment, Dbms> provider) {
/** /**
* Creates a new instance implementing this interface by using the class * Creates a new instance implementing this interface by using the class
* supplied by the default factory. To change implementation, please use the * supplied by the default factory. To change implementation, please use the
* {@link #setSupplier(java.util.function.Supplier) setSupplier} method. * {@link #setSupplier(java.util.function.Function) setSupplier} method.
* *
* @param speedment the {@link Speedment} instance * @param speedment the {@link Speedment} instance
* @return the new instance * @return the new instance
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/com/speedment/api/config/ForeignKey.java
Expand Up @@ -17,11 +17,10 @@
package com.speedment.api.config; package com.speedment.api.config;


import com.speedment.api.annotation.Api; import com.speedment.api.annotation.Api;
import com.speedment.core.config.impl.utils.ConfigUtil;
import com.speedment.api.config.aspects.Parent; import com.speedment.api.config.aspects.Parent;
import com.speedment.api.config.aspects.Child; import com.speedment.api.config.aspects.Child;
import com.speedment.api.config.aspects.Enableable; import com.speedment.api.config.aspects.Enableable;
import com.speedment.core.config.impl.ForeignKeyImpl; import com.speedment.core.config.ForeignKeyImpl;
import groovy.lang.Closure; import groovy.lang.Closure;
import java.util.function.Supplier; import java.util.function.Supplier;


Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/speedment/api/config/ForeignKeyColumn.java
Expand Up @@ -22,8 +22,8 @@
import com.speedment.api.config.aspects.Child; import com.speedment.api.config.aspects.Child;
import com.speedment.api.config.aspects.Columnable; import com.speedment.api.config.aspects.Columnable;
import com.speedment.api.config.aspects.Enableable; import com.speedment.api.config.aspects.Enableable;
import com.speedment.core.config.impl.ForeignKeyColumnImpl; import com.speedment.core.config.ForeignKeyColumnImpl;
import com.speedment.core.exception.SpeedmentException; import com.speedment.api.exception.SpeedmentException;
import java.util.function.Supplier; import java.util.function.Supplier;


/** /**
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/com/speedment/api/config/Index.java
Expand Up @@ -17,12 +17,11 @@
package com.speedment.api.config; package com.speedment.api.config;


import com.speedment.api.annotation.Api; import com.speedment.api.annotation.Api;
import com.speedment.core.config.impl.utils.ConfigUtil;
import com.speedment.api.annotation.External; import com.speedment.api.annotation.External;
import com.speedment.api.config.aspects.Parent; import com.speedment.api.config.aspects.Parent;
import com.speedment.api.config.aspects.Child; import com.speedment.api.config.aspects.Child;
import com.speedment.api.config.aspects.Enableable; import com.speedment.api.config.aspects.Enableable;
import com.speedment.core.config.impl.IndexImpl; import com.speedment.core.config.IndexImpl;
import groovy.lang.Closure; import groovy.lang.Closure;
import java.util.function.Supplier; import java.util.function.Supplier;


Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/speedment/api/config/IndexColumn.java
Expand Up @@ -21,8 +21,8 @@
import com.speedment.api.config.aspects.Child; import com.speedment.api.config.aspects.Child;
import com.speedment.api.config.aspects.Columnable; import com.speedment.api.config.aspects.Columnable;
import com.speedment.api.config.aspects.Enableable; import com.speedment.api.config.aspects.Enableable;
import com.speedment.core.config.impl.IndexColumnImpl;
import com.speedment.api.config.aspects.OrderTypeable; import com.speedment.api.config.aspects.OrderTypeable;
import com.speedment.core.config.IndexColumnImpl;
import java.util.function.Supplier; import java.util.function.Supplier;


/** /**
Expand Down
1 change: 1 addition & 0 deletions src/main/java/com/speedment/api/config/Node.java
Expand Up @@ -21,6 +21,7 @@
import com.speedment.api.config.aspects.Nameable; import com.speedment.api.config.aspects.Nameable;
import com.speedment.api.config.aspects.Parent; import com.speedment.api.config.aspects.Parent;
import com.speedment.api.annotation.Api; import com.speedment.api.annotation.Api;
import com.speedment.api.config.aspects.Ordinable;
import java.util.Optional; import java.util.Optional;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Stream; import java.util.stream.Stream;
Expand Down
Expand Up @@ -21,7 +21,7 @@
import com.speedment.api.config.aspects.Child; import com.speedment.api.config.aspects.Child;
import com.speedment.api.config.aspects.Columnable; import com.speedment.api.config.aspects.Columnable;
import com.speedment.api.config.aspects.Enableable; import com.speedment.api.config.aspects.Enableable;
import com.speedment.core.config.impl.PrimaryKeyColumnImpl; import com.speedment.core.config.PrimaryKeyColumnImpl;
import java.util.function.Supplier; import java.util.function.Supplier;


/** /**
Expand Down
5 changes: 2 additions & 3 deletions src/main/java/com/speedment/api/config/Project.java
Expand Up @@ -19,12 +19,11 @@
import com.speedment.api.HasSpeedment; import com.speedment.api.HasSpeedment;
import com.speedment.api.Speedment; import com.speedment.api.Speedment;
import com.speedment.api.annotation.Api; import com.speedment.api.annotation.Api;
import com.speedment.core.config.impl.utils.ConfigUtil;
import com.speedment.api.annotation.External; import com.speedment.api.annotation.External;
import com.speedment.api.config.aspects.Parent; import com.speedment.api.config.aspects.Parent;
import com.speedment.api.config.aspects.Child; import com.speedment.api.config.aspects.Child;
import com.speedment.api.config.aspects.Enableable; import com.speedment.api.config.aspects.Enableable;
import com.speedment.core.config.impl.ProjectImpl; import com.speedment.core.config.ProjectImpl;
import groovy.lang.Closure; import groovy.lang.Closure;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.Optional; import java.util.Optional;
Expand Down Expand Up @@ -58,7 +57,7 @@ static void setSupplier(Function<Speedment, Project> provider) {
/** /**
* Creates a new instance implementing this interface by using the class * Creates a new instance implementing this interface by using the class
* supplied by the default factory. To change implementation, please use the * supplied by the default factory. To change implementation, please use the
* {@link #setSupplier(java.util.function.Supplier) setSupplier} method. * {@link #setSupplier(java.util.function.Function) setSupplier} method.
* *
* @return the new instance * @return the new instance
*/ */
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/com/speedment/api/config/Schema.java
Expand Up @@ -17,12 +17,11 @@
package com.speedment.api.config; package com.speedment.api.config;


import com.speedment.api.annotation.Api; import com.speedment.api.annotation.Api;
import com.speedment.core.config.impl.utils.ConfigUtil;
import com.speedment.api.annotation.External; import com.speedment.api.annotation.External;
import com.speedment.api.config.aspects.Parent; import com.speedment.api.config.aspects.Parent;
import com.speedment.api.config.aspects.Child; import com.speedment.api.config.aspects.Child;
import com.speedment.api.config.aspects.Enableable; import com.speedment.api.config.aspects.Enableable;
import com.speedment.core.config.impl.SchemaImpl; import com.speedment.core.config.SchemaImpl;
import com.speedment.api.config.aspects.ColumnCompressionTypeable; import com.speedment.api.config.aspects.ColumnCompressionTypeable;
import com.speedment.api.config.aspects.FieldStorageTypeable; import com.speedment.api.config.aspects.FieldStorageTypeable;
import com.speedment.api.config.aspects.StorageEngineTypeable; import com.speedment.api.config.aspects.StorageEngineTypeable;
Expand Down
18 changes: 4 additions & 14 deletions src/main/java/com/speedment/api/config/Table.java
Expand Up @@ -17,15 +17,14 @@
package com.speedment.api.config; package com.speedment.api.config;


import com.speedment.api.annotation.Api; import com.speedment.api.annotation.Api;
import com.speedment.core.config.impl.utils.ConfigUtil;
import com.speedment.api.annotation.External; import com.speedment.api.annotation.External;
import com.speedment.api.config.aspects.Parent; import com.speedment.api.config.aspects.Parent;
import com.speedment.api.config.aspects.Child; import com.speedment.api.config.aspects.Child;
import com.speedment.api.config.aspects.Enableable; import com.speedment.api.config.aspects.Enableable;
import com.speedment.core.config.impl.TableImpl;
import com.speedment.api.config.aspects.ColumnCompressionTypeable; import com.speedment.api.config.aspects.ColumnCompressionTypeable;
import com.speedment.api.config.aspects.FieldStorageTypeable; import com.speedment.api.config.aspects.FieldStorageTypeable;
import com.speedment.api.config.aspects.StorageEngineTypeable; import com.speedment.api.config.aspects.StorageEngineTypeable;
import com.speedment.core.config.TableImpl;
import groovy.lang.Closure; import groovy.lang.Closure;
import java.util.Optional; import java.util.Optional;
import java.util.function.Supplier; import java.util.function.Supplier;
Expand Down Expand Up @@ -145,10 +144,7 @@ default Class<Schema> getParentInterfaceMainClass() {
* @param c Closure * @param c Closure
* @return the new Column * @return the new Column
*/ */
// DO NOT REMOVE, CALLED VIA REFLECTION Column column(Closure<?> c);
default Column column(Closure<?> c) {
return ConfigUtil.groovyDelegatorHelper(c, this::addNewColumn);
}


/** /**
* Creates and returns a new Index. * Creates and returns a new Index.
Expand All @@ -158,10 +154,7 @@ default Column column(Closure<?> c) {
* @param c Closure * @param c Closure
* @return the new Index * @return the new Index
*/ */
// DO NOT REMOVE, CALLED VIA REFLECTION Index index(Closure<?> c);
default Index index(Closure<?> c) {
return ConfigUtil.groovyDelegatorHelper(c, this::addNewIndex);
}


/** /**
* Creates and returns a new ForeignKey. * Creates and returns a new ForeignKey.
Expand All @@ -171,10 +164,7 @@ default Index index(Closure<?> c) {
* @param c Closure * @param c Closure
* @return the new ForeignKey * @return the new ForeignKey
*/ */
// DO NOT REMOVE, CALLED VIA REFLECTION ForeignKey foreignKey(Closure<?> c);
default ForeignKey foreignKey(Closure<?> c) {
return ConfigUtil.groovyDelegatorHelper(c, this::addNewForeignKey);
}


/** /**
* Creates and returns a new PrimaryKeyColumn. * Creates and returns a new PrimaryKeyColumn.
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/speedment/api/config/aspects/Parent.java
Expand Up @@ -18,7 +18,7 @@


import com.speedment.api.config.Node; import com.speedment.api.config.Node;
import com.speedment.api.annotation.Api; import com.speedment.api.annotation.Api;
import com.speedment.core.config.impl.ChildHolder; import com.speedment.core.config.ChildHolder;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Stream; import java.util.stream.Stream;


Expand Down
Expand Up @@ -19,7 +19,7 @@
import com.speedment.api.Speedment; import com.speedment.api.Speedment;
import com.speedment.api.annotation.Api; import com.speedment.api.annotation.Api;
import com.speedment.api.config.Dbms; import com.speedment.api.config.Dbms;
import com.speedment.core.db.DbmsHandler; import com.speedment.api.db.DbmsHandler;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;


Expand Down
Expand Up @@ -14,8 +14,9 @@
* License for the specific language governing permissions and limitations under * License for the specific language governing permissions and limitations under
* the License. * the License.
*/ */
package com.speedment.core.db; package com.speedment.api.db;


import com.speedment.api.annotation.Api;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.List; import java.util.List;
import java.util.function.Function; import java.util.function.Function;
Expand All @@ -26,6 +27,7 @@
* @author pemi * @author pemi
* @param <T> The type that the ResultSet shall be mapped to * @param <T> The type that the ResultSet shall be mapped to
*/ */
@Api(version = "2.1")
public interface AsynchronousQueryResult<T> extends AutoCloseable { public interface AsynchronousQueryResult<T> extends AutoCloseable {


Stream<T> stream(); Stream<T> stream();
Expand Down
Expand Up @@ -14,11 +14,11 @@
* License for the specific language governing permissions and limitations under * License for the specific language governing permissions and limitations under
* the License. * the License.
*/ */
package com.speedment.core.db; package com.speedment.api.db;


import com.speedment.api.annotation.Api;
import com.speedment.api.config.Dbms; import com.speedment.api.config.Dbms;
import com.speedment.api.config.Schema; import com.speedment.api.config.Schema;
import com.speedment.core.db.impl.SqlFunction;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Collections; import java.util.Collections;
Expand All @@ -34,6 +34,7 @@
* @author pemi * @author pemi
* @since 2.0 * @since 2.0
*/ */
@Api(version = "2.1")
public interface DbmsHandler { public interface DbmsHandler {


/** /**
Expand Down
Expand Up @@ -14,19 +14,21 @@
* License for the specific language governing permissions and limitations under * License for the specific language governing permissions and limitations under
* the License. * the License.
*/ */
package com.speedment.core.manager.metaresult; package com.speedment.api.db;


import com.speedment.api.annotation.Api;
import java.util.Optional; import java.util.Optional;


/** /**
* *
* @author pemi * @author pemi
* @param <ENTITY> the entity type * @param <ENTITY> the entity type
*/ */
@Api(version = "2.1")
public interface MetaResult<ENTITY> { public interface MetaResult<ENTITY> {


default Optional<SqlMetaResult<ENTITY>> getSqlMetaResult() { default Optional<? extends SqlMetaResult<ENTITY, ?>> getSqlMetaResult() {
return Optional.empty(); return Optional.empty();
} }


} }
Expand Up @@ -14,9 +14,10 @@
* License for the specific language governing permissions and limitations under * License for the specific language governing permissions and limitations under
* the License. * the License.
*/ */
package com.speedment.core.db.impl; package com.speedment.api.db;


import com.speedment.core.exception.SpeedmentException; import com.speedment.api.annotation.Api;
import com.speedment.api.exception.SpeedmentException;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Objects; import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;
Expand All @@ -27,6 +28,7 @@
* @param <T> Input type * @param <T> Input type
* @param <R> Result type * @param <R> Result type
*/ */
@Api(version = "2.1")
@FunctionalInterface @FunctionalInterface
public interface SqlFunction<T, R> { public interface SqlFunction<T, R> {


Expand Down Expand Up @@ -59,5 +61,4 @@ default <V> SqlFunction<T, V> andThen(SqlFunction<? super R, ? extends V> after)
static <T> SqlFunction<T, T> identity() { static <T> SqlFunction<T, T> identity() {
return (T t) -> t; return (T t) -> t;
} }

}
}

0 comments on commit 91bcab3

Please sign in to comment.