You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2017/06/11 06:39:48 UTC
[1/4] polygene-java git commit: Better error message for missing
return types need to be public classes or interfaces
Repository: polygene-java
Updated Branches:
refs/heads/es-jooq 59a086292 -> 80a19d7bf
Better error message for missing return types need to be public classes or interfaces
Signed-off-by: niclas <ni...@hedhman.org>
(cherry picked from commit 0f58a7d)
Signed-off-by: niclas <ni...@hedhman.org>
Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/49ead2fd
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/49ead2fd
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/49ead2fd
Branch: refs/heads/es-jooq
Commit: 49ead2fd82cd1ee4bd731c0ff7e140f23639a0b3
Parents: 4f15279
Author: niclas <ni...@hedhman.org>
Authored: Fri Jun 9 12:37:41 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Fri Jun 9 12:39:36 2017 +0800
----------------------------------------------------------------------
.../runtime/composite/ConstructorModel.java | 5 +++--
.../composite/TypedModifierInvocationHandler.java | 17 ++++++++++++++++-
2 files changed, 19 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/49ead2fd/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ConstructorModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ConstructorModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ConstructorModel.java
index 427cff0..026a4e1 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ConstructorModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/ConstructorModel.java
@@ -27,13 +27,14 @@ import java.util.stream.Stream;
import org.apache.polygene.api.common.ConstructionException;
import org.apache.polygene.api.composite.ConstructorDescriptor;
import org.apache.polygene.api.composite.InvalidCompositeException;
-import org.apache.polygene.api.util.AccessibleObjects;
import org.apache.polygene.api.util.HierarchicalVisitor;
import org.apache.polygene.api.util.VisitableHierarchy;
import org.apache.polygene.runtime.injection.DependencyModel;
import org.apache.polygene.runtime.injection.InjectedParametersModel;
import org.apache.polygene.runtime.injection.InjectionContext;
+import static org.apache.polygene.api.util.AccessibleObjects.accessible;
+
/**
* JAVADOC
*/
@@ -46,7 +47,7 @@ public final class ConstructorModel
public ConstructorModel( Constructor<?> constructor, InjectedParametersModel parameters )
{
- this.constructor = AccessibleObjects.accessible( constructor );
+ this.constructor = accessible( constructor );
this.parameters = parameters;
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/49ead2fd/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TypedModifierInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TypedModifierInvocationHandler.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TypedModifierInvocationHandler.java
index 7d96abf..bf750e9 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TypedModifierInvocationHandler.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TypedModifierInvocationHandler.java
@@ -21,6 +21,7 @@ package org.apache.polygene.runtime.composite;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
/**
* JAVADOC
@@ -38,7 +39,21 @@ public final class TypedModifierInvocationHandler
}
catch( InvocationTargetException e )
{
- throw cleanStackTrace( e.getTargetException(), proxy, method );
+ Throwable targetException = e.getTargetException();
+ if( targetException instanceof IllegalAccessError )
+ {
+ // We get here if any of the return types or parameters are not public. This is probably due to
+ // the _Stub class ends up in a different classpace than the original mixin. We intend to fix this in
+ // 3.1 or 3.2
+ if( !Modifier.isPublic( method.getReturnType().getModifiers() ) )
+ {
+ String message = "Return types must be public: " + method.getReturnType().getName();
+ IllegalAccessException illegalAccessException = new IllegalAccessException( message );
+ illegalAccessException.initCause( e.getTargetException() );
+ throw cleanStackTrace( illegalAccessException, proxy, method );
+ }
+ }
+ throw cleanStackTrace( targetException, proxy, method );
}
catch( Throwable e )
{
[4/4] polygene-java git commit: Fixed the Association testcase
failure.
Posted by ni...@apache.org.
Fixed the Association testcase failure.
Signed-off-by: niclas <ni...@hedhman.org>
Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/80a19d7b
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/80a19d7b
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/80a19d7b
Branch: refs/heads/es-jooq
Commit: 80a19d7bf25de27eb5e357c85c92a9d230ec1dda
Parents: 572883f
Author: niclas <ni...@hedhman.org>
Authored: Sun Jun 11 14:39:35 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jun 11 14:39:35 2017 +0800
----------------------------------------------------------------------
extensions/entitystore-jooq/dev-status.xml | 2 +-
.../entitystore/jooq/JooqEntityStoreMixin.java | 1 +
.../polygene/entitystore/jooq/MixinTable.java | 91 +++++++-------------
3 files changed, 35 insertions(+), 59 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/80a19d7b/extensions/entitystore-jooq/dev-status.xml
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jooq/dev-status.xml b/extensions/entitystore-jooq/dev-status.xml
index 6710bdd..b6d4c31 100644
--- a/extensions/entitystore-jooq/dev-status.xml
+++ b/extensions/entitystore-jooq/dev-status.xml
@@ -27,7 +27,7 @@
<codebase>early</codebase>
<!-- none, brief, good, complete -->
- <documentation>none</documentation>
+ <documentation>brief</documentation>
<!-- none, some, good, complete -->
<unittests>good</unittests>
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/80a19d7b/extensions/entitystore-jooq/src/main/java/org/apache/polygene/entitystore/jooq/JooqEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jooq/src/main/java/org/apache/polygene/entitystore/jooq/JooqEntityStoreMixin.java b/extensions/entitystore-jooq/src/main/java/org/apache/polygene/entitystore/jooq/JooqEntityStoreMixin.java
index 5a062d8..1daa78b 100644
--- a/extensions/entitystore-jooq/src/main/java/org/apache/polygene/entitystore/jooq/JooqEntityStoreMixin.java
+++ b/extensions/entitystore-jooq/src/main/java/org/apache/polygene/entitystore/jooq/JooqEntityStoreMixin.java
@@ -85,6 +85,7 @@ public class JooqEntityStoreMixin
{
AssociationStateDescriptor stateDescriptor = baseEntity.type.state();
Map<QualifiedName, Object> properties = new HashMap<>();
+ properties.put( HasIdentity.IDENTITY_STATE_NAME, baseEntity.identity );
stateDescriptor.properties()
.filter( prop -> !HasIdentity.IDENTITY_STATE_NAME.equals( prop.qualifiedName() ) )
.forEach( prop ->
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/80a19d7b/extensions/entitystore-jooq/src/main/java/org/apache/polygene/entitystore/jooq/MixinTable.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jooq/src/main/java/org/apache/polygene/entitystore/jooq/MixinTable.java b/extensions/entitystore-jooq/src/main/java/org/apache/polygene/entitystore/jooq/MixinTable.java
index 257134e..c7b219b 100644
--- a/extensions/entitystore-jooq/src/main/java/org/apache/polygene/entitystore/jooq/MixinTable.java
+++ b/extensions/entitystore-jooq/src/main/java/org/apache/polygene/entitystore/jooq/MixinTable.java
@@ -25,7 +25,6 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.function.Consumer;
import org.apache.polygene.api.association.AssociationDescriptor;
import org.apache.polygene.api.common.QualifiedName;
import org.apache.polygene.api.entity.EntityDescriptor;
@@ -95,7 +94,7 @@ class MixinTable
descriptor.valueType().namedAssociations()
.filter( this::isThisMixin )
- .forEach( assocDescriptor -> manyAssociations.add( assocDescriptor.qualifiedName() ) );
+ .forEach( assocDescriptor -> namedAssociations.add( assocDescriptor.qualifiedName() ) );
}
void insertMixinState( DefaultEntityState state, String valueIdentity )
@@ -127,21 +126,47 @@ class MixinTable
private void insertManyAndNamedAssociations( DefaultEntityState state, String valueIdentity )
{
- InsertSetStep<Record> assocsTable = dsl.insertInto( mixinAssocsTable );
manyAssociations.forEach( assocName ->
{
+ InsertSetStep<Record> assocsTable = dsl.insertInto( mixinAssocsTable );
ManyAssociationState entityReferences = state.manyAssociationValueOf( assocName );
- entityReferences.stream().forEach( setManyAssociation( assocName, valueIdentity, assocsTable ) );
+ int endCount = entityReferences.count();
+ int counter = 0;
+ for( EntityReference ref : entityReferences )
+ {
+ InsertSetMoreStep<Record> set = assocsTable.set( identityColumn, valueIdentity )
+ .set( nameColumn, assocName.name() )
+ .set( indexColumn, "" + counter++ )
+ .set( referenceColumn, ref == null ? null : ref.identity().toString() );
+ if( ++counter < endCount )
+ {
+ set.newRecord();
+ }
+ }
+ InsertSetMoreStep<Record> assocs = assocsTable.set( Collections.emptyMap() );
+ assocs.execute();
} );
namedAssociations.forEach( assocName ->
{
+ InsertSetStep<Record> assocsTable = dsl.insertInto( mixinAssocsTable );
NamedAssociationState entityReferences = state.namedAssociationValueOf( assocName );
- entityReferences.stream().forEach( setNamedAssociation( assocName, valueIdentity, assocsTable ) );
+ int count = entityReferences.count();
+ for( String name : entityReferences )
+ {
+ EntityReference ref = entityReferences.get( name );
+ InsertSetMoreStep<Record> set = assocsTable.set( identityColumn, valueIdentity )
+ .set( nameColumn, assocName.name() )
+ .set( indexColumn, name )
+ .set( referenceColumn, ref.identity().toString() );
+ if( --count > 0 )
+ {
+ set.newRecord();
+ }
+ }
+ InsertSetMoreStep<Record> assocs = assocsTable.set( Collections.emptyMap() );
+ assocs.execute();
} );
-
- InsertSetMoreStep<Record> assocs = assocsTable.set( Collections.emptyMap() );
- assocs.execute();
}
Table<Record> associationsTable()
@@ -149,56 +174,6 @@ class MixinTable
return mixinAssocsTable;
}
- /**
- * Writes one ManyAssoc Reference to the _ASSOCS table.
- * <ul>
- * <li>identityColumn - valueIdentity of primaryTable row</li>
- * <li>nameColumn - index in the of association in state holder</li>
- * <li>indexColumn - the position within the many association, starting at 0</li>
- * <li>referenceColumn - referenced entity's identity</li>
- * </ul>
- */
- private Consumer<? super EntityReference> setManyAssociation( QualifiedName assocName,
- String valueIdentity,
- InsertSetStep<Record> assocsTable )
- {
- return new Consumer<EntityReference>()
- {
- private int counter = 0;
-
- @Override
- public void accept( EntityReference ref )
- {
- InsertSetMoreStep<Record> set = assocsTable.set( identityColumn, valueIdentity )
- .set( nameColumn, assocName.name() )
- .set( indexColumn, "" + counter++ )
- .set( referenceColumn, ref == null ? null : ref.identity().toString() );
- }
- };
- }
-
- /**
- * Writes one Named Reference to the _ASSOCS table.
- * <ul>
- * <li>identityColumn - valueIdentity of primaryTable row</li>
- * <li>nameColumn - name of association in state holder</li>
- * <li>indexColumn - the key/lookup name of the reference</li>
- * <li>referenceColumn - referenced entity's identity</li>
- * </ul>
- */
- private Consumer<? super Map.Entry<String, EntityReference>> setNamedAssociation( QualifiedName assocName,
- String valueIdentity,
- InsertSetStep<Record> assocsTable )
- {
- return ref ->
- {
- InsertSetMoreStep<Record> set = assocsTable.set( identityColumn, valueIdentity )
- .set( nameColumn, assocName.name() )
- .set( indexColumn, ref.getKey() )
- .set( referenceColumn, ref.getValue().identity().toString() );
- };
- }
-
private boolean isThisMixin( PropertyDescriptor descriptor )
{
Class<?> declaringClass = declaredIn( descriptor );
[2/4] polygene-java git commit: Added hasProperty, hasAssociation,
hasManyAssociation, hasNamedAssociation query methods in StateDescriptor & co.
Posted by ni...@apache.org.
Added hasProperty, hasAssociation, hasManyAssociation, hasNamedAssociation query methods in StateDescriptor & co.
Signed-off-by: niclas <ni...@hedhman.org>
(cherry picked from commit ffd7207)
Signed-off-by: niclas <ni...@hedhman.org>
Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/0a0c6e49
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/0a0c6e49
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/0a0c6e49
Branch: refs/heads/es-jooq
Commit: 0a0c6e490a27a10933ddb46fb635d0d29feda3d8
Parents: 49ead2f
Author: niclas <ni...@hedhman.org>
Authored: Sun Jun 11 11:30:21 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jun 11 11:44:26 2017 +0800
----------------------------------------------------------------------
.../association/AssociationStateDescriptor.java | 6 +++++
.../polygene/api/common/QualifiedName.java | 2 --
.../polygene/api/composite/PropertyMapper.java | 2 +-
.../polygene/api/composite/StateDescriptor.java | 2 ++
.../polygene/api/entity/EntityReference.java | 13 +++++++++-
.../runtime/association/AssociationsModel.java | 16 ++++++++-----
.../association/ManyAssociationsModel.java | 16 +++++++++----
.../association/NamedAssociationsModel.java | 21 +++++++++-------
.../polygene/runtime/composite/StateModel.java | 6 +++++
.../runtime/entity/EntityStateModel.java | 21 ++++++++++++++--
.../runtime/property/PropertiesModel.java | 18 ++++++++------
.../polygene/runtime/value/ValueStateModel.java | 18 ++++++++++++++
.../skeletons/SQLCompatEntityStateWrapper.java | 25 +++++++++++++++++++-
13 files changed, 133 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/api/src/main/java/org/apache/polygene/api/association/AssociationStateDescriptor.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/association/AssociationStateDescriptor.java b/core/api/src/main/java/org/apache/polygene/api/association/AssociationStateDescriptor.java
index dbee470..2c11b63 100644
--- a/core/api/src/main/java/org/apache/polygene/api/association/AssociationStateDescriptor.java
+++ b/core/api/src/main/java/org/apache/polygene/api/association/AssociationStateDescriptor.java
@@ -34,18 +34,24 @@ public interface AssociationStateDescriptor extends StateDescriptor
AssociationDescriptor getAssociationByQualifiedName( QualifiedName name )
throws IllegalArgumentException;
+ boolean hasAssociation( QualifiedName name );
+
AssociationDescriptor getManyAssociationByName( String name )
throws IllegalArgumentException;
AssociationDescriptor getManyAssociationByQualifiedName( QualifiedName name )
throws IllegalArgumentException;
+ boolean hasManyAssociation( QualifiedName name );
+
AssociationDescriptor getNamedAssociationByName( String name )
throws IllegalArgumentException;
AssociationDescriptor getNamedAssociationByQualifiedName( QualifiedName name )
throws IllegalArgumentException;
+ boolean hasNamedAssociation( QualifiedName name );
+
Stream<? extends AssociationDescriptor> associations();
Stream<? extends AssociationDescriptor> manyAssociations();
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/api/src/main/java/org/apache/polygene/api/common/QualifiedName.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/common/QualifiedName.java b/core/api/src/main/java/org/apache/polygene/api/common/QualifiedName.java
index 36bf86a..657b6de 100644
--- a/core/api/src/main/java/org/apache/polygene/api/common/QualifiedName.java
+++ b/core/api/src/main/java/org/apache/polygene/api/common/QualifiedName.java
@@ -238,9 +238,7 @@ public final class QualifiedName
{
return false;
}
-
QualifiedName that = (QualifiedName) o;
-
return name.equals( that.name ) && typeName.equals( that.typeName );
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/api/src/main/java/org/apache/polygene/api/composite/PropertyMapper.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/composite/PropertyMapper.java b/core/api/src/main/java/org/apache/polygene/api/composite/PropertyMapper.java
index 59e1f67..c4e13f3 100644
--- a/core/api/src/main/java/org/apache/polygene/api/composite/PropertyMapper.java
+++ b/core/api/src/main/java/org/apache/polygene/api/composite/PropertyMapper.java
@@ -236,7 +236,7 @@ public final class PropertyMapper
{
return new Properties()
{
- private static final long serialVersionUID = 3550125427530538865L;
+ private static final long serialVersionUID = 1L;
@Override
public Object get( Object o )
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/api/src/main/java/org/apache/polygene/api/composite/StateDescriptor.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/composite/StateDescriptor.java b/core/api/src/main/java/org/apache/polygene/api/composite/StateDescriptor.java
index 20c07c2..8bf4738 100644
--- a/core/api/src/main/java/org/apache/polygene/api/composite/StateDescriptor.java
+++ b/core/api/src/main/java/org/apache/polygene/api/composite/StateDescriptor.java
@@ -35,5 +35,7 @@ public interface StateDescriptor
PropertyDescriptor findPropertyModelByQualifiedName( QualifiedName name )
throws IllegalArgumentException;
+ boolean hasProperty( QualifiedName name );
+
Stream<? extends PropertyDescriptor> properties();
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java b/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
index 98d1003..3bc557e 100644
--- a/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
+++ b/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
@@ -21,6 +21,7 @@
package org.apache.polygene.api.entity;
import java.util.Objects;
+import org.apache.polygene.api.identity.HasIdentity;
import org.apache.polygene.api.identity.Identity;
import org.apache.polygene.api.identity.StringIdentity;
@@ -39,6 +40,7 @@ public final class EntityReference
*/
public static EntityReference parseEntityReference(String identityString)
{
+ Objects.requireNonNull( identityString, "identityString must not be null" );
return new EntityReference( new StringIdentity( identityString ) );
}
@@ -48,7 +50,16 @@ public final class EntityReference
*/
public static EntityReference entityReferenceFor(Object object)
{
- return new EntityReference(((EntityComposite) object).identity().get());
+ Objects.requireNonNull( object );
+ if( object instanceof Identity )
+ {
+ return new EntityReference( ((Identity) object) );
+ }
+ if( object instanceof HasIdentity )
+ {
+ return new EntityReference( ((HasIdentity) object).identity().get() );
+ }
+ throw new IllegalArgumentException( "Can not get an entity reference for " + object.getClass() );
}
public static EntityReference create(Identity identity)
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/runtime/src/main/java/org/apache/polygene/runtime/association/AssociationsModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/association/AssociationsModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/association/AssociationsModel.java
index a9a53a0..e47adcc 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/association/AssociationsModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/association/AssociationsModel.java
@@ -38,6 +38,7 @@ public final class AssociationsModel
implements VisitableHierarchy<AssociationsModel, AssociationModel>
{
private final Map<AccessibleObject, AssociationModel> mapAccessorAssociationModel = new LinkedHashMap<>();
+ private final Map<QualifiedName, AssociationModel> mapNameAssociationModel = new LinkedHashMap<>();
public AssociationsModel()
{
@@ -51,6 +52,7 @@ public final class AssociationsModel
public void addAssociation( AssociationModel associationModel )
{
mapAccessorAssociationModel.put( associationModel.accessor(), associationModel );
+ mapNameAssociationModel.put( associationModel.qualifiedName(), associationModel );
}
@Override
@@ -97,16 +99,19 @@ public final class AssociationsModel
public AssociationDescriptor getAssociationByQualifiedName( QualifiedName name )
throws IllegalArgumentException
{
- for( AssociationModel associationModel : mapAccessorAssociationModel.values() )
+ AssociationModel associationModel = mapNameAssociationModel.get( name );
+ if( associationModel != null )
{
- if( associationModel.qualifiedName().equals( name ) )
- {
- return associationModel;
- }
+ return associationModel;
}
throw new IllegalArgumentException( "No association found with qualified name:" + name );
}
+ public boolean hasAssociation( QualifiedName name )
+ {
+ return mapNameAssociationModel.containsKey( name );
+ }
+
public void checkConstraints( AssociationStateHolder state )
{
for( AssociationModel associationModel : mapAccessorAssociationModel.values() )
@@ -116,5 +121,4 @@ public final class AssociationsModel
associationModel.checkConstraints( association.get() );
}
}
-
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/runtime/src/main/java/org/apache/polygene/runtime/association/ManyAssociationsModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/association/ManyAssociationsModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/association/ManyAssociationsModel.java
index 8765f42..96c51b2 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/association/ManyAssociationsModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/association/ManyAssociationsModel.java
@@ -40,6 +40,7 @@ public final class ManyAssociationsModel
implements VisitableHierarchy<ManyAssociationsModel, ManyAssociationModel>
{
private final Map<AccessibleObject, ManyAssociationModel> mapAccessorAssociationModel = new LinkedHashMap<>();
+ private final Map<QualifiedName, ManyAssociationModel> mapNameAssociationModel = new LinkedHashMap<>();
public ManyAssociationsModel()
{
@@ -53,6 +54,7 @@ public final class ManyAssociationsModel
public void addManyAssociation( ManyAssociationModel model )
{
mapAccessorAssociationModel.put( model.accessor(), model );
+ mapNameAssociationModel.put( model.qualifiedName(), model );
}
@Override
@@ -106,16 +108,20 @@ public final class ManyAssociationsModel
public AssociationDescriptor getManyAssociationByQualifiedName( QualifiedName name )
throws IllegalArgumentException
{
- for( ManyAssociationModel associationModel : mapAccessorAssociationModel.values() )
+
+ ManyAssociationModel associationModel = mapNameAssociationModel.get( name );
+ if( associationModel != null )
{
- if( associationModel.qualifiedName().equals( name ) )
- {
- return associationModel;
- }
+ return associationModel;
}
throw new IllegalArgumentException( "No many-association found with qualified name:" + name );
}
+ public boolean hasAssociation( QualifiedName name )
+ {
+ return mapNameAssociationModel.containsKey( name );
+ }
+
public void checkConstraints( ValueStateInstance state )
{
for( ManyAssociationModel manyAssociationModel : mapAccessorAssociationModel.values() )
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/runtime/src/main/java/org/apache/polygene/runtime/association/NamedAssociationsModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/association/NamedAssociationsModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/association/NamedAssociationsModel.java
index 9007abf..c21b3d6 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/association/NamedAssociationsModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/association/NamedAssociationsModel.java
@@ -40,6 +40,7 @@ public final class NamedAssociationsModel
implements VisitableHierarchy<NamedAssociationsModel, NamedAssociationModel>
{
private final Map<AccessibleObject, NamedAssociationModel> mapAccessorAssociationModel = new LinkedHashMap<>();
+ private final Map<QualifiedName, NamedAssociationModel> mapNameAssociationModel = new LinkedHashMap<>();
public NamedAssociationsModel()
{
@@ -53,6 +54,7 @@ public final class NamedAssociationsModel
public void addNamedAssociation( NamedAssociationModel model )
{
mapAccessorAssociationModel.put( model.accessor(), model );
+ mapNameAssociationModel.put( model.qualifiedName(), model );
}
@Override
@@ -83,11 +85,11 @@ public final class NamedAssociationsModel
throws IllegalArgumentException
{
NamedAssociationModel namedAssociationModel = mapAccessorAssociationModel.get( accessor );
- if( namedAssociationModel == null )
+ if( namedAssociationModel != null )
{
- throw new IllegalArgumentException( "No named-association found with name:" + ( (Member) accessor ).getName() );
+ return namedAssociationModel;
}
- return namedAssociationModel;
+ throw new IllegalArgumentException( "No named-association found with name:" + ( (Member) accessor ).getName() );
}
public AssociationDescriptor getNamedAssociationByName( String name )
@@ -106,16 +108,19 @@ public final class NamedAssociationsModel
public AssociationDescriptor getNamedAssociationByQualifiedName( QualifiedName name )
throws IllegalArgumentException
{
- for( NamedAssociationModel associationModel : mapAccessorAssociationModel.values() )
+ NamedAssociationModel associationModel = mapNameAssociationModel.get( name );
+ if( associationModel != null )
{
- if( associationModel.qualifiedName().equals( name ) )
- {
- return associationModel;
- }
+ return associationModel;
}
throw new IllegalArgumentException( "No named-association found with qualified name:" + name );
}
+ public boolean hasAssociation( QualifiedName name )
+ {
+ return mapNameAssociationModel.containsKey( name );
+ }
+
public void checkConstraints( ValueStateInstance state )
{
for( NamedAssociationModel associationModel : mapAccessorAssociationModel.values() )
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/runtime/src/main/java/org/apache/polygene/runtime/composite/StateModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/StateModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/StateModel.java
index 9995d1b..e330d6b 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/StateModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/StateModel.java
@@ -67,6 +67,12 @@ public class StateModel
}
@Override
+ public boolean hasProperty( QualifiedName name )
+ {
+ return propertiesModel.hasProperty( name );
+ }
+
+ @Override
public <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super Object, ? super Object, ThrowableType> visitor )
throws ThrowableType
{
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityStateModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityStateModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityStateModel.java
index 7601b4e..7ed42e4 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityStateModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityStateModel.java
@@ -38,8 +38,7 @@ import org.apache.polygene.runtime.property.PropertiesModel;
/**
* Model for EntityComposite state.
*/
-public final class EntityStateModel
- extends StateModel
+public final class EntityStateModel extends StateModel
implements AssociationStateDescriptor
{
private final AssociationsModel associationsModel;
@@ -77,6 +76,12 @@ public final class EntityStateModel
return associationsModel.getAssociationByQualifiedName( name );
}
+ @Override
+ public boolean hasAssociation( QualifiedName name )
+ {
+ return associationsModel.hasAssociation( name );
+ }
+
public ManyAssociationModel getManyAssociation( AccessibleObject accessor )
throws IllegalArgumentException
{
@@ -97,6 +102,12 @@ public final class EntityStateModel
return manyAssociationsModel.getManyAssociationByQualifiedName( name );
}
+ @Override
+ public boolean hasManyAssociation( QualifiedName name )
+ {
+ return manyAssociationsModel.hasAssociation( name );
+ }
+
public NamedAssociationModel getNamedAssociation( AccessibleObject accessor )
throws IllegalArgumentException
{
@@ -118,6 +129,12 @@ public final class EntityStateModel
}
@Override
+ public boolean hasNamedAssociation( QualifiedName name )
+ {
+ return namedAssociationsModel.hasAssociation( name );
+ }
+
+ @Override
public Stream<AssociationModel> associations()
{
return associationsModel.associations();
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertiesModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertiesModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertiesModel.java
index cfcfcb5..ef1f831 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertiesModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertiesModel.java
@@ -34,7 +34,8 @@ import org.apache.polygene.api.util.VisitableHierarchy;
public class PropertiesModel
implements VisitableHierarchy<Object, Object>
{
- protected final Map<AccessibleObject, PropertyModel> mapAccessiblePropertyModel = new LinkedHashMap<>();
+ private final Map<AccessibleObject, PropertyModel> mapAccessiblePropertyModel = new LinkedHashMap<>();
+ private final Map<QualifiedName, PropertyModel> mapNamePropertyModel = new LinkedHashMap<>();
public PropertiesModel()
{
@@ -43,6 +44,7 @@ public class PropertiesModel
public void addProperty( PropertyModel property )
{
mapAccessiblePropertyModel.put( property.accessor(), property );
+ mapNamePropertyModel.put( property.qualifiedName(), property );
}
@Override
@@ -75,7 +77,6 @@ public class PropertiesModel
{
throw new IllegalArgumentException( "No property found with name: " + ( (Member) accessor ).getName() );
}
-
return propertyModel;
}
@@ -95,13 +96,16 @@ public class PropertiesModel
public PropertyModel getPropertyByQualifiedName( QualifiedName name )
throws IllegalArgumentException
{
- for( PropertyModel propertyModel : mapAccessiblePropertyModel.values() )
+ PropertyModel propertyModel = mapNamePropertyModel.get( name );
+ if( propertyModel != null )
{
- if( propertyModel.qualifiedName().equals( name ) )
- {
- return propertyModel;
- }
+ return propertyModel;
}
throw new IllegalArgumentException( "No property found with qualified name: " + name );
}
+
+ public boolean hasProperty( QualifiedName name )
+ {
+ return mapNamePropertyModel.containsKey( name );
+ }
}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueStateModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueStateModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueStateModel.java
index 73c6a17..f8ef350 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueStateModel.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueStateModel.java
@@ -70,6 +70,12 @@ public final class ValueStateModel
}
@Override
+ public boolean hasAssociation( QualifiedName name )
+ {
+ return associationsModel.hasAssociation( name );
+ }
+
+ @Override
public AssociationDescriptor getManyAssociationByName( String name )
{
return manyAssociationsModel.getManyAssociationByName( name );
@@ -82,6 +88,12 @@ public final class ValueStateModel
}
@Override
+ public boolean hasManyAssociation( QualifiedName name )
+ {
+ return manyAssociationsModel.hasAssociation( name );
+ }
+
+ @Override
public AssociationDescriptor getNamedAssociationByName( String name )
{
return namedAssociationsModel.getNamedAssociationByName( name );
@@ -94,6 +106,12 @@ public final class ValueStateModel
}
@Override
+ public boolean hasNamedAssociation( QualifiedName name )
+ {
+ return namedAssociationsModel.hasAssociation( name );
+ }
+
+ @Override
public Stream<AssociationModel> associations()
{
return associationsModel.associations();
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0a0c6e49/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SQLCompatEntityStateWrapper.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SQLCompatEntityStateWrapper.java b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SQLCompatEntityStateWrapper.java
index bf665c6..4b1d9a2 100644
--- a/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SQLCompatEntityStateWrapper.java
+++ b/extensions/indexing-sql/src/main/java/org/apache/polygene/index/sql/support/skeletons/SQLCompatEntityStateWrapper.java
@@ -34,7 +34,6 @@ import org.apache.polygene.api.property.PropertyDescriptor;
import org.apache.polygene.api.structure.ModuleDescriptor;
import org.apache.polygene.api.type.CollectionType;
import org.apache.polygene.api.type.EntityCompositeType;
-import org.apache.polygene.api.type.ValueCompositeType;
import org.apache.polygene.api.type.ValueType;
import org.apache.polygene.api.value.ValueComposite;
import org.apache.polygene.spi.entity.EntityState;
@@ -307,6 +306,12 @@ class SQLCompatEntityStateWrapper
}
@Override
+ public boolean hasAssociation( QualifiedName name )
+ {
+ return wrappedAssociationStateDescriptor.hasAssociation( name );
+ }
+
+ @Override
public AssociationDescriptor getManyAssociationByName( String name )
throws IllegalArgumentException
{
@@ -321,6 +326,12 @@ class SQLCompatEntityStateWrapper
}
@Override
+ public boolean hasManyAssociation( QualifiedName name )
+ {
+ return false;
+ }
+
+ @Override
public AssociationDescriptor getNamedAssociationByName( String name )
throws IllegalArgumentException
{
@@ -335,6 +346,12 @@ class SQLCompatEntityStateWrapper
}
@Override
+ public boolean hasNamedAssociation( QualifiedName name )
+ {
+ return false;
+ }
+
+ @Override
public Stream<? extends AssociationDescriptor> associations()
{
return wrappedAssociationStateDescriptor.associations();
@@ -367,6 +384,12 @@ class SQLCompatEntityStateWrapper
}
@Override
+ public boolean hasProperty( QualifiedName name )
+ {
+ return wrappedAssociationStateDescriptor.hasProperty( name );
+ }
+
+ @Override
public Stream<? extends PropertyDescriptor> properties()
{
return wrappedAssociationStateDescriptor.properties().filter( PROPERTY_SPEC );
[3/4] polygene-java git commit: Merge branch 'develop' into es-jooq
Posted by ni...@apache.org.
Merge branch 'develop' into es-jooq
Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/572883f1
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/572883f1
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/572883f1
Branch: refs/heads/es-jooq
Commit: 572883f166e84f748722ecb0b079480b27b75127
Parents: 59a0862 0a0c6e4
Author: niclas <ni...@hedhman.org>
Authored: Sun Jun 11 13:14:15 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Sun Jun 11 13:14:15 2017 +0800
----------------------------------------------------------------------
----------------------------------------------------------------------