Repository: zest-java Updated Branches: refs/heads/develop bd6fbad9f -> 987eb0e60
Annotations#findAccessorAndTypeAnnotations now returns list to avoid reuse-of-stream trap Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/987eb0e6 Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/987eb0e6 Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/987eb0e6 Branch: refs/heads/develop Commit: 987eb0e6013585f6a13d7d92f234568b5c72dcf3 Parents: bd6fbad Author: Kent Sølvsten <[email protected]> Authored: Thu Aug 27 00:11:24 2015 +0200 Committer: Kent Sølvsten <[email protected]> Committed: Thu Aug 27 00:11:24 2015 +0200 ---------------------------------------------------------------------- .../org/apache/zest/api/util/Annotations.java | 16 ++-- .../bootstrap/CompositeAssemblyImpl.java | 81 +++++--------------- .../runtime/bootstrap/EntityAssemblyImpl.java | 63 ++++++--------- .../runtime/bootstrap/ValueAssemblyImpl.java | 54 ++++++------- 4 files changed, 75 insertions(+), 139 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zest-java/blob/987eb0e6/core/api/src/main/java/org/apache/zest/api/util/Annotations.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/apache/zest/api/util/Annotations.java b/core/api/src/main/java/org/apache/zest/api/util/Annotations.java old mode 100644 new mode 100755 index 529b358..f94fa56 --- a/core/api/src/main/java/org/apache/zest/api/util/Annotations.java +++ b/core/api/src/main/java/org/apache/zest/api/util/Annotations.java @@ -19,8 +19,11 @@ import java.lang.reflect.AccessibleObject; import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Type; import java.util.Arrays; +import java.util.List; import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collector; +import java.util.stream.Collectors; import java.util.stream.Stream; import static org.apache.zest.api.util.Classes.interfacesOf; @@ -55,13 +58,12 @@ public final class Annotations return annotationType.cast( Classes.RAW_CLASS.apply( type ).getAnnotation( annotationType ) ); } - public static Stream<Annotation> findAccessorAndTypeAnnotationsIn( AccessibleObject accessor ) - { - return Stream.concat( - Arrays.stream( accessor.getAnnotations() ), - interfacesOf( typeOf( accessor ) ).flatMap( ANNOTATIONS_OF ) + public static List<Annotation> findAccessorAndTypeAnnotationsIn(AccessibleObject accessor) { + Stream<Annotation> stream = Stream.concat( + Arrays.stream(accessor.getAnnotations()), + interfacesOf(typeOf(accessor)).flatMap(ANNOTATIONS_OF) ); -// return flatten( iterable( accessor.getAnnotations() ), -// flattenIterables( map( Annotations.ANNOTATIONS_OF, interfacesOf( typeOf( accessor ) ) ) ) ); + Collector<Annotation, ?, List<Annotation>> collector = Collectors.toList(); + return stream.collect(collector); } } http://git-wip-us.apache.org/repos/asf/zest-java/blob/987eb0e6/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/CompositeAssemblyImpl.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/CompositeAssemblyImpl.java b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/CompositeAssemblyImpl.java old mode 100644 new mode 100755 index 01c0d75..05c6f66 --- a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/CompositeAssemblyImpl.java +++ b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/CompositeAssemblyImpl.java @@ -18,30 +18,8 @@ */ package org.apache.zest.runtime.bootstrap; -import java.lang.annotation.Annotation; -import java.lang.reflect.AccessibleObject; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Member; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.lang.reflect.Proxy; -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.function.Consumer; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import org.apache.zest.api.common.MetaInfo; +import org.apache.zest.api.common.*; import org.apache.zest.api.common.Optional; -import org.apache.zest.api.common.QualifiedName; -import org.apache.zest.api.common.UseDefaults; -import org.apache.zest.api.common.Visibility; import org.apache.zest.api.composite.InvalidCompositeException; import org.apache.zest.api.concern.Concerns; import org.apache.zest.api.constraint.Constraint; @@ -63,40 +41,24 @@ import org.apache.zest.api.util.Classes; import org.apache.zest.api.util.Fields; import org.apache.zest.bootstrap.StateDeclarations; import org.apache.zest.functional.HierarchicalVisitorAdapter; -import org.apache.zest.runtime.composite.AbstractConstraintModel; -import org.apache.zest.runtime.composite.CompositeConstraintModel; -import org.apache.zest.runtime.composite.CompositeMethodModel; -import org.apache.zest.runtime.composite.CompositeMethodsModel; -import org.apache.zest.runtime.composite.ConcernModel; -import org.apache.zest.runtime.composite.ConcernsModel; -import org.apache.zest.runtime.composite.ConstraintModel; -import org.apache.zest.runtime.composite.ConstraintsModel; -import org.apache.zest.runtime.composite.Genericpredicate; -import org.apache.zest.runtime.composite.MixinModel; -import org.apache.zest.runtime.composite.MixinsModel; -import org.apache.zest.runtime.composite.SideEffectModel; -import org.apache.zest.runtime.composite.SideEffectsModel; -import org.apache.zest.runtime.composite.StateModel; -import org.apache.zest.runtime.composite.ValueConstraintsInstance; -import org.apache.zest.runtime.composite.ValueConstraintsModel; +import org.apache.zest.runtime.composite.*; import org.apache.zest.runtime.injection.Dependencies; import org.apache.zest.runtime.injection.DependencyModel; import org.apache.zest.runtime.property.PropertiesModel; import org.apache.zest.runtime.property.PropertyModel; +import java.lang.annotation.Annotation; +import java.lang.reflect.*; +import java.util.*; +import java.util.function.Consumer; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import java.util.stream.Stream; + import static java.util.stream.Stream.concat; -import static org.apache.zest.api.util.Annotations.hasAnnotation; -import static org.apache.zest.api.util.Annotations.isType; -import static org.apache.zest.api.util.Annotations.type; -import static org.apache.zest.api.util.Classes.classHierarchy; -import static org.apache.zest.api.util.Classes.interfacesOf; -import static org.apache.zest.api.util.Classes.isAssignableFrom; -import static org.apache.zest.api.util.Classes.typeOf; -import static org.apache.zest.api.util.Classes.typesOf; -import static org.apache.zest.api.util.Classes.wrapperClass; -import static org.apache.zest.functional.Iterables.filter; -import static org.apache.zest.functional.Iterables.first; -import static org.apache.zest.functional.Iterables.iterable; +import static org.apache.zest.api.util.Annotations.*; +import static org.apache.zest.api.util.Classes.*; +import static org.apache.zest.functional.Iterables.*; import static org.apache.zest.runtime.legacy.Specifications.translate; /** @@ -427,16 +389,15 @@ public abstract class CompositeAssemblyImpl List<Class<?>> constraintClasses ) { - Stream<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); - boolean optional = annotations.anyMatch( isType( Optional.class ) ); - annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); + List<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn(accessor); + boolean optional = annotations.stream().anyMatch(isType(Optional.class)); ValueConstraintsModel valueConstraintsModel = constraintsFor( - annotations, - GenericPropertyInfo.propertyTypeOf( accessor ), - ( (Member) accessor ).getName(), - optional, - constraintClasses, - accessor ); + annotations.stream(), + GenericPropertyInfo.propertyTypeOf(accessor), + ((Member) accessor).getName(), + optional, + constraintClasses, + accessor); ValueConstraintsInstance valueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) { http://git-wip-us.apache.org/repos/asf/zest-java/blob/987eb0e6/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/EntityAssemblyImpl.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/EntityAssemblyImpl.java b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/EntityAssemblyImpl.java old mode 100644 new mode 100755 index 473ab07..a9e92fa --- a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/EntityAssemblyImpl.java +++ b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/EntityAssemblyImpl.java @@ -18,37 +18,19 @@ */ package org.apache.zest.runtime.bootstrap; -import java.lang.annotation.Annotation; -import java.lang.reflect.AccessibleObject; -import java.lang.reflect.Member; -import java.util.List; -import java.util.stream.Stream; import org.apache.zest.api.association.Association; import org.apache.zest.api.association.GenericAssociationInfo; import org.apache.zest.api.association.ManyAssociation; import org.apache.zest.api.association.NamedAssociation; -import org.apache.zest.api.common.InvalidApplicationException; -import org.apache.zest.api.common.MetaInfo; -import org.apache.zest.api.common.Optional; -import org.apache.zest.api.common.QualifiedName; -import org.apache.zest.api.common.UseDefaults; +import org.apache.zest.api.common.*; import org.apache.zest.api.entity.EntityComposite; import org.apache.zest.api.property.GenericPropertyInfo; import org.apache.zest.api.property.Immutable; import org.apache.zest.api.property.Property; import org.apache.zest.api.util.Annotations; import org.apache.zest.api.util.Classes; -import org.apache.zest.bootstrap.AssociationDeclarations; -import org.apache.zest.bootstrap.EntityAssembly; -import org.apache.zest.bootstrap.ManyAssociationDeclarations; -import org.apache.zest.bootstrap.NamedAssociationDeclarations; -import org.apache.zest.bootstrap.StateDeclarations; -import org.apache.zest.runtime.association.AssociationModel; -import org.apache.zest.runtime.association.AssociationsModel; -import org.apache.zest.runtime.association.ManyAssociationModel; -import org.apache.zest.runtime.association.ManyAssociationsModel; -import org.apache.zest.runtime.association.NamedAssociationModel; -import org.apache.zest.runtime.association.NamedAssociationsModel; +import org.apache.zest.bootstrap.*; +import org.apache.zest.runtime.association.*; import org.apache.zest.runtime.composite.MixinsModel; import org.apache.zest.runtime.composite.StateModel; import org.apache.zest.runtime.composite.ValueConstraintsInstance; @@ -58,6 +40,11 @@ import org.apache.zest.runtime.entity.EntityModel; import org.apache.zest.runtime.entity.EntityStateModel; import org.apache.zest.runtime.property.PropertyModel; +import java.lang.annotation.Annotation; +import java.lang.reflect.AccessibleObject; +import java.lang.reflect.Member; +import java.util.List; + import static org.apache.zest.api.util.Annotations.isType; import static org.apache.zest.api.util.Classes.typeOf; @@ -163,10 +150,9 @@ public final class EntityAssemblyImpl List<Class<?>> constraintClasses ) { - Stream<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); - boolean optional = annotations.anyMatch( isType( Optional.class ) ); - annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); - ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericPropertyInfo.propertyTypeOf( accessor ), ( (Member) accessor ) + List<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn(accessor); + boolean optional = annotations.stream().anyMatch( isType( Optional.class ) ); + ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations.stream(), GenericPropertyInfo.propertyTypeOf( accessor ), ( (Member) accessor ) .getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance valueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) @@ -184,12 +170,11 @@ public final class EntityAssemblyImpl Iterable<Class<?>> constraintClasses ) { - Stream<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); - boolean optional = annotations.anyMatch( isType( Optional.class ) ); - annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); + List<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn(accessor); + boolean optional = annotations.stream().anyMatch(isType(Optional.class)); // Constraints for Association references - ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericAssociationInfo + ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations.stream(), GenericAssociationInfo .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance valueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) @@ -198,7 +183,7 @@ public final class EntityAssemblyImpl } // Constraints for the Association itself - valueConstraintsModel = constraintsFor( annotations, Association.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); + valueConstraintsModel = constraintsFor( annotations.stream(), Association.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance associationValueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) { @@ -213,12 +198,11 @@ public final class EntityAssemblyImpl List<Class<?>> constraintClasses ) { - Stream<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); - boolean optional = annotations.anyMatch( isType( Optional.class ) ); - annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); + List<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn(accessor); + boolean optional = annotations.stream().anyMatch(isType(Optional.class)); // Constraints for entities in ManyAssociation - ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericAssociationInfo + ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations.stream(), GenericAssociationInfo .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance valueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) @@ -227,7 +211,7 @@ public final class EntityAssemblyImpl } // Constraints for the ManyAssociation itself - valueConstraintsModel = constraintsFor( annotations, ManyAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); + valueConstraintsModel = constraintsFor( annotations.stream(), ManyAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance manyValueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) { @@ -241,12 +225,11 @@ public final class EntityAssemblyImpl List<Class<?>> constraintClasses ) { - Stream<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); - boolean optional = annotations.anyMatch( isType( Optional.class ) ); - annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); + List<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn(accessor); + boolean optional = annotations.stream().anyMatch( isType( Optional.class ) ); // Constraints for entities in NamedAssociation - ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericAssociationInfo + ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations.stream(), GenericAssociationInfo .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance valueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) @@ -255,7 +238,7 @@ public final class EntityAssemblyImpl } // Constraints for the NamedAssociation itself - valueConstraintsModel = constraintsFor( annotations, NamedAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); + valueConstraintsModel = constraintsFor( annotations.stream(), NamedAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance namedValueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) { http://git-wip-us.apache.org/repos/asf/zest-java/blob/987eb0e6/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ValueAssemblyImpl.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ValueAssemblyImpl.java b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ValueAssemblyImpl.java old mode 100644 new mode 100755 index 38e3b2c..80d692f --- a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ValueAssemblyImpl.java +++ b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ValueAssemblyImpl.java @@ -18,20 +18,11 @@ */ package org.apache.zest.runtime.bootstrap; -import java.lang.annotation.Annotation; -import java.lang.reflect.AccessibleObject; -import java.lang.reflect.Member; -import java.util.List; -import java.util.stream.Stream; import org.apache.zest.api.association.Association; import org.apache.zest.api.association.GenericAssociationInfo; import org.apache.zest.api.association.ManyAssociation; import org.apache.zest.api.association.NamedAssociation; -import org.apache.zest.api.common.InvalidApplicationException; -import org.apache.zest.api.common.MetaInfo; -import org.apache.zest.api.common.Optional; -import org.apache.zest.api.common.QualifiedName; -import org.apache.zest.api.common.UseDefaults; +import org.apache.zest.api.common.*; import org.apache.zest.api.property.GenericPropertyInfo; import org.apache.zest.api.property.Property; import org.apache.zest.api.util.Annotations; @@ -39,12 +30,7 @@ import org.apache.zest.api.util.Classes; import org.apache.zest.api.value.ValueComposite; import org.apache.zest.bootstrap.StateDeclarations; import org.apache.zest.bootstrap.ValueAssembly; -import org.apache.zest.runtime.association.AssociationModel; -import org.apache.zest.runtime.association.AssociationsModel; -import org.apache.zest.runtime.association.ManyAssociationModel; -import org.apache.zest.runtime.association.ManyAssociationsModel; -import org.apache.zest.runtime.association.NamedAssociationModel; -import org.apache.zest.runtime.association.NamedAssociationsModel; +import org.apache.zest.runtime.association.*; import org.apache.zest.runtime.composite.StateModel; import org.apache.zest.runtime.composite.ValueConstraintsInstance; import org.apache.zest.runtime.composite.ValueConstraintsModel; @@ -52,6 +38,11 @@ import org.apache.zest.runtime.property.PropertyModel; import org.apache.zest.runtime.value.ValueModel; import org.apache.zest.runtime.value.ValueStateModel; +import java.lang.annotation.Annotation; +import java.lang.reflect.AccessibleObject; +import java.lang.reflect.Member; +import java.util.List; + import static org.apache.zest.api.util.Annotations.isType; import static org.apache.zest.api.util.Classes.typeOf; @@ -143,10 +134,9 @@ public final class ValueAssemblyImpl List<Class<?>> constraintClasses ) { - Stream<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); - boolean optional = annotations.anyMatch( isType( Optional.class ) ); - annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); - ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericPropertyInfo.propertyTypeOf( accessor ), ( (Member) accessor ) + List<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn(accessor); + boolean optional = annotations.stream().anyMatch( isType( Optional.class ) ); + ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations.stream(), GenericPropertyInfo.propertyTypeOf( accessor ), ( (Member) accessor ) .getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance valueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) @@ -163,11 +153,11 @@ public final class ValueAssemblyImpl List<Class<?>> constraintClasses ) { - Stream<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); - boolean optional = annotations.anyMatch( isType( Optional.class ) ); + List<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn(accessor); + boolean optional = annotations.stream().anyMatch( isType( Optional.class ) ); // Constraints for Association references - ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericAssociationInfo + ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations.stream(), GenericAssociationInfo .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance valueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) @@ -176,7 +166,7 @@ public final class ValueAssemblyImpl } // Constraints for the Association itself - valueConstraintsModel = constraintsFor( annotations, Association.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); + valueConstraintsModel = constraintsFor( annotations.stream(), Association.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance associationValueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) { @@ -191,11 +181,11 @@ public final class ValueAssemblyImpl List<Class<?>> constraintClasses ) { - Stream<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); - boolean optional = annotations.anyMatch( isType( Optional.class ) ); + List<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn(accessor); + boolean optional = annotations.stream().anyMatch( isType( Optional.class ) ); // Constraints for entities in ManyAssociation - ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericAssociationInfo + ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations.stream(), GenericAssociationInfo .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance valueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) @@ -204,7 +194,7 @@ public final class ValueAssemblyImpl } // Constraints for the ManyAssociation itself - valueConstraintsModel = constraintsFor( annotations, ManyAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); + valueConstraintsModel = constraintsFor( annotations.stream(), ManyAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance manyValueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) { @@ -218,11 +208,11 @@ public final class ValueAssemblyImpl List<Class<?>> constraintClasses ) { - Stream<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor ); - boolean optional = annotations.anyMatch( isType( Optional.class ) ); + List<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn(accessor); + boolean optional = annotations.stream().anyMatch( isType( Optional.class ) ); // Constraints for entities in NamedAssociation - ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericAssociationInfo + ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations.stream(), GenericAssociationInfo .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance valueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) @@ -231,7 +221,7 @@ public final class ValueAssemblyImpl } // Constraints for the NamedAssociation itself - valueConstraintsModel = constraintsFor( annotations, NamedAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); + valueConstraintsModel = constraintsFor( annotations.stream(), NamedAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor ); ValueConstraintsInstance namedValueConstraintsInstance = null; if( valueConstraintsModel.isConstrained() ) {
