prefer streams over core/functional globally - first pass

Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/fdf596b9
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/fdf596b9
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/fdf596b9

Branch: refs/heads/develop
Commit: fdf596b92f4162579fc275094e26b1ff4ec4bedf
Parents: c7fe187
Author: Paul Merlin <[email protected]>
Authored: Mon Nov 28 12:04:48 2016 +0100
Committer: Paul Merlin <[email protected]>
Committed: Mon Nov 28 12:46:38 2016 +0100

----------------------------------------------------------------------
 .../api/service/importer/InstanceImporter.java  |  3 +-
 .../org/apache/zest/api/type/ValueType.java     |  9 ++---
 .../api/unitofwork/NoSuchEntityException.java   |  7 ----
 .../java/org/apache/zest/api/util/Classes.java  | 35 ++++--------------
 .../runtime/activation/ActivatorsInstance.java  | 22 +++++++++---
 .../bootstrap/CompositeAssemblyImpl.java        | 27 ++++++--------
 .../runtime/bootstrap/ModuleAssemblyImpl.java   |  6 ++--
 .../runtime/bootstrap/ServiceAssemblyImpl.java  | 19 +++++-----
 .../zest/runtime/composite/CompositeModel.java  | 11 +++---
 .../runtime/composite/ConstructorsModel.java    | 14 ++++----
 .../zest/runtime/composite/MixinsModel.java     |  4 ---
 .../zest/runtime/composite/UsesInstance.java    |  3 +-
 .../zest/runtime/injection/DependencyModel.java | 13 +++----
 .../ServiceInjectionProviderFactory.java        | 12 +++----
 .../provider/ThisInjectionProviderFactory.java  |  3 +-
 .../zest/runtime/query/IterableQuerySource.java | 14 +++++---
 .../service/ImportedServicesInstance.java       |  8 ++---
 .../zest/runtime/service/ServicesInstance.java  |  8 ++---
 .../zest/runtime/structure/TypeLookupImpl.java  |  6 ++--
 .../structure/CompositeDescriptorTest.java      |  3 +-
 .../spi/value/ValueDeserializerAdapter.java     |  4 +--
 .../helpers/JSONManyAssociationStateTest.java   | 19 ++++------
 .../test/indexing/AbstractEntityFinderTest.java | 37 ++++++++++----------
 .../support/skeletons/AbstractSQLStartup.java   |  8 ++---
 .../zest/library/http/AbstractJettyMixin.java   | 11 +++---
 .../org/apache/zest/library/jmx/ZestMBeans.java | 19 +++-------
 .../rest/server/api/ContextResource.java        |  8 ++---
 .../requestreader/DefaultRequestReader.java     | 14 +++-----
 .../responsewriter/ResourceResponseWriter.java  |  5 ++-
 29 files changed, 150 insertions(+), 202 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/api/src/main/java/org/apache/zest/api/service/importer/InstanceImporter.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/service/importer/InstanceImporter.java
 
b/core/api/src/main/java/org/apache/zest/api/service/importer/InstanceImporter.java
index add1636..a6ed355 100644
--- 
a/core/api/src/main/java/org/apache/zest/api/service/importer/InstanceImporter.java
+++ 
b/core/api/src/main/java/org/apache/zest/api/service/importer/InstanceImporter.java
@@ -20,6 +20,7 @@
 
 package org.apache.zest.api.service.importer;
 
+import java.util.Objects;
 import java.util.stream.Stream;
 import org.apache.zest.api.injection.scope.Structure;
 import org.apache.zest.api.service.ImportedServiceDescriptor;
@@ -51,7 +52,7 @@ public final class InstanceImporter<T>
     {
         return Stream.of( serviceDescriptor, module, layer, application )
             .flatMap( holder -> serviceDescriptor.types().map( type -> (T) 
holder.metaInfo( type ) ) )
-            .filter( meta -> meta != null )
+            .filter( Objects::nonNull )
             .findFirst().orElse( null );
     }
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/api/src/main/java/org/apache/zest/api/type/ValueType.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/zest/api/type/ValueType.java 
b/core/api/src/main/java/org/apache/zest/api/type/ValueType.java
index ed95068..3795d67 100644
--- a/core/api/src/main/java/org/apache/zest/api/type/ValueType.java
+++ b/core/api/src/main/java/org/apache/zest/api/type/ValueType.java
@@ -19,16 +19,13 @@
  */
 package org.apache.zest.api.type;
 
-import java.lang.reflect.Type;
 import java.util.Collections;
 import java.util.List;
-import java.util.function.Function;
 import java.util.stream.Stream;
 import org.apache.zest.api.identity.Identity;
 import org.apache.zest.api.util.NullArgumentException;
-import org.apache.zest.functional.Iterables;
 
-import static org.apache.zest.functional.Iterables.first;
+import static java.util.stream.Collectors.joining;
 
 /**
  * Base class for types of values in ValueComposites and Properties.
@@ -135,7 +132,7 @@ public class ValueType
 
     public Class<?> mainType()
     {
-        return first( types );
+        return types.stream().findFirst().orElse( null );
     }
 
     @Override
@@ -147,7 +144,7 @@ public class ValueType
     @Override
     public String toString()
     {
-        String name = Iterables.toString( types, Class::getName, "," );
+        String name = types.stream().map( Class::getName ).collect( joining( 
"," ) );
         if( name.contains( "," ) )
         {
             name = "{" + name + "}";

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/api/src/main/java/org/apache/zest/api/unitofwork/NoSuchEntityException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/unitofwork/NoSuchEntityException.java
 
b/core/api/src/main/java/org/apache/zest/api/unitofwork/NoSuchEntityException.java
index 689b053..9827a2e 100644
--- 
a/core/api/src/main/java/org/apache/zest/api/unitofwork/NoSuchEntityException.java
+++ 
b/core/api/src/main/java/org/apache/zest/api/unitofwork/NoSuchEntityException.java
@@ -22,7 +22,6 @@ package org.apache.zest.api.unitofwork;
 import java.util.stream.Stream;
 import org.apache.zest.api.entity.EntityReference;
 import org.apache.zest.api.usecase.Usecase;
-import org.apache.zest.functional.Iterables;
 
 import static java.util.Arrays.stream;
 
@@ -73,12 +72,6 @@ public class NoSuchEntityException
         return usecase;
     }
 
-    private static Class<?>[] castToArray( Iterable<Class<?>> iterableClasses )
-    {
-        Iterable<Class> types = Iterables.cast( iterableClasses );
-        return Iterables.toArray( Class.class, types );
-    }
-
     private static String toString( Class<?>[] mixinTypes )
     {
         String reduced = stream( mixinTypes ).map( Class::getName ).reduce( 
"", ( ret, name ) -> ret + "," + name );

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/api/src/main/java/org/apache/zest/api/util/Classes.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/zest/api/util/Classes.java 
b/core/api/src/main/java/org/apache/zest/api/util/Classes.java
index 7611389..ed215e7 100644
--- a/core/api/src/main/java/org/apache/zest/api/util/Classes.java
+++ b/core/api/src/main/java/org/apache/zest/api/util/Classes.java
@@ -34,6 +34,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.LinkedHashSet;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.function.Function;
 import java.util.function.Predicate;
@@ -242,29 +243,14 @@ public final class Classes
         return clazz::isAssignableFrom;
     }
 
-    @SuppressWarnings( "raw" )
-    public static Predicate<Object> instanceOf( final Class clazz )
+    public static Predicate<Object> instanceOf( final Class<?> clazz )
     {
-        return new Predicate<Object>()
-        {
-            @Override
-            public boolean test( Object item )
-            {
-                return clazz.isInstance( item );
-            }
-        };
+        return clazz::isInstance;
     }
 
     public static Predicate<Class<?>> hasModifier( final int classModifier )
     {
-        return new Predicate<Class<?>>()
-        {
-            @Override
-            public boolean test( Class<?> item )
-            {
-                return ( item.getModifiers() & classModifier ) != 0;
-            }
-        };
+        return item -> ( item.getModifiers() & classModifier ) != 0;
     }
 
     public static <T> Function<Type, Stream<T>> forClassHierarchy( final 
Function<Class<?>, Stream<T>> function )
@@ -363,20 +349,13 @@ public final class Classes
             .flatMap( TYPES_OF )
             .map( RAW_CLASS )
             .map( clazz -> clazz.getAnnotation( annotationClass ) )
-            .filter( annot -> annot != null )
-            .findAny().get();
+            .filter( Objects::nonNull )
+            .findAny().orElse( null );
     }
 
     public static Predicate<Member> memberNamed( final String name )
     {
-        return new Predicate<Member>()
-        {
-            @Override
-            public boolean test( Member item )
-            {
-                return item.getName().equals( name );
-            }
-        };
+        return item -> item.getName().equals( name );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/activation/ActivatorsInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/activation/ActivatorsInstance.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/activation/ActivatorsInstance.java
index 8ddd3e3..e682fba 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/activation/ActivatorsInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/activation/ActivatorsInstance.java
@@ -20,11 +20,15 @@
 package org.apache.zest.runtime.activation;
 
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.LinkedHashSet;
+import java.util.LinkedList;
 import java.util.Set;
+import java.util.stream.StreamSupport;
 import org.apache.zest.api.activation.Activator;
 import org.apache.zest.api.activation.PassivationException;
-import org.apache.zest.functional.Iterables;
+
+import static java.util.stream.Collectors.toCollection;
 
 /**
  * Instance of a Zest Activators of one Activation target. Contains ordered
@@ -35,7 +39,7 @@ import org.apache.zest.functional.Iterables;
 public class ActivatorsInstance<ActivateeType>
     implements Activator<ActivateeType>
 {
-    @SuppressWarnings( {"raw", "unchecked"} )
+    @SuppressWarnings( { "raw", "unchecked" } )
     public static final ActivatorsInstance EMPTY = new ActivatorsInstance( 
Collections.emptyList() );
 
     private final Iterable<Activator<ActivateeType>> activators;
@@ -70,8 +74,10 @@ public class ActivatorsInstance<ActivateeType>
         throws Exception
     {
         Set<Exception> exceptions = new LinkedHashSet<>();
-        for( Activator<ActivateeType> activator : Iterables.reverse( 
activators ) )
+        Iterator<Activator<ActivateeType>> iterator = 
reverseActivatorsIterator();
+        while( iterator.hasNext() )
         {
+            Activator<ActivateeType> activator = iterator.next();
             try
             {
                 activator.beforePassivation( passivating );
@@ -92,8 +98,10 @@ public class ActivatorsInstance<ActivateeType>
         throws Exception
     {
         Set<Exception> exceptions = new LinkedHashSet<>();
-        for( Activator<ActivateeType> activator : Iterables.reverse( 
activators ) )
+        Iterator<Activator<ActivateeType>> iterator = 
reverseActivatorsIterator();
+        while( iterator.hasNext() )
         {
+            Activator<ActivateeType> activator = iterator.next();
             try
             {
                 activator.afterPassivation( passivated );
@@ -109,4 +117,10 @@ public class ActivatorsInstance<ActivateeType>
         }
     }
 
+    private Iterator<Activator<ActivateeType>> reverseActivatorsIterator()
+    {
+        return StreamSupport.stream( activators.spliterator(), false )
+                            .collect( toCollection( LinkedList::new ) )
+                            .descendingIterator();
+    }
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/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
index 1d0ff01..6f4bbbf 100644
--- 
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
@@ -106,9 +106,6 @@ 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.runtime.legacy.Specifications.translate;
 
 /**
@@ -312,7 +309,7 @@ public abstract class CompositeAssemblyImpl
         }
 
         // Check generic implementations
-        mixinClass = findGenericImplementation( method, mixinDeclarations );
+        mixinClass = findGenericImplementation( method, 
mixinDeclarations.stream() );
         if( mixinClass != null )
         {
             return implementMethodWithClass( method, mixinClass );
@@ -322,26 +319,22 @@ public abstract class CompositeAssemblyImpl
                                              + "\nin\n    " + types );
     }
 
-    @SuppressWarnings( { "raw", "unchecked" } )
     private Class<?> findTypedImplementation( final Method method, 
Stream<Class<?>> mixins )
     {
         // Check if mixinClass implements the method. If so, check if the 
mixinClass is generic or if the filter passes.
         // If a mixinClass is both generic AND non-generic at the same time, 
then the filter applies to the non-generic
         // side only.
         Predicate<Class<?>> appliesToSpec = item -> helper.appliesTo( item, 
method, types, item );
-        return mixins
-            .filter( isAssignableFrom( method.getDeclaringClass() )
-                         .and( Genericpredicate.INSTANCE
-                                   .or( appliesToSpec ) ) )
-            .findFirst().orElse( null );
+        return mixins.filter( isAssignableFrom( method.getDeclaringClass() )
+                                  .and( Genericpredicate.INSTANCE.or( 
appliesToSpec ) ) )
+                     .findFirst().orElse( null );
     }
 
-    @SuppressWarnings( "unchecked" )
-    private Class<?> findGenericImplementation( final Method method, 
Iterable<Class<?>> mixins )
+    private Class<?> findGenericImplementation( final Method method, 
Stream<Class<?>> mixins )
     {
         // Check if mixinClass is generic and the applies-to filter passes
-        return first( filter( Genericpredicate.INSTANCE
-                                  .and( item -> helper.appliesTo( item, 
method, types, item ) ), mixins ) );
+        Predicate<Class<?>> appliesToSpec = item -> helper.appliesTo( item, 
method, types, item );
+        return mixins.filter( Genericpredicate.INSTANCE.and( appliesToSpec ) 
).findFirst().orElse( null );
     }
 
     private MixinModel implementMethodWithClass( Method method, Class 
mixinClass )
@@ -500,10 +493,12 @@ public abstract class CompositeAssemblyImpl
         {
             Annotation[] parameterAnnotation = parameterAnnotations[ i ];
 
-            Name nameAnnotation = (Name) first( filter( isType( Name.class ), 
iterable( parameterAnnotation ) ) );
+            Name nameAnnotation = (Name) Stream.of( parameterAnnotation 
).filter( isType( Name.class ) )
+                                               .findFirst().orElse( null );
             String name = nameAnnotation == null ? "param" + ( i + 1 ) : 
nameAnnotation.value();
 
-            boolean optional = first( filter( isType( Optional.class ), 
iterable( parameterAnnotation ) ) ) != null;
+            boolean optional = Stream.of( parameterAnnotation ).filter( 
isType( Optional.class ) )
+                                     .findFirst().isPresent();
             ValueConstraintsModel parameterConstraintsModel = constraintsFor(
                 Arrays.stream( parameterAnnotation ),
                 parameterTypes[ i ],

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ModuleAssemblyImpl.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ModuleAssemblyImpl.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ModuleAssemblyImpl.java
index 10e1b21..1dea286 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ModuleAssemblyImpl.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ModuleAssemblyImpl.java
@@ -72,7 +72,6 @@ import org.apache.zest.bootstrap.ValueAssembly;
 import org.apache.zest.bootstrap.ValueDeclaration;
 import org.apache.zest.bootstrap.identity.DefaultIdentityGeneratorAssembler;
 import org.apache.zest.bootstrap.unitofwork.DefaultUnitOfWorkAssembler;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.runtime.activation.ActivatorsModel;
 import org.apache.zest.runtime.composite.TransientModel;
 import org.apache.zest.runtime.composite.TransientsModel;
@@ -392,9 +391,10 @@ final class ModuleAssemblyImpl
 
         for (Class<?> serviceType : serviceTypes)
         {
-            if 
(Iterables.matchesAny(AssemblySpecifications.ofAnyType(serviceType), 
serviceAssemblies))
+            if( serviceAssemblies.stream().anyMatch( 
AssemblySpecifications.ofAnyType( serviceType ) ) )
             {
-                Iterables.addAll(assemblies, 
Iterables.filter(AssemblySpecifications.ofAnyType(serviceType), 
serviceAssemblies));
+                serviceAssemblies.stream().filter( 
AssemblySpecifications.ofAnyType( serviceType ) )
+                                 .forEach( assemblies::add );
             }
             else
             {

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ServiceAssemblyImpl.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ServiceAssemblyImpl.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ServiceAssemblyImpl.java
index 268a819..5d5b2e8 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ServiceAssemblyImpl.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/bootstrap/ServiceAssemblyImpl.java
@@ -34,11 +34,7 @@ import org.apache.zest.api.util.Annotations;
 import org.apache.zest.api.util.Classes;
 import org.apache.zest.bootstrap.ServiceAssembly;
 import org.apache.zest.bootstrap.StateDeclarations;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.runtime.activation.ActivatorsModel;
-import org.apache.zest.runtime.association.AssociationsModel;
-import org.apache.zest.runtime.association.ManyAssociationsModel;
-import org.apache.zest.runtime.association.NamedAssociationsModel;
 import org.apache.zest.runtime.service.ServiceModel;
 import org.apache.zest.runtime.structure.ModuleModel;
 
@@ -74,8 +70,9 @@ public final class ServiceAssemblyImpl extends 
CompositeAssemblyImpl
         try
         {
             buildComposite( helper, stateDeclarations );
-            List<Class<? extends Activator<?>>> activatorClasses = 
Iterables.toList(
-                Iterables.<Class<? extends Activator<?>>>flatten( activators, 
activatorsDeclarations( types.stream() ) ) );
+            List<Class<? extends Activator<?>>> activatorClasses = Stream
+                .concat( activators.stream(), activatorsDeclarations( types ) )
+                .collect( Collectors.toList() );
             return new ServiceModel( module, types, visibility, metaInfo,
                                      new ActivatorsModel( activatorClasses ),
                                      mixinsModel, stateModel, 
compositeMethodsModel,
@@ -87,12 +84,12 @@ public final class ServiceAssemblyImpl extends 
CompositeAssemblyImpl
         }
     }
 
-    private Iterable<Class<? extends Activator<?>>> activatorsDeclarations( 
Stream<? extends Class<?>> typess )
+    private Stream<Class<? extends Activator<?>>> activatorsDeclarations( 
List<? extends Class<?>> types )
     {
-        return typess.flatMap( Classes::typesOf )
-//            .filter( type -> Annotations.annotationOn( type, 
Activators.class ) == null )
-            .flatMap( this::getAnnotations )
-            .collect( Collectors.toList() );
+        return types.stream()
+                    .flatMap( Classes::typesOf )
+                    //.filter( type -> Annotations.annotationOn( type, 
Activators.class ) == null )
+                    .flatMap( this::getAnnotations );
     }
 
     private Stream<? extends Class<? extends Activator<?>>> getAnnotations( 
Type type )

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/composite/CompositeModel.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/composite/CompositeModel.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/composite/CompositeModel.java
index c872ff7..eb9ddb7 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/composite/CompositeModel.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/composite/CompositeModel.java
@@ -35,14 +35,11 @@ import org.apache.zest.api.composite.CompositeDescriptor;
 import org.apache.zest.api.composite.InvalidCompositeException;
 import org.apache.zest.api.structure.ModuleDescriptor;
 import org.apache.zest.functional.HierarchicalVisitor;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.functional.VisitableHierarchy;
 import org.apache.zest.runtime.injection.Dependencies;
 import org.apache.zest.runtime.injection.DependencyModel;
 
 import static java.lang.reflect.Proxy.newProxyInstance;
-import static org.apache.zest.functional.Iterables.first;
-import static org.apache.zest.functional.Iterables.toList;
 
 /**
  * JAVADOC
@@ -177,12 +174,12 @@ public abstract class CompositeModel
     @SuppressWarnings( { "raw", "unchecked" } )
     private void createProxyClass()
     {
-        Class<?> mainType = first( types );
+        Class<?> mainType = types.stream().findFirst().get();
         if( mainType.isInterface() )
         {
             ClassLoader proxyClassloader = mainType.getClassLoader();
 
-            Class<?>[] interfaces = Iterables.toArray( Class.class, 
Iterables.<Class>cast( types ) );
+            Class<?>[] interfaces = types.stream().map( Class.class::cast 
).toArray( Class[]::new );
             proxyClass = (Class<? extends Composite>) 
ProxyGenerator.createProxyClass( proxyClassloader, interfaces );
 
             try
@@ -229,7 +226,7 @@ public abstract class CompositeModel
     public Composite newProxy( InvocationHandler invocationHandler )
         throws ConstructionException
     {
-        Class<?> mainType = first( types );
+        Class<?> mainType = types.stream().findFirst().get();
         if( mainType.isInterface() )
         {
             try
@@ -276,6 +273,6 @@ public abstract class CompositeModel
     @Override
     public String toString()
     {
-        return toList( types ).toString();
+        return types.toString();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/composite/ConstructorsModel.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/composite/ConstructorsModel.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/composite/ConstructorsModel.java
index 3ea8642..5608027 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/composite/ConstructorsModel.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/composite/ConstructorsModel.java
@@ -30,6 +30,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
+import java.util.function.Predicate;
 import java.util.stream.Stream;
 import org.apache.zest.api.common.ConstructionException;
 import org.apache.zest.api.composite.CompositeDescriptor;
@@ -41,20 +42,16 @@ import org.apache.zest.api.util.Classes;
 import org.apache.zest.bootstrap.BindingException;
 import org.apache.zest.functional.HierarchicalVisitor;
 import org.apache.zest.functional.HierarchicalVisitorAdapter;
-import org.apache.zest.runtime.legacy.Specifications;
 import org.apache.zest.functional.VisitableHierarchy;
 import org.apache.zest.runtime.injection.Dependencies;
 import org.apache.zest.runtime.injection.DependencyModel;
 import org.apache.zest.runtime.injection.InjectedParametersModel;
 import org.apache.zest.runtime.injection.InjectionContext;
 import org.apache.zest.runtime.injection.ParameterizedTypeInstance;
+import org.apache.zest.runtime.legacy.Specifications;
 import org.apache.zest.runtime.model.Binder;
 import org.apache.zest.runtime.model.Resolution;
 
-import static org.apache.zest.functional.Iterables.filter;
-import static org.apache.zest.functional.Iterables.first;
-import static org.apache.zest.functional.Iterables.iterable;
-
 /**
  * JAVADOC
  */
@@ -132,8 +129,11 @@ public final class ConstructorsModel
         Annotation[][] parameterAnnotations = 
injectedConstructor.getParameterAnnotations();
         for( Type type : injectedConstructor.getGenericParameterTypes() )
         {
-            Annotation injectionAnnotation = first(
-                filter( Specifications.translate( Annotations.type(), 
Annotations.hasAnnotation( InjectionScope.class ) ), iterable( 
parameterAnnotations[ idx ] ) ) );
+            Predicate<Annotation> injectionAnnotationSpec = 
Specifications.translate(
+                Annotations.type(), Annotations.hasAnnotation( 
InjectionScope.class ) );
+            Annotation injectionAnnotation = Stream.of( parameterAnnotations[ 
idx ] )
+                                                   .filter( 
injectionAnnotationSpec )
+                                                   .findFirst().orElse( null );
 
             if( injectionAnnotation == null )
             {

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/composite/MixinsModel.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/composite/MixinsModel.java 
b/core/runtime/src/main/java/org/apache/zest/runtime/composite/MixinsModel.java
index 721794f..d3564c1 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/composite/MixinsModel.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/composite/MixinsModel.java
@@ -30,8 +30,6 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.Function;
-import java.util.function.Predicate;
 import java.util.stream.Stream;
 import org.apache.zest.api.util.Classes;
 import org.apache.zest.bootstrap.BindingException;
@@ -45,8 +43,6 @@ import org.apache.zest.runtime.model.Binder;
 import org.apache.zest.runtime.model.Resolution;
 
 import static org.apache.zest.api.util.Classes.interfacesOf;
-import static org.apache.zest.functional.Iterables.filter;
-import static org.apache.zest.functional.Iterables.map;
 
 /**
  * Base implementation of model for mixins. This records the mapping between 
methods in the Composite

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/composite/UsesInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/composite/UsesInstance.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/composite/UsesInstance.java
index abf21f8..af0ff09 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/composite/UsesInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/composite/UsesInstance.java
@@ -24,7 +24,6 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
-import org.apache.zest.functional.Iterables;
 
 /**
  * JAVADOC
@@ -79,7 +78,7 @@ public final class UsesInstance
 
     public Object[] toArray()
     {
-        return Iterables.toArray( uses );
+        return uses.toArray();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/injection/DependencyModel.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/injection/DependencyModel.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/injection/DependencyModel.java
index 8a48f0b..23c5659 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/injection/DependencyModel.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/injection/DependencyModel.java
@@ -25,14 +25,15 @@ import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.function.Function;
 import java.util.function.Predicate;
+import java.util.stream.Stream;
 import org.apache.zest.api.common.ConstructionException;
 import org.apache.zest.api.common.Optional;
 import org.apache.zest.api.composite.DependencyDescriptor;
 import org.apache.zest.bootstrap.BindingException;
 import org.apache.zest.bootstrap.InvalidInjectionException;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.functional.Visitable;
 import org.apache.zest.functional.Visitor;
 import 
org.apache.zest.runtime.injection.provider.CachingInjectionProviderDecorator;
@@ -42,7 +43,6 @@ import org.apache.zest.runtime.model.Binder;
 import org.apache.zest.runtime.model.Resolution;
 
 import static org.apache.zest.api.util.Annotations.isType;
-import static org.apache.zest.functional.Iterables.iterable;
 
 /**
  * JAVADOC
@@ -53,7 +53,7 @@ public final class DependencyModel
 {
     public static boolean isOptional( Annotation injectionAnnotation, 
Annotation[] annotations )
     {
-        if( Iterables.matchesAny( isType( Optional.class ), iterable( 
annotations ) ) )
+        if( Stream.of( annotations ).anyMatch( isType( Optional.class ) ) )
         {
             return true;
         }
@@ -335,14 +335,15 @@ public final class DependencyModel
 
         if( injectionResult instanceof Iterable )
         {
-            if( Iterable.class.isAssignableFrom( rawInjectionClass ) || 
rawInjectionClass.isInstance(
-                injectionResult ) )
+            if( Iterable.class.isAssignableFrom( rawInjectionClass )
+                || rawInjectionClass.isInstance( injectionResult ) )
             {
                 return injectionResult;
             }
             else
             {
-                return Iterables.first( (Iterable) injectionResult );
+                Iterator iterator = ( (Iterable) injectionResult ).iterator();
+                return iterator.hasNext() ? iterator.next() : null;
             }
         }
         else

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/ServiceInjectionProviderFactory.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/ServiceInjectionProviderFactory.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/ServiceInjectionProviderFactory.java
index 9c2d094..9d0ed4f 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/ServiceInjectionProviderFactory.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/ServiceInjectionProviderFactory.java
@@ -25,6 +25,7 @@ import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.function.Function;
 import java.util.function.Predicate;
+import java.util.stream.Stream;
 import org.apache.zest.api.service.NoSuchServiceException;
 import org.apache.zest.api.service.ServiceReference;
 import org.apache.zest.api.service.qualifier.Qualifier;
@@ -32,17 +33,14 @@ import org.apache.zest.api.util.Annotations;
 import org.apache.zest.api.util.Classes;
 import org.apache.zest.bootstrap.InvalidInjectionException;
 import org.apache.zest.functional.Iterables;
-import org.apache.zest.runtime.legacy.Specifications;
 import org.apache.zest.runtime.injection.DependencyModel;
 import org.apache.zest.runtime.injection.InjectionContext;
 import org.apache.zest.runtime.injection.InjectionProvider;
 import org.apache.zest.runtime.injection.InjectionProviderFactory;
+import org.apache.zest.runtime.legacy.Specifications;
 import org.apache.zest.runtime.model.Resolution;
 
 import static org.apache.zest.api.util.Annotations.hasAnnotation;
-import static org.apache.zest.functional.Iterables.filter;
-import static org.apache.zest.functional.Iterables.first;
-import static org.apache.zest.functional.Iterables.iterable;
 
 public final class ServiceInjectionProviderFactory
     implements InjectionProviderFactory
@@ -53,8 +51,10 @@ public final class ServiceInjectionProviderFactory
         throws InvalidInjectionException
     {
         // TODO This could be changed to allow multiple @Qualifier annotations
-        Annotation qualifierAnnotation = first( filter( 
Specifications.translate( Annotations.type(), hasAnnotation( Qualifier.class ) 
), iterable( dependencyModel
-                                                                               
                                                                         
.annotations() ) ) );
+        Annotation qualifierAnnotation = Stream.of( 
dependencyModel.annotations() )
+                                               .filter( 
Specifications.translate( Annotations.type(),
+                                                                               
   hasAnnotation( Qualifier.class ) ) )
+                                               .findFirst().orElse( null );
         Predicate<ServiceReference<?>> serviceQualifier = null;
         if( qualifierAnnotation != null )
         {

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/ThisInjectionProviderFactory.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/ThisInjectionProviderFactory.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/ThisInjectionProviderFactory.java
index 4caf929..4ef09b6 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/ThisInjectionProviderFactory.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/ThisInjectionProviderFactory.java
@@ -28,7 +28,6 @@ import java.util.stream.Stream;
 import org.apache.zest.api.composite.CompositeDescriptor;
 import org.apache.zest.api.util.Classes;
 import org.apache.zest.bootstrap.InvalidInjectionException;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.runtime.composite.ProxyGenerator;
 import org.apache.zest.runtime.injection.DependencyModel;
 import org.apache.zest.runtime.injection.InjectionContext;
@@ -97,7 +96,7 @@ public final class ThisInjectionProviderFactory
                 }
                 else
                 {
-                    interfaces = Iterables.toArray( Class.class, 
Iterables.cast( types ) );
+                    interfaces = types.stream().map( Class.class::cast 
).toArray( Class[]::new );
                     proxyClass = ProxyGenerator.createProxyClass( 
mainType.getClassLoader(), interfaces );
                 }
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/query/IterableQuerySource.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/query/IterableQuerySource.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/query/IterableQuerySource.java
index 14d4ead..c619f18 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/query/IterableQuerySource.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/query/IterableQuerySource.java
@@ -26,13 +26,16 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Predicate;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
 import org.apache.zest.api.composite.Composite;
 import org.apache.zest.api.property.Property;
 import org.apache.zest.api.query.grammar.OrderBy;
-import org.apache.zest.api.util.Classes;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.spi.query.QuerySource;
 
+import static java.util.stream.Collectors.toList;
+import static org.apache.zest.api.util.Classes.instanceOf;
+
 /**
  * JAVADOC
  */
@@ -153,13 +156,16 @@ public class IterableQuerySource
     @SuppressWarnings( {"raw", "unchecked"} )
     private <T> List<T> filter( Class<T> resultType, Predicate whereClause )
     {
+        Stream stream = StreamSupport.stream( iterable.spliterator(), false );
         if( whereClause == null )
         {
-            return Iterables.toList( Iterables.filter( Classes.instanceOf( 
resultType ), iterable ) );
+            return List.class.cast( stream.filter( resultType::isInstance )
+                                          .collect( toList() ) );
         }
         else
         {
-            return Iterables.toList( Iterables.filter( Classes.instanceOf( 
resultType ).and( whereClause ), iterable ) );
+            return List.class.cast( stream.filter( instanceOf( resultType 
).and( whereClause ) )
+                                          .collect( toList() ) );
         }
     }
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/service/ImportedServicesInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/service/ImportedServicesInstance.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/service/ImportedServicesInstance.java
index 5e7e8c6..c3e5eef 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/service/ImportedServicesInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/service/ImportedServicesInstance.java
@@ -29,12 +29,10 @@ import org.apache.zest.api.activation.PassivationException;
 import org.apache.zest.api.common.Visibility;
 import org.apache.zest.api.service.ImportedServiceDescriptor;
 import org.apache.zest.api.service.ServiceReference;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.runtime.activation.ActivationDelegate;
 import org.apache.zest.runtime.activation.ActivatorsInstance;
 
-import static org.apache.zest.api.util.Classes.instanceOf;
-import static org.apache.zest.functional.Iterables.filter;
+import static java.util.stream.Collectors.toList;
 
 /**
  * JAVADOC
@@ -67,7 +65,9 @@ public class ImportedServicesInstance
     public void activate()
         throws ActivationException
     {
-        Iterable<Activation> activatees = Iterables.<Activation>cast( filter( 
instanceOf( Activation.class ), serviceReferences ) );
+        Iterable<Activation> activatees = serviceReferences.stream().filter( 
Activation.class::isInstance )
+                                                           .map( 
Activation.class::cast )
+                                                           .collect( toList() 
);
         activation.activate( ActivatorsInstance.EMPTY, activatees );
     }
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/service/ServicesInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/service/ServicesInstance.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/service/ServicesInstance.java
index 3cc42e5..ddfd34f 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/service/ServicesInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/service/ServicesInstance.java
@@ -29,12 +29,10 @@ import org.apache.zest.api.activation.PassivationException;
 import org.apache.zest.api.common.Visibility;
 import org.apache.zest.api.service.ServiceDescriptor;
 import org.apache.zest.api.service.ServiceReference;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.runtime.activation.ActivationDelegate;
 import org.apache.zest.runtime.activation.ActivatorsInstance;
 
-import static org.apache.zest.api.util.Classes.instanceOf;
-import static org.apache.zest.functional.Iterables.filter;
+import static java.util.stream.Collectors.toList;
 
 /**
  * JAVADOC
@@ -65,7 +63,9 @@ public class ServicesInstance
     public void activate()
         throws ActivationException
     {
-        Iterable<Activation> activatees = Iterables.<Activation>cast( filter( 
instanceOf( Activation.class ), serviceReferences ) );
+        Iterable<Activation> activatees = serviceReferences.stream().filter( 
Activation.class::isInstance )
+                                                           .map( 
Activation.class::cast )
+                                                           .collect( toList() 
);
         activation.activate( ActivatorsInstance.EMPTY, activatees );
     }
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/main/java/org/apache/zest/runtime/structure/TypeLookupImpl.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/structure/TypeLookupImpl.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/structure/TypeLookupImpl.java
index 7aaec46..a36a65d 100644
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/structure/TypeLookupImpl.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/structure/TypeLookupImpl.java
@@ -42,7 +42,6 @@ import static java.util.stream.Stream.concat;
 import static org.apache.zest.api.common.Visibility.application;
 import static org.apache.zest.api.common.Visibility.layer;
 import static org.apache.zest.api.util.Classes.interfacesOf;
-import static org.apache.zest.functional.Iterables.first;
 
 /**
  * Central place for Composite Type lookups.
@@ -240,9 +239,10 @@ class TypeLookupImpl
     }
 
     @Override
-    public ModelDescriptor lookupServiceModel( Type serviceType1 )
+    public ModelDescriptor lookupServiceModel( Type serviceType )
     {
-        return serviceModels.computeIfAbsent( serviceType1, key -> first( 
lookupServiceModels( key ) ) );
+        return serviceModels.computeIfAbsent( serviceType,
+                                              key -> lookupServiceModels( key 
).stream().findFirst().orElse( null ) );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/runtime/src/test/java/org/apache/zest/runtime/structure/CompositeDescriptorTest.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/test/java/org/apache/zest/runtime/structure/CompositeDescriptorTest.java
 
b/core/runtime/src/test/java/org/apache/zest/runtime/structure/CompositeDescriptorTest.java
index ec9aa4a..42e0893 100644
--- 
a/core/runtime/src/test/java/org/apache/zest/runtime/structure/CompositeDescriptorTest.java
+++ 
b/core/runtime/src/test/java/org/apache/zest/runtime/structure/CompositeDescriptorTest.java
@@ -20,17 +20,16 @@
 package org.apache.zest.runtime.structure;
 
 import org.apache.zest.api.composite.CompositeDescriptor;
-import org.junit.Test;
 import org.apache.zest.api.composite.TransientComposite;
 import org.apache.zest.api.composite.TransientDescriptor;
 import org.apache.zest.bootstrap.AssemblyException;
 import org.apache.zest.bootstrap.ModuleAssembly;
 import org.apache.zest.test.AbstractZestTest;
+import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-import static org.apache.zest.functional.Iterables.first;
 
 public class CompositeDescriptorTest
     extends AbstractZestTest

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/spi/src/main/java/org/apache/zest/spi/value/ValueDeserializerAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/value/ValueDeserializerAdapter.java
 
b/core/spi/src/main/java/org/apache/zest/spi/value/ValueDeserializerAdapter.java
index 94ffd0f..85884ae 100644
--- 
a/core/spi/src/main/java/org/apache/zest/spi/value/ValueDeserializerAdapter.java
+++ 
b/core/spi/src/main/java/org/apache/zest/spi/value/ValueDeserializerAdapter.java
@@ -58,8 +58,6 @@ import org.apache.zest.api.value.ValueDescriptor;
 import org.apache.zest.api.value.ValueDeserializer;
 import org.apache.zest.api.value.ValueSerializationException;
 
-import static org.apache.zest.functional.Iterables.empty;
-
 /**
  * Adapter for pull-parsing and tree-parsing capable ValueDeserializers.
  *
@@ -673,7 +671,7 @@ public abstract class ValueDeserializerAdapter<InputType, 
InputNodeType>
                 Object entityRefs = stateMap.get( 
manyAssociation.qualifiedName().name() );
                 if( entityRefs == null )
                 {
-                    return empty();
+                    return Collections.emptySet();
                 }
                 //noinspection unchecked
                 return (Iterable<EntityReference>) entityRefs;

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/spi/src/test/java/org/apache/zest/spi/entitystore/helpers/JSONManyAssociationStateTest.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/test/java/org/apache/zest/spi/entitystore/helpers/JSONManyAssociationStateTest.java
 
b/core/spi/src/test/java/org/apache/zest/spi/entitystore/helpers/JSONManyAssociationStateTest.java
index f2ebb41..afc3ffc 100644
--- 
a/core/spi/src/test/java/org/apache/zest/spi/entitystore/helpers/JSONManyAssociationStateTest.java
+++ 
b/core/spi/src/test/java/org/apache/zest/spi/entitystore/helpers/JSONManyAssociationStateTest.java
@@ -19,22 +19,20 @@
  */
 package org.apache.zest.spi.entitystore.helpers;
 
+import java.util.ArrayList;
 import java.util.List;
-import java.util.function.Function;
+import org.apache.zest.api.entity.EntityReference;
 import org.apache.zest.api.time.SystemTime;
+import org.apache.zest.spi.entity.EntityStatus;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.junit.Test;
-import org.apache.zest.api.entity.EntityReference;
-import org.apache.zest.spi.entity.EntityStatus;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertThat;
-import static org.apache.zest.functional.Iterables.map;
-import static org.apache.zest.functional.Iterables.toList;
 
 public class JSONManyAssociationStateTest
 {
@@ -127,14 +125,11 @@ public class JSONManyAssociationStateTest
         assertThat( jsonState.contains( EntityReference.parseEntityReference( 
"2" ) ), is( true ) );
         assertThat( jsonState.contains( EntityReference.parseEntityReference( 
"1" ) ), is( true ) );
 
-        List<String> refList = toList( map( new Function<EntityReference, 
String>()
+        List<String> refList = new ArrayList<>();
+        for( EntityReference ref : jsonState )
         {
-            @Override
-            public String apply( EntityReference from )
-            {
-                return from.identity().toString();
-            }
-        }, jsonState ) );
+            refList.add( ref.identity().toString() );
+        }
         assertThat( refList.isEmpty(), is( false ) );
         assertArrayEquals( new String[]
         {

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractEntityFinderTest.java
----------------------------------------------------------------------
diff --git 
a/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractEntityFinderTest.java
 
b/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractEntityFinderTest.java
index 8010176..0538448 100644
--- 
a/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractEntityFinderTest.java
+++ 
b/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractEntityFinderTest.java
@@ -27,14 +27,13 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Predicate;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.structure.Module;
-import org.junit.Before;
-import org.junit.Test;
+import java.util.stream.StreamSupport;
 import org.apache.zest.api.composite.Composite;
 import org.apache.zest.api.entity.EntityReference;
+import org.apache.zest.api.injection.scope.Structure;
 import org.apache.zest.api.query.grammar.OrderBy;
 import org.apache.zest.api.service.ServiceReference;
+import org.apache.zest.api.structure.Module;
 import org.apache.zest.spi.query.EntityFinder;
 import org.apache.zest.spi.query.EntityFinderException;
 import org.apache.zest.spi.query.IndexExporter;
@@ -43,8 +42,10 @@ import org.apache.zest.test.indexing.model.Female;
 import org.apache.zest.test.indexing.model.Male;
 import org.apache.zest.test.indexing.model.Nameable;
 import org.apache.zest.test.indexing.model.Person;
+import org.junit.Before;
+import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
+import static java.util.stream.Collectors.toList;
 import static org.apache.zest.api.query.QueryExpressions.and;
 import static org.apache.zest.api.query.QueryExpressions.eq;
 import static org.apache.zest.api.query.QueryExpressions.ge;
@@ -57,8 +58,8 @@ import static org.apache.zest.api.query.QueryExpressions.or;
 import static org.apache.zest.api.query.QueryExpressions.orderBy;
 import static org.apache.zest.api.query.QueryExpressions.templateFor;
 import static org.apache.zest.api.query.QueryExpressions.variable;
-import static org.apache.zest.functional.Iterables.toList;
 import static org.apache.zest.test.indexing.NameableAssert.assertNames;
+import static org.junit.Assert.assertEquals;
 
 /**
  * Abstract satisfiedBy with tests for the EntityFinder interface.
@@ -339,12 +340,12 @@ public abstract class AbstractEntityFinderTest
         throws EntityFinderException
     {
         // should return only 2 entities
-        final List<EntityReference> references = toList( 
entityFinder.findEntities(
-            Nameable.class,
-            ALL,
-            NO_SORTING,
-            NO_FIRST_RESULT, 2,
-            NO_VARIABLES ) );
+        final List<EntityReference> references = StreamSupport.stream(
+            entityFinder.findEntities( Nameable.class,
+                                       ALL,
+                                       NO_SORTING,
+                                       NO_FIRST_RESULT, 2,
+                                       NO_VARIABLES ).spliterator(), false 
).collect( toList() );
         assertEquals( "2 identitities", 2, references.size() );
     }
 
@@ -353,12 +354,12 @@ public abstract class AbstractEntityFinderTest
         throws EntityFinderException
     {
         // should return only 2 entities starting with third one
-        final List<EntityReference> references = toList( 
entityFinder.findEntities(
-            Nameable.class,
-            ALL,
-            NO_SORTING,
-            3, 2,
-            NO_VARIABLES ) );
+        final List<EntityReference> references = StreamSupport.stream(
+            entityFinder.findEntities( Nameable.class,
+                                       ALL,
+                                       NO_SORTING,
+                                       3, 2,
+                                       NO_VARIABLES ).spliterator(), false 
).collect( toList() );
         assertEquals( "2 identitities", 2, references.size() );
     }
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/extensions/indexing-sql/src/main/java/org/apache/zest/index/sql/support/skeletons/AbstractSQLStartup.java
----------------------------------------------------------------------
diff --git 
a/extensions/indexing-sql/src/main/java/org/apache/zest/index/sql/support/skeletons/AbstractSQLStartup.java
 
b/extensions/indexing-sql/src/main/java/org/apache/zest/index/sql/support/skeletons/AbstractSQLStartup.java
index b09e52d..671785a 100644
--- 
a/extensions/indexing-sql/src/main/java/org/apache/zest/index/sql/support/skeletons/AbstractSQLStartup.java
+++ 
b/extensions/indexing-sql/src/main/java/org/apache/zest/index/sql/support/skeletons/AbstractSQLStartup.java
@@ -67,7 +67,6 @@ import org.apache.zest.api.structure.LayerDescriptor;
 import org.apache.zest.api.structure.ModuleDescriptor;
 import org.apache.zest.api.value.ValueDescriptor;
 import org.apache.zest.functional.HierarchicalVisitorAdapter;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.index.reindexer.Reindexer;
 import org.apache.zest.index.sql.support.api.SQLAppStartup;
 import org.apache.zest.index.sql.support.api.SQLTypeInfo;
@@ -1437,10 +1436,9 @@ public abstract class AbstractSQLStartup
                         else
                         {
                             valueDescriptors.add( new CompositeDescriptorInfo(
-                                    (LayerDescriptor) Iterables
-                                    .first( Iterables.skip( 1, currentPath ) ),
-                                    (ModuleDescriptor) Iterables.first( 
currentPath ),
-                                    (CompositeDescriptor) visited ) );
+                                (LayerDescriptor) currentPath.stream().skip( 1 
).findFirst().orElse( null ),
+                                (ModuleDescriptor) 
currentPath.stream().findFirst().orElse( null ),
+                                (CompositeDescriptor) visited ) );
                         }
 
                         return false;

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/libraries/http/src/main/java/org/apache/zest/library/http/AbstractJettyMixin.java
----------------------------------------------------------------------
diff --git 
a/libraries/http/src/main/java/org/apache/zest/library/http/AbstractJettyMixin.java
 
b/libraries/http/src/main/java/org/apache/zest/library/http/AbstractJettyMixin.java
index ad559d9..adc01cc 100644
--- 
a/libraries/http/src/main/java/org/apache/zest/library/http/AbstractJettyMixin.java
+++ 
b/libraries/http/src/main/java/org/apache/zest/library/http/AbstractJettyMixin.java
@@ -26,6 +26,8 @@ import javax.servlet.Filter;
 import javax.servlet.Servlet;
 import javax.servlet.ServletContextListener;
 import org.apache.zest.api.identity.Identity;
+import org.apache.zest.api.service.ServiceReference;
+import org.apache.zest.library.http.Interface.Protocol;
 import org.eclipse.jetty.jmx.MBeanContainer;
 import org.eclipse.jetty.security.SecurityHandler;
 import org.eclipse.jetty.server.Connector;
@@ -38,9 +40,6 @@ import org.eclipse.jetty.server.handler.ErrorHandler;
 import org.eclipse.jetty.server.session.SessionHandler;
 import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.servlet.ServletHandler;
-import org.apache.zest.api.service.ServiceReference;
-import org.apache.zest.functional.Iterables;
-import org.apache.zest.library.http.Interface.Protocol;
 
 import static 
org.apache.zest.library.http.JettyConfigurationHelper.addContextListeners;
 import static org.apache.zest.library.http.JettyConfigurationHelper.addFilters;
@@ -74,9 +73,9 @@ public abstract class AbstractJettyMixin
     {
         this.identity = identity;
         this.server = jettyServer;
-        this.contextListeners = Iterables.unique( contextListeners );
-        this.servlets = Iterables.unique( servlets );
-        this.filters = Iterables.unique( filters );
+        this.contextListeners = contextListeners;
+        this.servlets = servlets;
+        this.filters = filters;
         this.mBeanServer = mBeanServer;
     }
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/libraries/jmx/src/main/java/org/apache/zest/library/jmx/ZestMBeans.java
----------------------------------------------------------------------
diff --git 
a/libraries/jmx/src/main/java/org/apache/zest/library/jmx/ZestMBeans.java 
b/libraries/jmx/src/main/java/org/apache/zest/library/jmx/ZestMBeans.java
index ee48065..bf4e1b2 100644
--- a/libraries/jmx/src/main/java/org/apache/zest/library/jmx/ZestMBeans.java
+++ b/libraries/jmx/src/main/java/org/apache/zest/library/jmx/ZestMBeans.java
@@ -19,30 +19,21 @@
  */
 package org.apache.zest.library.jmx;
 
-import java.util.function.Predicate;
 import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
-import org.apache.zest.functional.Iterables;
 
 /**
  * Helper for working with Zest MBeans.
  */
 public class ZestMBeans
 {
-
     public static ObjectName findServiceName( MBeanServer server, String 
applicationName, String serviceId )
-            throws MalformedObjectNameException
+        throws MalformedObjectNameException
     {
-        return Iterables.first( Iterables.filter( new Predicate<ObjectName>()
-        {
-            @Override
-            public boolean test( ObjectName item )
-            {
-                return item.getKeyPropertyList().size() == 5;
-            }
-
-        }, server.queryNames( new ObjectName( "Zest:application=" + 
applicationName + ",*,service=" + serviceId ), null ) ) );
+        ObjectName objectName = new ObjectName( "Zest:application=" + 
applicationName + ",*,service=" + serviceId );
+        return server.queryNames( objectName, null ).stream()
+                     .filter( item -> item.getKeyPropertyList().size() == 5 )
+                     .findFirst().orElse( null );
     }
-
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/api/ContextResource.java
----------------------------------------------------------------------
diff --git 
a/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/api/ContextResource.java
 
b/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/api/ContextResource.java
index f062fdb..0c8e940 100644
--- 
a/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/api/ContextResource.java
+++ 
b/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/api/ContextResource.java
@@ -30,6 +30,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.stream.Stream;
 import org.apache.zest.api.association.ManyAssociation;
 import org.apache.zest.api.association.NamedAssociation;
 import org.apache.zest.api.common.Optional;
@@ -42,8 +43,8 @@ import org.apache.zest.api.injection.scope.Service;
 import org.apache.zest.api.injection.scope.Structure;
 import org.apache.zest.api.injection.scope.Uses;
 import org.apache.zest.api.structure.Module;
-import org.apache.zest.api.unitofwork.NoSuchEntityTypeException;
 import org.apache.zest.api.unitofwork.NoSuchEntityException;
+import org.apache.zest.api.unitofwork.NoSuchEntityTypeException;
 import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
 import org.apache.zest.api.value.ValueBuilder;
 import org.apache.zest.api.value.ValueComposite;
@@ -71,9 +72,6 @@ import org.restlet.resource.ResourceException;
 import org.slf4j.LoggerFactory;
 
 import static org.apache.zest.api.util.Annotations.isType;
-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.library.rest.server.api.ObjectSelection.current;
 
 /**
@@ -901,7 +899,7 @@ public class ContextResource
             // Construct form out of individual parameters instead
             for( Annotation[] annotations : 
interactionMethod.getParameterAnnotations() )
             {
-                Name name = (Name) first( filter( isType( Name.class ), 
iterable( annotations ) ) );
+                Name name = (Name) Stream.of( annotations ).filter( isType( 
Name.class ) ).findFirst().orElse( null );
                 form.add( name.value(), getValue( name.value(), queryAsForm, 
entityAsForm ) );
             }
         }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/restlet/requestreader/DefaultRequestReader.java
----------------------------------------------------------------------
diff --git 
a/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/restlet/requestreader/DefaultRequestReader.java
 
b/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/restlet/requestreader/DefaultRequestReader.java
index 642d1c1..b96cc29 100644
--- 
a/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/restlet/requestreader/DefaultRequestReader.java
+++ 
b/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/restlet/requestreader/DefaultRequestReader.java
@@ -31,6 +31,7 @@ import java.time.ZonedDateTime;
 import java.util.Collections;
 import java.util.Map;
 import java.util.function.Function;
+import java.util.stream.Stream;
 import org.apache.zest.api.association.AssociationDescriptor;
 import org.apache.zest.api.common.Optional;
 import org.apache.zest.api.constraint.Name;
@@ -49,7 +50,6 @@ import org.apache.zest.api.value.ValueComposite;
 import org.apache.zest.api.value.ValueDeserializer;
 import org.apache.zest.api.value.ValueSerialization;
 import org.apache.zest.api.value.ValueSerializationException;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.library.rest.server.spi.RequestReader;
 import org.restlet.Request;
 import org.restlet.Response;
@@ -65,10 +65,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static org.apache.zest.api.util.Annotations.isType;
-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.functional.Iterables.matchesAny;
 
 /**
  * Convert request into method arguments.
@@ -338,7 +334,7 @@ public class DefaultRequestReader
             },
             (Function<AssociationDescriptor, Iterable<EntityReference>>) 
associationDescriptor -> {
                 // TODO
-                return Iterables.empty();
+                return Collections.emptySet();
             },
             new Function<AssociationDescriptor, Map<String, EntityReference>>()
             {
@@ -361,8 +357,8 @@ public class DefaultRequestReader
         int idx = 0;
         for( Annotation[] annotations : method.getParameterAnnotations() )
         {
-            Name name = (Name) first( filter( isType( Name.class ), iterable( 
annotations ) ) );
-
+            Name name = (Name) Stream.of( annotations ).filter( isType( 
Name.class ) )
+                                     .findFirst().orElse( null );
             if( name == null )
             {
                 throw new IllegalStateException( "No @Name annotation found on 
parameter of method:" + method );
@@ -500,7 +496,7 @@ public class DefaultRequestReader
                                                     + " of type " + 
parameterType.getName() );
             }
 
-            if( arg == null && !matchesAny( isType( Optional.class ), 
iterable( annotations ) ) )
+            if( arg == null && Stream.of( annotations ).noneMatch( isType( 
Optional.class ) ) )
             {
                 throw new IllegalArgumentException( "Parameter " + 
name.value() + " was not set" );
             }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fdf596b9/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/restlet/responsewriter/ResourceResponseWriter.java
----------------------------------------------------------------------
diff --git 
a/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/restlet/responsewriter/ResourceResponseWriter.java
 
b/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/restlet/responsewriter/ResourceResponseWriter.java
index cc20ee5..29f9a7e 100644
--- 
a/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/restlet/responsewriter/ResourceResponseWriter.java
+++ 
b/libraries/rest-server/src/main/java/org/apache/zest/library/rest/server/restlet/responsewriter/ResourceResponseWriter.java
@@ -29,7 +29,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import org.apache.zest.api.injection.scope.Service;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.library.rest.common.Resource;
 import org.apache.zest.library.rest.common.link.LinksUtil;
 import org.restlet.Response;
@@ -60,11 +59,11 @@ public class ResourceResponseWriter extends 
AbstractResponseWriter
 
             // Allowed methods
             response.getAllowedMethods().add( Method.GET );
-            if( Iterables.matchesAny( LinksUtil.withRel( "delete" ), 
resourceValue.commands().get() ) )
+            if( resourceValue.commands().get().stream().anyMatch( 
LinksUtil.withRel( "delete" ) ) )
             {
                 response.getAllowedMethods().add( Method.DELETE );
             }
-            if( Iterables.matchesAny( LinksUtil.withRel( "update" ), 
resourceValue.commands().get() ) )
+            if( resourceValue.commands().get().stream().anyMatch( 
LinksUtil.withRel( "update" ) ) )
             {
                 response.getAllowedMethods().add( Method.PUT );
             }

Reply via email to