You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2016/12/08 23:44:17 UTC

[08/13] zest-java git commit: functional: remove Iterables.map and .filter and their usage

functional: remove Iterables.map and .filter and their usage


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

Branch: refs/heads/develop
Commit: d91227a47c502aa0150c4c4b5226ad2ddf1493e4
Parents: 2d485e3
Author: Paul Merlin <pa...@apache.org>
Authored: Thu Dec 8 19:41:10 2016 +0100
Committer: Paul Merlin <pa...@apache.org>
Committed: Thu Dec 8 19:46:33 2016 +0100

----------------------------------------------------------------------
 .../apache/zest/api/query/QueryExpressions.java |  10 +-
 .../api/query/grammar/ContainsAllPredicate.java |   3 +-
 .../java/org/apache/zest/api/OperatorsTest.java |   4 +-
 .../org/apache/zest/functional/Iterables.java   | 227 +------------------
 .../apache/zest/functional/IterablesTest.java   |  33 ---
 .../association/NamedAssociationInstance.java   |  65 +-----
 .../runtime/bootstrap/ModuleAssemblyImpl.java   |  53 +++--
 .../zest/runtime/structure/ModuleInstance.java  |   4 +-
 .../zest/test/indexing/NameableAssert.java      |   6 +-
 .../AbstractCollectionSerializationTest.java    |  22 +-
 .../apache/zest/index/rdf/ContainsAllTest.java  |   3 +-
 .../support/skeletons/AbstractSQLIndexing.java  |  16 +-
 .../shiro/domain/permissions/RoleFactory.java   |   3 +-
 13 files changed, 85 insertions(+), 364 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/core/api/src/main/java/org/apache/zest/api/query/QueryExpressions.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/zest/api/query/QueryExpressions.java b/core/api/src/main/java/org/apache/zest/api/query/QueryExpressions.java
index 0ef35c3..17137d1 100644
--- a/core/api/src/main/java/org/apache/zest/api/query/QueryExpressions.java
+++ b/core/api/src/main/java/org/apache/zest/api/query/QueryExpressions.java
@@ -24,9 +24,12 @@ import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.lang.reflect.Type;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
+import java.util.List;
 import java.util.function.Predicate;
 import org.apache.zest.api.association.Association;
 import org.apache.zest.api.association.GenericAssociationInfo;
@@ -67,7 +70,6 @@ import org.apache.zest.api.query.grammar.Variable;
 import org.apache.zest.api.util.NullArgumentException;
 
 import static org.apache.zest.api.identity.HasIdentity.IDENTITY_METHOD;
-import static org.apache.zest.functional.Iterables.prepend;
 
 /**
  * Static factory methods for query expressions and operators.
@@ -293,7 +295,11 @@ public final class QueryExpressions
                                     Predicate<Composite>... optionalRight
     )
     {
-        return new AndPredicate( prepend( left, prepend( right, Arrays.asList( optionalRight ) ) ) );
+        List<Predicate<Composite>> predicates = new ArrayList<>( 2 + optionalRight.length );
+        predicates.add( left );
+        predicates.add( right );
+        Collections.addAll( predicates, optionalRight );
+        return new AndPredicate( predicates );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsAllPredicate.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsAllPredicate.java b/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsAllPredicate.java
index 429aa73..0bed02b 100644
--- a/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsAllPredicate.java
+++ b/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsAllPredicate.java
@@ -21,7 +21,6 @@ package org.apache.zest.api.query.grammar;
 
 import java.util.Collection;
 import org.apache.zest.api.composite.Composite;
-import org.apache.zest.functional.Iterables;
 
 /**
  * Contains All Specification.
@@ -74,6 +73,6 @@ public class ContainsAllPredicate<T>
     @Override
     public String toString()
     {
-        return collectionProperty + " contains " + Iterables.toList( valueCollection );
+        return collectionProperty + " contains " + valueCollection;
     }
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/core/api/src/test/java/org/apache/zest/api/OperatorsTest.java
----------------------------------------------------------------------
diff --git a/core/api/src/test/java/org/apache/zest/api/OperatorsTest.java b/core/api/src/test/java/org/apache/zest/api/OperatorsTest.java
index 99ccd5a..86151a0 100644
--- a/core/api/src/test/java/org/apache/zest/api/OperatorsTest.java
+++ b/core/api/src/test/java/org/apache/zest/api/OperatorsTest.java
@@ -19,6 +19,7 @@
  */
 package org.apache.zest.api;
 
+import java.util.Collections;
 import java.util.function.Predicate;
 import org.apache.zest.api.activation.ActivationException;
 import org.apache.zest.api.composite.Composite;
@@ -36,7 +37,6 @@ import org.apache.zest.bootstrap.AssemblyException;
 import org.apache.zest.bootstrap.ModuleAssembly;
 import org.apache.zest.bootstrap.SingletonAssembler;
 import org.apache.zest.bootstrap.unitofwork.DefaultUnitOfWorkAssembler;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.test.EntityTestAssembler;
 import org.junit.Assert;
 import org.junit.Test;
@@ -78,7 +78,7 @@ public class OperatorsTest
             uow.complete();
             uow = uowf.newUnitOfWork();
 
-            Iterable<TestEntity> entities = Iterables.iterable( testEntity = uow.get( testEntity ) );
+            Iterable<TestEntity> entities = Collections.singleton( testEntity = uow.get( testEntity ) );
 
             QueryBuilder<TestEntity> builder = assembler.module().newQueryBuilder( TestEntity.class );
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/core/functional/src/main/java/org/apache/zest/functional/Iterables.java
----------------------------------------------------------------------
diff --git a/core/functional/src/main/java/org/apache/zest/functional/Iterables.java b/core/functional/src/main/java/org/apache/zest/functional/Iterables.java
index 46c26a3..685cf69 100644
--- a/core/functional/src/main/java/org/apache/zest/functional/Iterables.java
+++ b/core/functional/src/main/java/org/apache/zest/functional/Iterables.java
@@ -20,27 +20,15 @@
 package org.apache.zest.functional;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
-import java.util.function.Function;
-import java.util.function.Predicate;
 
 /**
  * Utility methods for working with Iterables. See test for examples of how to use.
  */
+@Deprecated
 public final class Iterables
 {
-    private static <T, C extends Collection<T>> C addAll( C collection, Iterable<? extends T> iterable )
-    {
-        for( T item : iterable )
-        {
-            collection.add( item );
-        }
-        return collection;
-    }
-
     public static long count( Iterable<?> iterable )
     {
         long c = 0;
@@ -51,223 +39,18 @@ public final class Iterables
         return c;
     }
 
-    @SuppressWarnings( "unchecked" )
-    public static <X> Iterable<X> filter( Predicate<? /* super X*/> specification, Iterable<X> i )
-    {
-        return new FilterIterable<>( i, (Predicate<? super X>) specification );
-    }
-
-    @SuppressWarnings( "unchecked" )
-    public static <FROM, TO> Iterable<TO> map( Function<? /* super FROM */, TO> function, Iterable<FROM> from )
-    {
-        return new MapIterable<>( from, (Function<FROM, TO>) function );
-    }
-
-    @SafeVarargs
-    public static <T> Iterable<T> iterable( T... items )
-    {
-        return Arrays.asList( items );
-    }
-
-    public static <T> Iterable<T> prepend( final T item, final Iterable<T> iterable )
-    {
-        return () -> new Iterator<T>()
-        {
-            private T first = item;
-            private Iterator<T> iterator;
-
-            @Override
-            public boolean hasNext()
-            {
-                if( first != null )
-                {
-                    return true;
-                }
-                else
-                {
-                    if( iterator == null )
-                    {
-                        iterator = iterable.iterator();
-                    }
-                }
-
-                return iterator.hasNext();
-            }
-
-            @Override
-            public T next()
-            {
-                if( first != null )
-                {
-                    try
-                    {
-                        return first;
-                    }
-                    finally
-                    {
-                        first = null;
-                    }
-                }
-                else
-                {
-                    return iterator.next();
-                }
-            }
-
-            @Override
-            public void remove()
-            {
-            }
-        };
-    }
-
     public static <T> List<T> toList( Iterable<T> iterable )
     {
         return addAll( new ArrayList<>(), iterable );
     }
 
-    private static class MapIterable<FROM, TO>
-        implements Iterable<TO>
-    {
-        private final Iterable<FROM> from;
-        private final Function<? super FROM, TO> function;
-
-        private MapIterable( Iterable<FROM> from, Function<? super FROM, TO> function )
-        {
-            this.from = from;
-            this.function = function;
-        }
-
-        @Override
-        public Iterator<TO> iterator()
-        {
-            return new MapIterator<>( from.iterator(), function );
-        }
-
-        static class MapIterator<FROM, TO>
-            implements Iterator<TO>
-        {
-            private final Iterator<FROM> fromIterator;
-            private final Function<? super FROM, TO> function;
-
-            private MapIterator( Iterator<FROM> fromIterator, Function<? super FROM, TO> function )
-            {
-                this.fromIterator = fromIterator;
-                this.function = function;
-            }
-
-            @Override
-            public boolean hasNext()
-            {
-                return fromIterator.hasNext();
-            }
-
-            @Override
-            public TO next()
-            {
-                FROM from = fromIterator.next();
-                return function.apply( from );
-            }
-
-            @Override
-            public void remove()
-            {
-                fromIterator.remove();
-            }
-        }
-    }
-
-    private static class FilterIterable<T>
-        implements Iterable<T>
+    private static <T, C extends Collection<T>> C addAll( C collection, Iterable<? extends T> iterable )
     {
-        private final Iterable<T> iterable;
-
-        private final Predicate<? super T> specification;
-
-        private FilterIterable( Iterable<T> iterable, Predicate<? super T> specification )
-        {
-            this.iterable = iterable;
-            this.specification = specification;
-        }
-
-        @Override
-        public Iterator<T> iterator()
-        {
-            return new FilterIterator<>( iterable.iterator(), specification );
-        }
-
-        private static class FilterIterator<T>
-            implements Iterator<T>
+        for( T item : iterable )
         {
-            private final Iterator<T> iterator;
-
-            private final Predicate<? super T> specification;
-
-            private T currentValue;
-            boolean finished = false;
-            boolean nextConsumed = true;
-
-            private FilterIterator( Iterator<T> iterator, Predicate<? super T> specification )
-            {
-                this.specification = specification;
-                this.iterator = iterator;
-            }
-
-            private boolean moveToNextValid()
-            {
-                boolean found = false;
-                while( !found && iterator.hasNext() )
-                {
-                    T currentValue = iterator.next();
-                    boolean satisfies = specification.test( currentValue );
-
-                    if( satisfies )
-                    {
-                        found = true;
-                        this.currentValue = currentValue;
-                        nextConsumed = false;
-                    }
-                }
-                if( !found )
-                {
-                    finished = true;
-                }
-                return found;
-            }
-
-            @Override
-            public T next()
-            {
-                if( !nextConsumed )
-                {
-                    nextConsumed = true;
-                    return currentValue;
-                }
-                else
-                {
-                    if( !finished )
-                    {
-                        if( moveToNextValid() )
-                        {
-                            nextConsumed = true;
-                            return currentValue;
-                        }
-                    }
-                }
-                return null;
-            }
-
-            @Override
-            public boolean hasNext()
-            {
-                return !finished && ( !nextConsumed || moveToNextValid() );
-            }
-
-            @Override
-            public void remove()
-            {
-            }
+            collection.add( item );
         }
+        return collection;
     }
 
     private Iterables()

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/core/functional/src/test/java/org/apache/zest/functional/IterablesTest.java
----------------------------------------------------------------------
diff --git a/core/functional/src/test/java/org/apache/zest/functional/IterablesTest.java b/core/functional/src/test/java/org/apache/zest/functional/IterablesTest.java
index ffa7d88..db307d8 100644
--- a/core/functional/src/test/java/org/apache/zest/functional/IterablesTest.java
+++ b/core/functional/src/test/java/org/apache/zest/functional/IterablesTest.java
@@ -20,9 +20,7 @@
 package org.apache.zest.functional;
 
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.List;
-import java.util.function.Function;
 import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
@@ -49,35 +47,4 @@ public class IterablesTest
     {
         assertThat( Iterables.count( numbers ), equalTo( 3L ) );
     }
-
-    @Test
-    public void testMap()
-    {
-        assertThat( Iterables.toList( Iterables.map( new Function<String, String>()
-        {
-
-            public String apply( String s )
-            {
-                return s + s;
-            }
-        }, numbers ) ).toString(), equalTo( "[11, 22, 33]" ) );
-
-        Iterable<List<String>> numberIterable = Iterables.iterable( numbers, numbers, numbers );
-        assertThat( Iterables.toList( Iterables.map( new Function<Collection, Integer>()
-        {
-
-            @Override
-            public Integer apply( Collection collection )
-            {
-                return collection.size();
-            }
-        }, numberIterable ) ).toString(), equalTo( "[3, 3, 3]" ) );
-    }
-
-    @Test
-    public void testIterableVarArg()
-    {
-        assertThat( Iterables.toList( Iterables.iterable( "1", "2", "3" ) ).toString(),
-                    equalTo( "[1, 2, 3]" ) );
-    }
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/core/runtime/src/main/java/org/apache/zest/runtime/association/NamedAssociationInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/association/NamedAssociationInstance.java b/core/runtime/src/main/java/org/apache/zest/runtime/association/NamedAssociationInstance.java
index 05c4539..147fcc2 100644
--- a/core/runtime/src/main/java/org/apache/zest/runtime/association/NamedAssociationInstance.java
+++ b/core/runtime/src/main/java/org/apache/zest/runtime/association/NamedAssociationInstance.java
@@ -20,11 +20,14 @@
 package org.apache.zest.runtime.association;
 
 import java.lang.reflect.Type;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.function.BiFunction;
 import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
 import org.apache.zest.api.association.AssociationDescriptor;
 import org.apache.zest.api.association.NamedAssociation;
 import org.apache.zest.api.association.NamedAssociationWrapper;
@@ -33,8 +36,6 @@ import org.apache.zest.api.identity.HasIdentity;
 import org.apache.zest.api.util.NullArgumentException;
 import org.apache.zest.spi.entity.NamedAssociationState;
 
-import static org.apache.zest.functional.Iterables.map;
-
 public class NamedAssociationInstance<T>
     extends AbstractAssociationInstance<T>
     implements NamedAssociation<T>
@@ -112,14 +113,9 @@ public class NamedAssociationInstance<T>
     @Override
     public Iterable<EntityReference> references()
     {
-        return map( new Function<String, EntityReference>()
-        {
-            @Override
-            public EntityReference apply( String name )
-            {
-                return namedAssociationState.get( name );
-            }
-        }, namedAssociationState );
+        return StreamSupport.stream( namedAssociationState.spliterator(), false )
+                            .map( namedAssociationState::get )
+                            .collect( Collectors.toList() );
     }
 
     @Override
@@ -130,51 +126,10 @@ public class NamedAssociationInstance<T>
 
     public Iterable<Map.Entry<String, EntityReference>> getEntityReferences()
     {
-        return map( new Function<String, Map.Entry<String, EntityReference>>()
-        {
-            @Override
-            public Map.Entry<String, EntityReference> apply( final String key )
-            {
-                final EntityReference value = namedAssociationState.get( key );
-                return new Map.Entry<String, EntityReference>()
-                {
-                    @Override
-                    public String getKey()
-                    {
-                        return key;
-                    }
-
-                    @Override
-                    public EntityReference getValue()
-                    {
-                        return value;
-                    }
-
-                    @Override
-                    public EntityReference setValue( EntityReference value )
-                    {
-                        throw new UnsupportedOperationException( "Immutable Map" );
-                    }
-
-                    @Override
-                    public boolean equals( Object o )
-                    {
-                        if( o instanceof Map.Entry )
-                        {
-                            Map.Entry other = (Map.Entry) o;
-                            return key.equals( other.getKey() );
-                        }
-                        return false;
-                    }
-
-                    @Override
-                    public int hashCode()
-                    {
-                        return 997 * key.hashCode() + 981813497;
-                    }
-                };
-            }
-        }, namedAssociationState );
+        return Collections.unmodifiableMap(
+            StreamSupport.stream( namedAssociationState.spliterator(), false )
+                         .collect( Collectors.toMap( Function.identity(), namedAssociationState::get ) )
+        ).entrySet();
     }
 
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/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 1dea286..11b2f05 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
@@ -22,7 +22,6 @@ package org.apache.zest.runtime.bootstrap;
 
 import java.lang.reflect.UndeclaredThrowableException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
@@ -32,7 +31,6 @@ import java.util.Set;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
 import org.apache.zest.api.activation.Activator;
 import org.apache.zest.api.common.MetaInfo;
 import org.apache.zest.api.common.Visibility;
@@ -43,7 +41,6 @@ import org.apache.zest.api.identity.Identity;
 import org.apache.zest.api.identity.IdentityGenerator;
 import org.apache.zest.api.identity.StringIdentity;
 import org.apache.zest.api.service.DuplicateServiceIdentityException;
-import org.apache.zest.api.service.ServiceImporter;
 import org.apache.zest.api.structure.Module;
 import org.apache.zest.api.type.HasTypes;
 import org.apache.zest.api.type.MatchTypeSpecification;
@@ -88,8 +85,9 @@ import org.apache.zest.runtime.structure.ModuleModel;
 import org.apache.zest.runtime.value.ValueModel;
 import org.apache.zest.runtime.value.ValuesModel;
 
+import static java.util.Arrays.asList;
+import static java.util.Collections.singleton;
 import static java.util.stream.Collectors.toList;
-import static org.apache.zest.functional.Iterables.iterable;
 
 /**
  * Assembly of a Module. This is where you register all objects, Composites,
@@ -166,7 +164,7 @@ final class ModuleAssemblyImpl
     @SafeVarargs
     public final ModuleAssembly withActivators(Class<? extends Activator<Module>>... activators)
     {
-        this.activators.addAll(Arrays.asList(activators));
+        this.activators.addAll( asList( activators ) );
         return this;
     }
 
@@ -458,36 +456,36 @@ final class ModuleAssemblyImpl
     public <ThrowableType extends Throwable> void visit(AssemblyVisitor<ThrowableType> visitor)
             throws ThrowableType
     {
-        visitor.visitModule(this);
+        visitor.visitModule( this );
 
-        for (TransientAssemblyImpl compositeDeclaration : transientAssemblies.values())
+        for( TransientAssemblyImpl compositeDeclaration : transientAssemblies.values() )
         {
-            visitor.visitComposite(new TransientDeclarationImpl(iterable(compositeDeclaration)));
+            visitor.visitComposite( new TransientDeclarationImpl( singleton( compositeDeclaration ) ) );
         }
 
-        for (EntityAssemblyImpl entityDeclaration : entityAssemblies.values())
+        for( EntityAssemblyImpl entityDeclaration : entityAssemblies.values() )
         {
-            visitor.visitEntity(new EntityDeclarationImpl(iterable(entityDeclaration)));
+            visitor.visitEntity( new EntityDeclarationImpl( singleton( entityDeclaration ) ) );
         }
 
-        for (ObjectAssemblyImpl objectDeclaration : objectAssemblies.values())
+        for( ObjectAssemblyImpl objectDeclaration : objectAssemblies.values() )
         {
-            visitor.visitObject(new ObjectDeclarationImpl(iterable(objectDeclaration)));
+            visitor.visitObject( new ObjectDeclarationImpl( singleton( objectDeclaration ) ) );
         }
 
-        for (ServiceAssemblyImpl serviceDeclaration : serviceAssemblies)
+        for( ServiceAssemblyImpl serviceDeclaration : serviceAssemblies )
         {
-            visitor.visitService(new ServiceDeclarationImpl(iterable(serviceDeclaration)));
+            visitor.visitService( new ServiceDeclarationImpl( singleton( serviceDeclaration ) ) );
         }
 
-        for (ImportedServiceAssemblyImpl importedServiceDeclaration : importedServiceAssemblies.values())
+        for( ImportedServiceAssemblyImpl importedServiceDeclaration : importedServiceAssemblies.values() )
         {
-            visitor.visitImportedService(new ImportedServiceDeclarationImpl(iterable(importedServiceDeclaration)));
+            visitor.visitImportedService( new ImportedServiceDeclarationImpl( singleton( importedServiceDeclaration ) ) );
         }
 
-        for (ValueAssemblyImpl valueDeclaration : valueAssemblies.values())
+        for( ValueAssemblyImpl valueDeclaration : valueAssemblies.values() )
         {
-            visitor.visitValue(new ValueDeclarationImpl(iterable(valueDeclaration)));
+            visitor.visitValue( new ValueDeclarationImpl( singleton( valueDeclaration ) ) );
         }
     }
 
@@ -580,15 +578,16 @@ final class ModuleAssemblyImpl
             identities.add(identity);
         }
 
-        importedServiceModels.stream().filter(importedServiceModel ->
-                !StreamSupport.stream(objectModels.spliterator(), false)
-                        .anyMatch(model -> model.types().findFirst().get().equals(importedServiceModel.serviceImporter())))
-                .forEach(importedServiceModel ->
-        {
-            Class<? extends ServiceImporter> serviceFactoryType = importedServiceModel.serviceImporter();
-            ObjectModel objectModel = new ObjectModel(moduleModel, serviceFactoryType, Visibility.module, new MetaInfo());
-            objectModels.add(objectModel);
-        });
+        importedServiceModels
+            .stream()
+            .filter(
+                importedServiceModel ->
+                    objectModels.stream().noneMatch( model -> model.types().findFirst().get()
+                                                                   .equals( importedServiceModel.serviceImporter() ) ) )
+            .forEach(
+                importedServiceModel ->
+                    objectModels.add( new ObjectModel( moduleModel, importedServiceModel.serviceImporter(),
+                                                       Visibility.module, new MetaInfo() ) ) );
 
         return moduleModel;
     }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/core/runtime/src/main/java/org/apache/zest/runtime/structure/ModuleInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/structure/ModuleInstance.java b/core/runtime/src/main/java/org/apache/zest/runtime/structure/ModuleInstance.java
index d3461d0..7a8a72d 100644
--- a/core/runtime/src/main/java/org/apache/zest/runtime/structure/ModuleInstance.java
+++ b/core/runtime/src/main/java/org/apache/zest/runtime/structure/ModuleInstance.java
@@ -92,8 +92,8 @@ import org.apache.zest.spi.entitystore.EntityStore;
 import org.apache.zest.spi.metrics.MetricsProviderAdapter;
 import org.apache.zest.spi.module.ModuleSpi;
 
+import static java.util.Arrays.asList;
 import static java.util.stream.Stream.concat;
-import static org.apache.zest.functional.Iterables.iterable;
 
 /**
  * Instance of a Zest Module. Contains the various composites for this Module.
@@ -427,7 +427,7 @@ public class ModuleInstance
     public void activate()
         throws ActivationException
     {
-        activation.activate( model.newActivatorsInstance(), iterable( services, importedServices ) );
+        activation.activate( model.newActivatorsInstance(), asList( services, importedServices ) );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/core/testsupport/src/main/java/org/apache/zest/test/indexing/NameableAssert.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/NameableAssert.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/NameableAssert.java
index 5429ab7..d1487c3 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/NameableAssert.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/NameableAssert.java
@@ -26,6 +26,8 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
 import org.apache.zest.api.entity.EntityReference;
 import org.apache.zest.api.identity.Identity;
 import org.apache.zest.test.indexing.model.Nameable;
@@ -34,7 +36,6 @@ import static org.hamcrest.core.IsEqual.equalTo;
 import static org.hamcrest.core.IsNull.notNullValue;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
-import static org.apache.zest.functional.Iterables.toList;
 
 public class NameableAssert
 {
@@ -56,7 +57,8 @@ public class NameableAssert
                                     String... expectedNames
     )
     {
-        final List<EntityReference> references = toList( identitiesIterable );
+        final List<EntityReference> references = StreamSupport.stream( identitiesIterable.spliterator(), false )
+                                                              .collect( Collectors.toList() );
         assertThat( expectedNames.length + " entries(" + expectedNames.length + ", got " + getNames( references ) + ")",
                     references.size(),
                     equalTo( expectedNames.length ) );

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractCollectionSerializationTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractCollectionSerializationTest.java b/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractCollectionSerializationTest.java
index 15ad941..75a6d03 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractCollectionSerializationTest.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractCollectionSerializationTest.java
@@ -24,6 +24,7 @@ import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -40,7 +41,6 @@ import org.apache.zest.api.value.ValueBuilder;
 import org.apache.zest.api.value.ValueSerialization;
 import org.apache.zest.bootstrap.AssemblyException;
 import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.test.AbstractZestTest;
 import org.junit.Test;
 
@@ -50,7 +50,7 @@ import static org.junit.Assert.assertEquals;
 /**
  * Assert that ValueSerialization behaviour on Collections and Maps is correct.
  */
-// TODO How to assert that given a collection of valuecomposites when serializing and deserializing we have to OOME?
+// TODO How to assert that given a collection of valuecomposites when serializing and deserializing we have no OOME?
 public class AbstractCollectionSerializationTest
     extends AbstractZestTest
 {
@@ -96,7 +96,7 @@ public class AbstractCollectionSerializationTest
     public void givenIterableTypeWithByteAndNullElementWhenSerializingAndDeserializingExpectEquals()
         throws Exception
     {
-        String output = valueSerialization.serialize( Iterables.iterable( byteCollection().toArray() ) );
+        String output = valueSerialization.serialize( new AdHocIterable<>( byteCollection() ) );
         CollectionType collectionType = new CollectionType( List.class, new ValueType( Byte.class ) );
         List<Byte> list = valueSerialization.deserialize( module, collectionType, output );
         assertEquals( byteCollection(), list );
@@ -414,4 +414,20 @@ public class AbstractCollectionSerializationTest
         }
         return builder.newInstance();
     }
+
+    private static class AdHocIterable<T> implements Iterable<T>
+    {
+        private final Iterable<T> delegate;
+
+        private AdHocIterable( Iterable<T> delegate )
+        {
+            this.delegate = delegate;
+        }
+
+        @Override
+        public Iterator<T> iterator()
+        {
+            return delegate.iterator();
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/extensions/indexing-rdf/src/test/java/org/apache/zest/index/rdf/ContainsAllTest.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/src/test/java/org/apache/zest/index/rdf/ContainsAllTest.java b/extensions/indexing-rdf/src/test/java/org/apache/zest/index/rdf/ContainsAllTest.java
index 53dabc1..603d4a4 100644
--- a/extensions/indexing-rdf/src/test/java/org/apache/zest/index/rdf/ContainsAllTest.java
+++ b/extensions/indexing-rdf/src/test/java/org/apache/zest/index/rdf/ContainsAllTest.java
@@ -36,7 +36,6 @@ import org.apache.zest.api.value.ValueBuilderFactory;
 import org.apache.zest.api.value.ValueComposite;
 import org.apache.zest.bootstrap.AssemblyException;
 import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.index.rdf.assembly.RdfNativeSesameStoreAssembler;
 import org.apache.zest.library.fileconfig.FileConfigurationAssembler;
 import org.apache.zest.library.fileconfig.FileConfigurationOverride;
@@ -314,7 +313,7 @@ public class ContainsAllTest
 
         builder = builder.where( QueryExpressions.containsAll(
                 QueryExpressions.templateFor( ExampleEntity.class ).strings(),
-                Iterables.iterable( strings ) ) );
+                Arrays.asList( strings ) ) );
         return this.unitOfWorkFactory.currentUnitOfWork().newQuery( builder ).find();
     }
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/extensions/indexing-sql/src/main/java/org/apache/zest/index/sql/support/skeletons/AbstractSQLIndexing.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-sql/src/main/java/org/apache/zest/index/sql/support/skeletons/AbstractSQLIndexing.java b/extensions/indexing-sql/src/main/java/org/apache/zest/index/sql/support/skeletons/AbstractSQLIndexing.java
index ed7cbfb..e42d2c5 100644
--- a/extensions/indexing-sql/src/main/java/org/apache/zest/index/sql/support/skeletons/AbstractSQLIndexing.java
+++ b/extensions/indexing-sql/src/main/java/org/apache/zest/index/sql/support/skeletons/AbstractSQLIndexing.java
@@ -32,7 +32,8 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
 import javax.sql.DataSource;
 import org.apache.zest.api.ZestAPI;
 import org.apache.zest.api.common.QualifiedName;
@@ -47,7 +48,6 @@ import org.apache.zest.api.service.ServiceDescriptor;
 import org.apache.zest.api.structure.Application;
 import org.apache.zest.api.value.ValueComposite;
 import org.apache.zest.api.value.ValueDescriptor;
-import org.apache.zest.functional.Iterables;
 import org.apache.zest.index.sql.support.api.SQLIndexing;
 import org.apache.zest.index.sql.support.common.DBNames;
 import org.apache.zest.index.sql.support.common.QNameInfo;
@@ -172,14 +172,10 @@ public abstract class AbstractSQLIndexing
             Map<Long, EntityState> statesByPK = new HashMap<>();
             Map<Long, Integer> qNamePKs = new HashMap<>();
 
-            Iterable<EntityState> relatedStates = Iterables.filter( new Predicate<EntityState>()
-            {
-                @Override
-                public boolean test( EntityState item )
-                {
-                    return item.entityDescriptor().queryable();
-                }
-            }, Iterables.map( SQLCompatEntityStateWrapper.WRAP, changedStates ) );
+            Iterable<EntityState> relatedStates = StreamSupport.stream( changedStates.spliterator(), false )
+                                                               .filter( state -> state.entityDescriptor().queryable() )
+                                                               .map( SQLCompatEntityStateWrapper.WRAP )
+                                                               .collect( Collectors.toList() );
 
             for( EntityState eState : relatedStates )
             {

http://git-wip-us.apache.org/repos/asf/zest-java/blob/d91227a4/libraries/shiro-core/src/main/java/org/apache/zest/library/shiro/domain/permissions/RoleFactory.java
----------------------------------------------------------------------
diff --git a/libraries/shiro-core/src/main/java/org/apache/zest/library/shiro/domain/permissions/RoleFactory.java b/libraries/shiro-core/src/main/java/org/apache/zest/library/shiro/domain/permissions/RoleFactory.java
index 2de0b6d..9a3cc8d 100644
--- a/libraries/shiro-core/src/main/java/org/apache/zest/library/shiro/domain/permissions/RoleFactory.java
+++ b/libraries/shiro-core/src/main/java/org/apache/zest/library/shiro/domain/permissions/RoleFactory.java
@@ -26,7 +26,6 @@ import org.apache.zest.api.mixin.Mixins;
 import org.apache.zest.api.service.ServiceComposite;
 import org.apache.zest.api.unitofwork.UnitOfWork;
 import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.functional.Iterables;
 
 @Mixins( RoleFactory.Mixin.class )
 public interface RoleFactory
@@ -57,7 +56,7 @@ public interface RoleFactory
             EntityBuilder<Role> roleBuilder = uow.newEntityBuilder( Role.class );
             Role role = roleBuilder.instance();
             role.name().set( name );
-            role.permissions().set( Iterables.toList( permissions ) );
+            permissions.forEach( p -> role.permissions().get().add( p ) );
             return roleBuilder.newInstance();
         }