You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@polygene.apache.org by Niclas Hedhman <ni...@hedhman.org> on 2015/08/27 02:51:49 UTC

Re: zest-java git commit: Annotations#findAccessorAndTypeAnnotations now returns list to avoid reuse-of-stream trap

Kent, please change your IDE settings so that;

Full import list is always used, and not
import java.util.*;

And that the imports are fully alphabetical, i.e. no special treatment of
java.*. The reason for this was that it was impossible to get any other
consistent behavior across 3 IDEs.

Thanks
Niclas

On Thu, Aug 27, 2015 at 6:11 AM, <so...@apache.org> wrote:

> 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 <so...@apache.org>
> Authored: Thu Aug 27 00:11:24 2015 +0200
> Committer: Kent Sølvsten <so...@apache.org>
> 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() )
>          {
>
>


-- 
Niclas Hedhman, Software Developer
http://zest.apache.org - New Energy for Java

Re: zest-java git commit: Annotations#findAccessorAndTypeAnnotations now returns list to avoid reuse-of-stream trap

Posted by Niclas Hedhman <ni...@hedhman.org>.
You are awake early ;-)

On Thu, Aug 27, 2015 at 12:30 PM, Kent Sølvsten <ke...@gmail.com>
wrote:

> oops - sorry.
>
> Had to upgrade to a newer Intellij due to too many java8 problems - and
> the new version was using "IDE-default" codestyle from the beginning.
>
> Den 27-08-2015 kl. 02:51 skrev Niclas Hedhman:
> > Kent, please change your IDE settings so that;
> >
> > Full import list is always used, and not
> > import java.util.*;
> >
> > And that the imports are fully alphabetical, i.e. no special treatment of
> > java.*. The reason for this was that it was impossible to get any other
> > consistent behavior across 3 IDEs.
> >
> > Thanks
> > Niclas
> >
> > On Thu, Aug 27, 2015 at 6:11 AM, <so...@apache.org> wrote:
> >
> >> 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 <so...@apache.org>
> >> Authored: Thu Aug 27 00:11:24 2015 +0200
> >> Committer: Kent Sølvsten <so...@apache.org>
> >> 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() )
> >>          {
> >>
> >>
> >
>
>


-- 
Niclas Hedhman, Software Developer
http://zest.apache.org - New Energy for Java

Re: zest-java git commit: Annotations#findAccessorAndTypeAnnotations now returns list to avoid reuse-of-stream trap

Posted by Kent Sølvsten <ke...@gmail.com>.
oops - sorry.

Had to upgrade to a newer Intellij due to too many java8 problems - and
the new version was using "IDE-default" codestyle from the beginning.

Den 27-08-2015 kl. 02:51 skrev Niclas Hedhman:
> Kent, please change your IDE settings so that;
>
> Full import list is always used, and not
> import java.util.*;
>
> And that the imports are fully alphabetical, i.e. no special treatment of
> java.*. The reason for this was that it was impossible to get any other
> consistent behavior across 3 IDEs.
>
> Thanks
> Niclas
>
> On Thu, Aug 27, 2015 at 6:11 AM, <so...@apache.org> wrote:
>
>> 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 <so...@apache.org>
>> Authored: Thu Aug 27 00:11:24 2015 +0200
>> Committer: Kent Sølvsten <so...@apache.org>
>> 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() )
>>          {
>>
>>
>