You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2015/07/31 04:58:43 UTC

[03/81] [abbrv] [partial] zest-java git commit: First round of changes to move to org.apache.zest namespace.

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/LayerAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/LayerAssemblyImpl.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/LayerAssemblyImpl.java
deleted file mode 100644
index 8853f92..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/LayerAssemblyImpl.java
+++ /dev/null
@@ -1,625 +0,0 @@
-/*
- * Copyright (c) 2007, Rickard Öberg. All Rights Reserved.
- * Copyright (c) 2012, Paul Merlin.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.bootstrap;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import org.qi4j.api.activation.Activator;
-import org.qi4j.api.common.MetaInfo;
-import org.qi4j.api.common.Visibility;
-import org.qi4j.api.service.ServiceImporter;
-import org.qi4j.api.structure.Layer;
-import org.qi4j.bootstrap.ApplicationAssembly;
-import org.qi4j.bootstrap.AssemblyVisitor;
-import org.qi4j.bootstrap.EntityAssembly;
-import org.qi4j.bootstrap.EntityDeclaration;
-import org.qi4j.bootstrap.ImportedServiceAssembly;
-import org.qi4j.bootstrap.ImportedServiceDeclaration;
-import org.qi4j.bootstrap.LayerAssembly;
-import org.qi4j.bootstrap.ModuleAssembly;
-import org.qi4j.bootstrap.ObjectAssembly;
-import org.qi4j.bootstrap.ObjectDeclaration;
-import org.qi4j.bootstrap.ServiceAssembly;
-import org.qi4j.bootstrap.ServiceDeclaration;
-import org.qi4j.bootstrap.TransientAssembly;
-import org.qi4j.bootstrap.TransientDeclaration;
-import org.qi4j.bootstrap.ValueAssembly;
-import org.qi4j.bootstrap.ValueDeclaration;
-import org.qi4j.functional.Specification;
-
-/**
- * Assembly of a Layer. From here you can create more ModuleAssemblies for
- * the Layer that is being assembled. It is also here that you define
- * what other Layers this Layer is using by calling {@link org.qi4j.runtime.bootstrap.LayerAssemblyImpl#uses()}.
- */
-public final class LayerAssemblyImpl
-    implements LayerAssembly
-{
-    private final ApplicationAssembly applicationAssembly;
-    private final HashMap<String, ModuleAssemblyImpl> moduleAssemblies;
-    private final Set<LayerAssembly> uses;
-
-    private String name;
-    private final MetaInfo metaInfo = new MetaInfo();
-    private final List<Class<? extends Activator<Layer>>> activators = new ArrayList<>();
-
-    public LayerAssemblyImpl( ApplicationAssembly applicationAssembly, String name )
-    {
-        this.applicationAssembly = applicationAssembly;
-        this.name = name;
-
-        moduleAssemblies = new LinkedHashMap<>();
-        uses = new LinkedHashSet<>();
-    }
-
-    @Override
-    public ModuleAssembly module( String name )
-    {
-        if( name != null )
-        {
-            ModuleAssemblyImpl existing = moduleAssemblies.get( name );
-            if( existing != null )
-            {
-                return existing;
-            }
-        }
-        ModuleAssemblyImpl moduleAssembly = new ModuleAssemblyImpl( this, name );
-        moduleAssemblies.put( name, moduleAssembly );
-        return moduleAssembly;
-    }
-
-    @Override
-    public ApplicationAssembly application()
-    {
-        return applicationAssembly;
-    }
-
-    @Override
-    public LayerAssembly setName( String name )
-    {
-        this.name = name;
-        return this;
-    }
-
-    @Override
-    public LayerAssembly setMetaInfo( Object info )
-    {
-        metaInfo.set( info );
-        return this;
-    }
-
-    @Override
-    public LayerAssembly uses( LayerAssembly... layerAssembly )
-        throws IllegalArgumentException
-    {
-        uses.addAll( Arrays.asList( layerAssembly ) );
-        return this;
-    }
-
-    @Override
-    @SafeVarargs
-    public final LayerAssembly withActivators( Class<? extends Activator<Layer>>... activators )
-    {
-        this.activators.addAll( Arrays.asList( activators ) );
-        return this;
-    }
-
-    @Override
-    public <ThrowableType extends Throwable> void visit( AssemblyVisitor<ThrowableType> visitor )
-        throws ThrowableType
-    {
-        visitor.visitLayer( this );
-        for( ModuleAssemblyImpl moduleAssembly : moduleAssemblies.values() )
-        {
-            moduleAssembly.visit( visitor );
-        }
-    }
-
-    @Override
-    public EntityDeclaration entities( Specification<? super EntityAssembly> specification )
-    {
-        final List<EntityDeclaration> declarations = new ArrayList<>();
-
-        for( ModuleAssemblyImpl moduleAssembly : moduleAssemblies.values() )
-        {
-            declarations.add( moduleAssembly.entities( specification ) );
-        }
-
-        return new EntityDeclaration()
-        {
-            @Override
-            public EntityDeclaration setMetaInfo( Object info )
-            {
-                for( EntityDeclaration declaration : declarations )
-                {
-                    declaration.setMetaInfo( info );
-                }
-                return this;
-            }
-
-            @Override
-            public EntityDeclaration visibleIn( Visibility visibility )
-            {
-                for( EntityDeclaration declaration : declarations )
-                {
-                    declaration.visibleIn( visibility );
-                }
-                return this;
-            }
-
-            @Override
-            public EntityDeclaration withConcerns( Class<?>... concerns )
-            {
-                for( EntityDeclaration declaration : declarations )
-                {
-                    declaration.withConcerns( concerns );
-                }
-                return this;
-            }
-
-            @Override
-            public EntityDeclaration withSideEffects( Class<?>... sideEffects )
-            {
-                for( EntityDeclaration declaration : declarations )
-                {
-                    declaration.withSideEffects( sideEffects );
-                }
-                return this;
-            }
-
-            @Override
-            public EntityDeclaration withMixins( Class<?>... mixins )
-            {
-                for( EntityDeclaration declaration : declarations )
-                {
-                    declaration.withMixins( mixins );
-                }
-                return this;
-            }
-
-            @Override
-            public EntityDeclaration withTypes( Class<?>... types )
-            {
-                for( EntityDeclaration declaration : declarations )
-                {
-                    declaration.withTypes( types );
-                }
-                return this;
-            }
-        };
-    }
-
-    @Override
-    public ServiceDeclaration services( Specification<? super ServiceAssembly> specification )
-    {
-        final List<ServiceDeclaration> declarations = new ArrayList<>();
-
-        for( ModuleAssemblyImpl moduleAssembly : moduleAssemblies.values() )
-        {
-            declarations.add( moduleAssembly.services( specification ) );
-        }
-
-        return new ServiceDeclaration()
-        {
-            @Override
-            public ServiceDeclaration setMetaInfo( Object serviceAttribute )
-            {
-                for( ServiceDeclaration declaration : declarations )
-                {
-                    declaration.setMetaInfo( serviceAttribute );
-                }
-                return this;
-            }
-
-            @Override
-            public ServiceDeclaration visibleIn( Visibility visibility )
-            {
-                for( ServiceDeclaration declaration : declarations )
-                {
-                    declaration.visibleIn( visibility );
-                }
-                return this;
-            }
-
-            @Override
-            public ServiceDeclaration withConcerns( Class<?>... concerns )
-            {
-                for( ServiceDeclaration declaration : declarations )
-                {
-                    declaration.withConcerns( concerns );
-                }
-                return this;
-            }
-
-            @Override
-            public ServiceDeclaration withSideEffects( Class<?>... sideEffects )
-            {
-                for( ServiceDeclaration declaration : declarations )
-                {
-                    declaration.withSideEffects( sideEffects );
-                }
-                return this;
-            }
-
-            @Override
-            public ServiceDeclaration withMixins( Class<?>... mixins )
-            {
-                for( ServiceDeclaration declaration : declarations )
-                {
-                    declaration.withMixins( mixins );
-                }
-                return this;
-            }
-
-            @Override
-            public ServiceDeclaration withTypes( Class<?>... types )
-            {
-                for( ServiceDeclaration declaration : declarations )
-                {
-                    declaration.withTypes( types );
-                }
-                return this;
-            }
-
-            @Override
-            @SafeVarargs
-            public final ServiceDeclaration withActivators( Class<? extends Activator<?>>... activators )
-            {
-                for( ServiceDeclaration declaration : declarations )
-                {
-                    declaration.withActivators( activators );
-                }
-                return this;
-            }
-
-            @Override
-            public ServiceDeclaration identifiedBy( String identity )
-            {
-                for( ServiceDeclaration declaration : declarations )
-                {
-                    declaration.identifiedBy( identity );
-                }
-                return this;
-            }
-
-            @Override
-            public ServiceDeclaration taggedWith( String... tags )
-            {
-                for( ServiceDeclaration declaration : declarations )
-                {
-                    declaration.taggedWith( tags );
-                }
-                return this;
-            }
-
-            @Override
-            public ServiceDeclaration instantiateOnStartup()
-            {
-                for( ServiceDeclaration declaration : declarations )
-                {
-                    declaration.instantiateOnStartup();
-                }
-
-                return this;
-            }
-        };
-    }
-
-    @Override
-    public TransientDeclaration transients( Specification<? super TransientAssembly> specification )
-    {
-        final List<TransientDeclaration> declarations = new ArrayList<>();
-
-        for( ModuleAssemblyImpl moduleAssembly : moduleAssemblies.values() )
-        {
-            declarations.add( moduleAssembly.transients( specification ) );
-        }
-
-        return new TransientDeclaration()
-        {
-            @Override
-            public TransientDeclaration setMetaInfo( Object info )
-            {
-                for( TransientDeclaration declaration : declarations )
-                {
-                    declaration.setMetaInfo( info );
-                }
-                return this;
-            }
-
-            @Override
-            public TransientDeclaration visibleIn( Visibility visibility )
-            {
-                for( TransientDeclaration declaration : declarations )
-                {
-                    declaration.visibleIn( visibility );
-                }
-                return this;
-            }
-
-            @Override
-            public TransientDeclaration withConcerns( Class<?>... concerns )
-            {
-                for( TransientDeclaration declaration : declarations )
-                {
-                    declaration.withConcerns( concerns );
-                }
-                return this;
-            }
-
-            @Override
-            public TransientDeclaration withSideEffects( Class<?>... sideEffects )
-            {
-                for( TransientDeclaration declaration : declarations )
-                {
-                    declaration.withSideEffects( sideEffects );
-                }
-                return this;
-            }
-
-            @Override
-            public TransientDeclaration withMixins( Class<?>... mixins )
-            {
-                for( TransientDeclaration declaration : declarations )
-                {
-                    declaration.withMixins( mixins );
-                }
-                return this;
-            }
-
-            @Override
-            public TransientDeclaration withTypes( Class<?>... types )
-            {
-                for( TransientDeclaration declaration : declarations )
-                {
-                    declaration.withTypes( types );
-                }
-                return this;
-            }
-        };
-    }
-
-    @Override
-    public ValueDeclaration values( Specification<? super ValueAssembly> specification )
-    {
-        final List<ValueDeclaration> declarations = new ArrayList<>();
-
-        for( ModuleAssemblyImpl moduleAssembly : moduleAssemblies.values() )
-        {
-            declarations.add( moduleAssembly.values( specification ) );
-        }
-        return new ValueDeclaration()
-        {
-            @Override
-            public ValueDeclaration setMetaInfo( Object info )
-            {
-                for( ValueDeclaration declaration : declarations )
-                {
-                    declaration.setMetaInfo( info );
-                }
-                return this;
-            }
-
-            @Override
-            public ValueDeclaration visibleIn( Visibility visibility )
-            {
-                for( ValueDeclaration declaration : declarations )
-                {
-                    declaration.visibleIn( visibility );
-                }
-                return this;
-            }
-
-            @Override
-            public ValueDeclaration withConcerns( Class<?>... concerns )
-            {
-                for( ValueDeclaration declaration : declarations )
-                {
-                    declaration.withConcerns( concerns );
-                }
-                return this;
-            }
-
-            @Override
-            public ValueDeclaration withSideEffects( Class<?>... sideEffects )
-            {
-                for( ValueDeclaration declaration : declarations )
-                {
-                    declaration.withSideEffects( sideEffects );
-                }
-                return this;
-            }
-
-            @Override
-            public ValueDeclaration withMixins( Class<?>... mixins )
-            {
-                for( ValueDeclaration declaration : declarations )
-                {
-                    declaration.withMixins( mixins );
-                }
-                return this;
-            }
-
-            @Override
-            public ValueDeclaration withTypes( Class<?>... types )
-            {
-                for( ValueDeclaration declaration : declarations )
-                {
-                    declaration.withTypes( types );
-                }
-                return this;
-            }
-        };
-    }
-
-    @Override
-    public ObjectDeclaration objects( Specification<? super ObjectAssembly> specification )
-    {
-        final List<ObjectDeclaration> declarations = new ArrayList<>();
-
-        for( ModuleAssemblyImpl moduleAssembly : moduleAssemblies.values() )
-        {
-            declarations.add( moduleAssembly.objects( specification ) );
-        }
-        return new ObjectDeclaration()
-        {
-            @Override
-            public ObjectDeclaration setMetaInfo( Object info )
-            {
-                for( ObjectDeclaration declaration : declarations )
-                {
-                    declaration.setMetaInfo( info );
-                }
-                return this;
-            }
-
-            @Override
-            public ObjectDeclaration visibleIn( Visibility visibility )
-                throws IllegalStateException
-            {
-                for( ObjectDeclaration declaration : declarations )
-                {
-                    declaration.visibleIn( visibility );
-                }
-                return this;
-            }
-        };
-    }
-
-    @Override
-    public ImportedServiceDeclaration importedServices( Specification<? super ImportedServiceAssembly> specification )
-    {
-        final List<ImportedServiceDeclaration> declarations = new ArrayList<>();
-
-        for( ModuleAssemblyImpl moduleAssembly : moduleAssemblies.values() )
-        {
-            declarations.add( moduleAssembly.importedServices( specification ) );
-        }
-        return new ImportedServiceDeclaration()
-        {
-
-            @Override
-            public ImportedServiceDeclaration importOnStartup()
-            {
-                for( ImportedServiceDeclaration declaration : declarations )
-                {
-                    declaration.importOnStartup();
-                }
-                return this;
-            }
-
-            @Override
-            public ImportedServiceDeclaration visibleIn( Visibility visibility )
-            {
-                for( ImportedServiceDeclaration declaration : declarations )
-                {
-                    declaration.visibleIn( visibility );
-                }
-                return this;
-            }
-
-            @Override
-            public ImportedServiceDeclaration importedBy( Class<? extends ServiceImporter> serviceImporterClass )
-            {
-                for( ImportedServiceDeclaration declaration : declarations )
-                {
-                    declaration.importedBy( serviceImporterClass );
-                }
-                return this;
-            }
-
-            @Override
-            public ImportedServiceDeclaration identifiedBy( String identity )
-            {
-                for( ImportedServiceDeclaration declaration : declarations )
-                {
-                    declaration.identifiedBy( identity );
-                }
-                return this;
-            }
-
-            @Override
-            public ImportedServiceDeclaration taggedWith( String... tags )
-            {
-                for( ImportedServiceDeclaration declaration : declarations )
-                {
-                    declaration.taggedWith( tags );
-                }
-                return this;
-            }
-
-            @Override
-            public ImportedServiceDeclaration setMetaInfo( Object serviceAttribute )
-            {
-                for( ImportedServiceDeclaration declaration : declarations )
-                {
-                    declaration.setMetaInfo( serviceAttribute );
-                }
-                return this;
-            }
-
-            @Override
-            @SafeVarargs
-            public final ImportedServiceDeclaration withActivators( Class<? extends Activator<?>>... activators )
-            {
-                for( ImportedServiceDeclaration declaration : declarations )
-                {
-                    declaration.withActivators( activators );
-                }
-                return this;
-            }
-
-        };
-    }
-
-    Collection<ModuleAssemblyImpl> moduleAssemblies()
-    {
-        return moduleAssemblies.values();
-    }
-
-    Set<LayerAssembly> uses()
-    {
-        return uses;
-    }
-
-    public MetaInfo metaInfo()
-    {
-        return metaInfo;
-    }
-
-    @Override
-    public String name()
-    {
-        return name;
-    }
-
-    public List<Class<? extends Activator<Layer>>> activators()
-    {
-        return activators;
-    }
-
-    @Override
-    public final String toString()
-    {
-        return "LayerAssembly [" + name + "]";
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ModuleAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ModuleAssemblyImpl.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ModuleAssemblyImpl.java
deleted file mode 100644
index 1f470dc..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ModuleAssemblyImpl.java
+++ /dev/null
@@ -1,635 +0,0 @@
-/*
- * Copyright (c) 2007, Rickard Öberg. All Rights Reserved.
- * Copyright (c) 2012, Paul Merlin.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.bootstrap;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.qi4j.api.activation.Activator;
-import org.qi4j.api.common.MetaInfo;
-import org.qi4j.api.common.Visibility;
-import org.qi4j.api.composite.TransientComposite;
-import org.qi4j.api.entity.EntityComposite;
-import org.qi4j.api.entity.Identity;
-import org.qi4j.api.service.DuplicateServiceIdentityException;
-import org.qi4j.api.service.ServiceImporter;
-import org.qi4j.api.structure.Module;
-import org.qi4j.api.type.HasTypes;
-import org.qi4j.api.type.MatchTypeSpecification;
-import org.qi4j.api.value.ValueComposite;
-import org.qi4j.bootstrap.AssemblyException;
-import org.qi4j.bootstrap.AssemblySpecifications;
-import org.qi4j.bootstrap.AssemblyVisitor;
-import org.qi4j.bootstrap.ConfigurationDeclaration;
-import org.qi4j.bootstrap.EntityAssembly;
-import org.qi4j.bootstrap.EntityDeclaration;
-import org.qi4j.bootstrap.ImportedServiceAssembly;
-import org.qi4j.bootstrap.ImportedServiceDeclaration;
-import org.qi4j.bootstrap.LayerAssembly;
-import org.qi4j.bootstrap.MetaInfoDeclaration;
-import org.qi4j.bootstrap.MixinDeclaration;
-import org.qi4j.bootstrap.ModuleAssembly;
-import org.qi4j.bootstrap.ObjectAssembly;
-import org.qi4j.bootstrap.ObjectDeclaration;
-import org.qi4j.bootstrap.ServiceAssembly;
-import org.qi4j.bootstrap.ServiceDeclaration;
-import org.qi4j.bootstrap.TransientAssembly;
-import org.qi4j.bootstrap.TransientDeclaration;
-import org.qi4j.bootstrap.ValueAssembly;
-import org.qi4j.bootstrap.ValueDeclaration;
-import org.qi4j.functional.Iterables;
-import org.qi4j.functional.Specification;
-import org.qi4j.functional.Specifications;
-import org.qi4j.runtime.activation.ActivatorsModel;
-import org.qi4j.runtime.composite.TransientModel;
-import org.qi4j.runtime.composite.TransientsModel;
-import org.qi4j.runtime.entity.EntitiesModel;
-import org.qi4j.runtime.entity.EntityModel;
-import org.qi4j.runtime.object.ObjectModel;
-import org.qi4j.runtime.object.ObjectsModel;
-import org.qi4j.runtime.service.ImportedServiceModel;
-import org.qi4j.runtime.service.ImportedServicesModel;
-import org.qi4j.runtime.service.ServiceModel;
-import org.qi4j.runtime.service.ServicesModel;
-import org.qi4j.runtime.structure.ModuleModel;
-import org.qi4j.runtime.value.ValueModel;
-import org.qi4j.runtime.value.ValuesModel;
-
-import static org.qi4j.functional.Iterables.first;
-import static org.qi4j.functional.Iterables.iterable;
-
-/**
- * Assembly of a Module. This is where you register all objects, Composites,
- * Services. Each "add" method returns a declaration that you can use to add
- * additional information and metadata. If you call an "add" method with many
- * parameters then the declared metadata will apply to all types in the method
- * call.
- */
-public final class ModuleAssemblyImpl
-    implements ModuleAssembly
-{
-    private final LayerAssembly layerAssembly;
-    private String name;
-    private final MetaInfo metaInfo = new MetaInfo();
-    private final List<Class<? extends Activator<Module>>> activators = new ArrayList<>();
-
-    private final List<ServiceAssemblyImpl> serviceAssemblies = new ArrayList<>();
-    private final Map<Class<?>, ImportedServiceAssemblyImpl> importedServiceAssemblies = new LinkedHashMap<>();
-    private final Map<Class<? extends EntityComposite>, EntityAssemblyImpl> entityAssemblies = new LinkedHashMap<>();
-    private final Map<Class<? extends ValueComposite>, ValueAssemblyImpl> valueAssemblies = new LinkedHashMap<>();
-    private final Map<Class<? extends TransientComposite>, TransientAssemblyImpl> transientAssemblies = new LinkedHashMap<>();
-    private final Map<Class<?>, ObjectAssemblyImpl> objectAssemblies = new LinkedHashMap<>();
-
-    private final MetaInfoDeclaration metaInfoDeclaration = new MetaInfoDeclaration();
-
-    public ModuleAssemblyImpl( LayerAssembly layerAssembly, String name )
-    {
-        this.layerAssembly = layerAssembly;
-        this.name = name;
-    }
-
-    @Override
-    public LayerAssembly layer()
-    {
-        return layerAssembly;
-    }
-
-    @Override
-    public ModuleAssembly module( String layerName, String moduleName )
-    {
-        return layerAssembly.application().module( layerName, moduleName );
-    }
-
-    @Override
-    public ModuleAssembly setName( String name )
-    {
-        this.name = name;
-        return this;
-    }
-
-    @Override
-    public String name()
-    {
-        return name;
-    }
-
-    public ModuleAssembly setMetaInfo( Object info )
-    {
-        metaInfo.set( info );
-        return this;
-    }
-
-    @Override
-    @SafeVarargs
-    public final ModuleAssembly withActivators( Class<? extends Activator<Module>>... activators )
-    {
-        this.activators.addAll( Arrays.asList( activators ) );
-        return this;
-    }
-
-    @Override
-    @SuppressWarnings( {"raw", "unchecked"} )
-    public ValueDeclaration values( Class<?>... valueTypes )
-    {
-        List<ValueAssemblyImpl> assemblies = new ArrayList<>();
-
-        for( Class valueType : valueTypes )
-        {
-            if( valueAssemblies.containsKey( valueType ) )
-            {
-                assemblies.add( valueAssemblies.get( valueType ) );
-            }
-            else
-            {
-                ValueAssemblyImpl valueAssembly = new ValueAssemblyImpl( valueType );
-                valueAssemblies.put( valueType, valueAssembly );
-                assemblies.add( valueAssembly );
-            }
-        }
-
-        return new ValueDeclarationImpl( assemblies );
-    }
-
-    @Override
-    public ValueDeclaration values( Specification<? super ValueAssembly> specification )
-    {
-        List<ValueAssemblyImpl> assemblies = new ArrayList<>();
-        for( ValueAssemblyImpl transientAssembly : valueAssemblies.values() )
-        {
-            if( specification.satisfiedBy( transientAssembly ) )
-            {
-                assemblies.add( transientAssembly );
-            }
-        }
-
-        return new ValueDeclarationImpl( assemblies );
-    }
-
-    @Override
-    @SuppressWarnings( {"raw", "unchecked"} )
-    public TransientDeclaration transients( Class<?>... transientTypes )
-    {
-        List<TransientAssemblyImpl> assemblies = new ArrayList<>();
-
-        for( Class valueType : transientTypes )
-        {
-            if( transientAssemblies.containsKey( valueType ) )
-            {
-                assemblies.add( transientAssemblies.get( valueType ) );
-            }
-            else
-            {
-                TransientAssemblyImpl transientAssembly = new TransientAssemblyImpl( valueType );
-                transientAssemblies.put( valueType, transientAssembly );
-                assemblies.add( transientAssembly );
-            }
-        }
-
-        return new TransientDeclarationImpl( assemblies );
-    }
-
-    @Override
-    public TransientDeclaration transients( Specification<? super TransientAssembly> specification )
-    {
-        List<TransientAssemblyImpl> assemblies = new ArrayList<>();
-        for( TransientAssemblyImpl transientAssembly : transientAssemblies.values() )
-        {
-            if( specification.satisfiedBy( transientAssembly ) )
-            {
-                assemblies.add( transientAssembly );
-            }
-        }
-
-        return new TransientDeclarationImpl( assemblies );
-    }
-
-    @Override
-    @SuppressWarnings( {"raw", "unchecked"} )
-    public EntityDeclaration entities( Class<?>... entityTypes )
-    {
-        List<EntityAssemblyImpl> assemblies = new ArrayList<>();
-
-        for( Class entityType : entityTypes )
-        {
-            if( entityAssemblies.containsKey( entityType ) )
-            {
-                assemblies.add( entityAssemblies.get( entityType ) );
-            }
-            else
-            {
-                EntityAssemblyImpl entityAssembly = new EntityAssemblyImpl( entityType );
-                entityAssemblies.put( entityType, entityAssembly );
-                assemblies.add( entityAssembly );
-            }
-        }
-
-        return new EntityDeclarationImpl( assemblies );
-    }
-
-    @Override
-    public EntityDeclaration entities( Specification<? super EntityAssembly> specification )
-    {
-        List<EntityAssemblyImpl> assemblies = new ArrayList<>();
-        for( EntityAssemblyImpl entityAssembly : entityAssemblies.values() )
-        {
-            if( specification.satisfiedBy( entityAssembly ) )
-            {
-                assemblies.add( entityAssembly );
-            }
-        }
-
-        return new EntityDeclarationImpl( assemblies );
-    }
-
-    @Override
-    public ConfigurationDeclaration configurations( Class<?>... configurationTypes )
-    {
-        List<EntityAssemblyImpl> entityAssemblyList = new ArrayList<>();
-
-        for( Class entityType : configurationTypes )
-        {
-            if( this.entityAssemblies.containsKey( entityType ) )
-            {
-                entityAssemblyList.add( this.entityAssemblies.get( entityType ) );
-            }
-            else
-            {
-                EntityAssemblyImpl entityAssembly = new EntityAssemblyImpl( entityType );
-                this.entityAssemblies.put( entityType, entityAssembly );
-                entityAssemblyList.add( entityAssembly );
-            }
-        }
-
-        List<ValueAssemblyImpl> valueAssemblyList = new ArrayList<>();
-
-        for( Class valueType : configurationTypes )
-        {
-            if( valueAssemblies.containsKey( valueType ) )
-            {
-                valueAssemblyList.add( valueAssemblies.get( valueType ) );
-            }
-            else
-            {
-                ValueAssemblyImpl valueAssembly = new ValueAssemblyImpl( valueType );
-                valueAssemblies.put( valueType, valueAssembly );
-                valueAssemblyList.add( valueAssembly );
-                valueAssembly.types.add( Identity.class );
-            }
-        }
-
-        return new ConfigurationDeclarationImpl( entityAssemblyList, valueAssemblyList  );
-    }
-
-    @Override
-    public ConfigurationDeclaration configurations( Specification<HasTypes> specification )
-    {
-        Specification<HasTypes> isConfigurationComposite = new MatchTypeSpecification( Identity.class );
-        specification = Specifications.and( specification, isConfigurationComposite );
-        List<EntityAssemblyImpl> entityAssmblyList = new ArrayList<>();
-        for( EntityAssemblyImpl entityAssembly : entityAssemblies.values() )
-        {
-            if( specification.satisfiedBy( entityAssembly ) )
-            {
-                entityAssmblyList.add( entityAssembly );
-            }
-        }
-        List<ValueAssemblyImpl> valueAssemblyList = new ArrayList<>();
-        for( ValueAssemblyImpl transientAssembly : valueAssemblies.values() )
-        {
-            if( specification.satisfiedBy( transientAssembly ) )
-            {
-                valueAssemblyList.add( transientAssembly );
-            }
-        }
-        return new ConfigurationDeclarationImpl( entityAssmblyList, valueAssemblyList );
-    }
-
-    @Override
-    public ObjectDeclaration objects( Class<?>... objectTypes )
-        throws AssemblyException
-    {
-        List<ObjectAssemblyImpl> assemblies = new ArrayList<>();
-
-        for( Class<?> objectType : objectTypes )
-        {
-            if( objectType.isInterface() )
-            {
-                throw new AssemblyException( "Interfaces can not be Zest Objects." );
-            }
-            if( objectAssemblies.containsKey( objectType ) )
-            {
-                assemblies.add( objectAssemblies.get( objectType ) );
-            }
-            else
-            {
-                ObjectAssemblyImpl objectAssembly = new ObjectAssemblyImpl( objectType );
-                objectAssemblies.put( objectType, objectAssembly );
-                assemblies.add( objectAssembly );
-            }
-        }
-
-        return new ObjectDeclarationImpl( assemblies );
-    }
-
-    @Override
-    public ObjectDeclaration objects( Specification<? super ObjectAssembly> specification )
-    {
-        List<ObjectAssemblyImpl> assemblies = new ArrayList<>();
-        for( ObjectAssemblyImpl objectAssembly : objectAssemblies.values() )
-        {
-            if( specification.satisfiedBy( objectAssembly ) )
-            {
-                assemblies.add( objectAssembly );
-            }
-        }
-
-        return new ObjectDeclarationImpl( assemblies );
-    }
-
-    @Override
-    public ServiceDeclaration addServices( Class<?>... serviceTypes )
-    {
-        List<ServiceAssemblyImpl> assemblies = new ArrayList<>();
-
-        for( Class<?> serviceType : serviceTypes )
-        {
-            ServiceAssemblyImpl serviceAssembly = new ServiceAssemblyImpl( serviceType );
-            serviceAssemblies.add( serviceAssembly );
-            assemblies.add( serviceAssembly );
-        }
-
-        return new ServiceDeclarationImpl( assemblies );
-    }
-
-    @Override
-    public ServiceDeclaration services( Class<?>... serviceTypes )
-    {
-        List<ServiceAssemblyImpl> assemblies = new ArrayList<>();
-
-        for( Class<?> serviceType : serviceTypes )
-        {
-            if( Iterables.matchesAny( AssemblySpecifications.types( serviceType ), serviceAssemblies ) )
-            {
-                Iterables.addAll( assemblies, Iterables.filter( AssemblySpecifications.types( serviceType ), serviceAssemblies ) );
-            }
-            else
-            {
-                ServiceAssemblyImpl serviceAssembly = new ServiceAssemblyImpl( serviceType );
-                serviceAssemblies.add( serviceAssembly );
-                assemblies.add( serviceAssembly );
-            }
-        }
-
-        return new ServiceDeclarationImpl( assemblies );
-    }
-
-    @Override
-    public ServiceDeclaration services( Specification<? super ServiceAssembly> specification )
-    {
-        List<ServiceAssemblyImpl> assemblies = new ArrayList<>();
-        for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
-        {
-            if( specification.satisfiedBy( serviceAssembly ) )
-            {
-                assemblies.add( serviceAssembly );
-            }
-        }
-
-        return new ServiceDeclarationImpl( assemblies );
-    }
-
-    @Override
-    public ImportedServiceDeclaration importedServices( Class<?>... serviceTypes )
-    {
-        List<ImportedServiceAssemblyImpl> assemblies = new ArrayList<>();
-
-        for( Class<?> serviceType : serviceTypes )
-        {
-            if( importedServiceAssemblies.containsKey( serviceType ) )
-            {
-                assemblies.add( importedServiceAssemblies.get( serviceType ) );
-            }
-            else
-            {
-                ImportedServiceAssemblyImpl serviceAssembly = new ImportedServiceAssemblyImpl( serviceType, this );
-                importedServiceAssemblies.put( serviceType, serviceAssembly );
-                assemblies.add( serviceAssembly );
-            }
-        }
-
-        return new ImportedServiceDeclarationImpl( assemblies );
-    }
-
-    @Override
-    public ImportedServiceDeclaration importedServices( Specification<? super ImportedServiceAssembly> specification )
-    {
-        List<ImportedServiceAssemblyImpl> assemblies = new ArrayList<>();
-        for( ImportedServiceAssemblyImpl objectAssembly : importedServiceAssemblies.values() )
-        {
-            if( specification.satisfiedBy( objectAssembly ) )
-            {
-                assemblies.add( objectAssembly );
-            }
-        }
-
-        return new ImportedServiceDeclarationImpl( assemblies );
-    }
-
-    @Override
-    public <T> MixinDeclaration<T> forMixin( Class<T> mixinType )
-    {
-        return metaInfoDeclaration.on( mixinType );
-    }
-
-    @Override
-    public <ThrowableType extends Throwable> void visit( AssemblyVisitor<ThrowableType> visitor )
-        throws ThrowableType
-    {
-        visitor.visitModule( this );
-
-        for( TransientAssemblyImpl compositeDeclaration : transientAssemblies.values() )
-        {
-            visitor.visitComposite( new TransientDeclarationImpl( iterable( compositeDeclaration ) ) );
-        }
-
-        for( EntityAssemblyImpl entityDeclaration : entityAssemblies.values() )
-        {
-            visitor.visitEntity( new EntityDeclarationImpl( iterable( entityDeclaration ) ) );
-        }
-
-        for( ObjectAssemblyImpl objectDeclaration : objectAssemblies.values() )
-        {
-            visitor.visitObject( new ObjectDeclarationImpl( iterable( objectDeclaration ) ) );
-        }
-
-        for( ServiceAssemblyImpl serviceDeclaration : serviceAssemblies )
-        {
-            visitor.visitService( new ServiceDeclarationImpl( iterable( serviceDeclaration ) ) );
-        }
-
-        for( ImportedServiceAssemblyImpl importedServiceDeclaration : importedServiceAssemblies.values() )
-        {
-            visitor.visitImportedService( new ImportedServiceDeclarationImpl( iterable( importedServiceDeclaration ) ) );
-        }
-
-        for( ValueAssemblyImpl valueDeclaration : valueAssemblies.values() )
-        {
-            visitor.visitValue( new ValueDeclarationImpl( iterable( valueDeclaration ) ) );
-        }
-    }
-
-    ModuleModel assembleModule( AssemblyHelper helper )
-        throws AssemblyException
-    {
-        List<TransientModel> transientModels = new ArrayList<>();
-        List<ObjectModel> objectModels = new ArrayList<>();
-        List<ValueModel> valueModels = new ArrayList<>();
-        List<ServiceModel> serviceModels = new ArrayList<>();
-        List<ImportedServiceModel> importedServiceModels = new ArrayList<>();
-
-        if( name == null )
-        {
-            throw new AssemblyException( "Module must have name set" );
-        }
-
-        for( TransientAssemblyImpl compositeDeclaration : transientAssemblies.values() )
-        {
-            transientModels.add( compositeDeclaration.newTransientModel( metaInfoDeclaration, helper ) );
-        }
-
-        for( ValueAssemblyImpl valueDeclaration : valueAssemblies.values() )
-        {
-            valueModels.add( valueDeclaration.newValueModel( metaInfoDeclaration, helper ) );
-        }
-
-        List<EntityModel> entityModels = new ArrayList<>();
-        for( EntityAssemblyImpl entityDeclaration : entityAssemblies.values() )
-        {
-            entityModels.add( entityDeclaration.newEntityModel( metaInfoDeclaration, 
-                                                                metaInfoDeclaration, 
-                                                                metaInfoDeclaration, 
-                                                                metaInfoDeclaration, 
-                                                                helper ) );
-        }
-
-        for( ObjectAssemblyImpl objectDeclaration : objectAssemblies.values() )
-        {
-            objectDeclaration.addObjectModel( objectModels );
-        }
-
-        for( ServiceAssemblyImpl serviceDeclaration : serviceAssemblies )
-        {
-            if( serviceDeclaration.identity == null )
-            {
-                serviceDeclaration.identity = generateId( serviceDeclaration.types() );
-            }
-
-            serviceModels.add( serviceDeclaration.newServiceModel( metaInfoDeclaration, helper ) );
-        }
-
-        for( ImportedServiceAssemblyImpl importedServiceDeclaration : importedServiceAssemblies.values() )
-        {
-            importedServiceDeclaration.addImportedServiceModel( importedServiceModels );
-        }
-
-        ModuleModel moduleModel = new ModuleModel( name,
-                                                   metaInfo,
-                                                   new ActivatorsModel<>( activators ),
-                                                   new TransientsModel( transientModels ),
-                                                   new EntitiesModel( entityModels ),
-                                                   new ObjectsModel( objectModels ),
-                                                   new ValuesModel( valueModels ),
-                                                   new ServicesModel( serviceModels ),
-                                                   new ImportedServicesModel( importedServiceModels ) );
-
-        // Check for duplicate service identities
-        Set<String> identities = new HashSet<>();
-        for( ServiceModel serviceModel : serviceModels )
-        {
-            String identity = serviceModel.identity();
-            if( identities.contains( identity ) )
-            {
-                throw new DuplicateServiceIdentityException(
-                    "Duplicated service identity: " + identity + " in module " + moduleModel.name()
-                );
-            }
-            identities.add( identity );
-        }
-        for( ImportedServiceModel serviceModel : importedServiceModels )
-        {
-            String identity = serviceModel.identity();
-            if( identities.contains( identity ) )
-            {
-                throw new DuplicateServiceIdentityException(
-                    "Duplicated service identity: " + identity + " in module " + moduleModel.name()
-                );
-            }
-            identities.add( identity );
-        }
-
-        for( ImportedServiceModel importedServiceModel : importedServiceModels )
-        {
-            boolean found = false;
-            for( ObjectModel objectModel : objectModels )
-            {
-                if( first( objectModel.types() ).equals( importedServiceModel.serviceImporter() ) )
-                {
-                    found = true;
-                    break;
-                }
-            }
-            if( !found )
-            {
-                @SuppressWarnings( "raw" )
-                Class<? extends ServiceImporter> serviceFactoryType = importedServiceModel.serviceImporter();
-                ObjectModel objectModel = new ObjectModel( serviceFactoryType, Visibility.module, new MetaInfo() );
-                objectModels.add( objectModel );
-            }
-        }
-
-        return moduleModel;
-    }
-
-    private String generateId( Iterable<Class<?>> serviceTypes )
-    {
-        // Find service identity that is not yet used
-        Class<?> serviceType = serviceTypes.iterator()
-            .next(); // Use the first Iterable, which *SHOULD* be the main serviceType
-        int idx = 0;
-        String id = serviceType.getSimpleName();
-        boolean invalid;
-        do
-        {
-            invalid = false;
-            for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
-            {
-                if( serviceAssembly.identity() != null && serviceAssembly.identity().equals( id ) )
-                {
-                    idx++;
-                    id = serviceType.getSimpleName() + "_" + idx;
-                    invalid = true;
-                    break;
-                }
-            }
-        }
-        while( invalid );
-        return id;
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ObjectAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ObjectAssemblyImpl.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ObjectAssemblyImpl.java
deleted file mode 100644
index 71475aa..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ObjectAssemblyImpl.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2007, Rickard Öberg. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.bootstrap;
-
-import java.lang.reflect.Modifier;
-import java.util.List;
-import org.qi4j.api.common.InvalidApplicationException;
-import org.qi4j.api.common.MetaInfo;
-import org.qi4j.api.common.Visibility;
-import org.qi4j.api.composite.Composite;
-import org.qi4j.bootstrap.ObjectAssembly;
-import org.qi4j.functional.Iterables;
-import org.qi4j.runtime.object.ObjectModel;
-
-/**
- * Assembly of an Object.
- */
-public final class ObjectAssemblyImpl
-    implements ObjectAssembly
-{
-    private Class<?> objectType;
-    MetaInfo metaInfo = new MetaInfo();
-    Visibility visibility = Visibility.module;
-
-    public ObjectAssemblyImpl( Class<?> clazz )
-    {
-        // best try to find out if the class is a concrete class
-        if( clazz.isEnum() ||
-            ( !Composite.class.isAssignableFrom( clazz ) && Modifier.isAbstract( clazz.getModifiers() ) ) )
-        {
-            throw new IllegalArgumentException( "Declared objects must be concrete classes: " + clazz );
-        }
-        this.objectType = clazz;
-    }
-
-    @Override
-    public Iterable<Class<?>> types()
-    {
-        return Iterables.<Class<?>>iterable( objectType );
-    }
-
-    void addObjectModel( List<ObjectModel> objectModels )
-    {
-        try
-        {
-            ObjectModel objectModel = new ObjectModel( objectType, visibility, metaInfo );
-            objectModels.add( objectModel );
-        }
-        catch( Throwable e )
-        {
-            throw new InvalidApplicationException( "Could not register " + objectType.getName(), e );
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ObjectDeclarationImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ObjectDeclarationImpl.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ObjectDeclarationImpl.java
deleted file mode 100644
index c06032e..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ObjectDeclarationImpl.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2007, Rickard Öberg. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.bootstrap;
-
-import org.qi4j.api.common.Visibility;
-import org.qi4j.bootstrap.ObjectDeclaration;
-
-/**
- * Declaration of an Object. Created by {@link org.qi4j.runtime.bootstrap.ModuleAssemblyImpl#objects(Class[])}.
- */
-public final class ObjectDeclarationImpl
-    implements ObjectDeclaration
-{
-    private final Iterable<ObjectAssemblyImpl> assemblies;
-
-    public ObjectDeclarationImpl( Iterable<ObjectAssemblyImpl> assemblies )
-    {
-        this.assemblies = assemblies;
-    }
-
-    @Override
-    public ObjectDeclaration setMetaInfo( Object info )
-    {
-        for( ObjectAssemblyImpl assembly : assemblies )
-        {
-            assembly.metaInfo.set( info );
-        }
-        return this;
-    }
-
-    @Override
-    public ObjectDeclaration visibleIn( Visibility visibility )
-        throws IllegalStateException
-    {
-        for( ObjectAssemblyImpl assembly : assemblies )
-        {
-            assembly.visibility = visibility;
-        }
-        return this;
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/OrAppliesToFilter.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/OrAppliesToFilter.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/OrAppliesToFilter.java
deleted file mode 100644
index e50b748..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/OrAppliesToFilter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2008, Rickard Öberg. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.bootstrap;
-
-import java.lang.reflect.Method;
-import org.qi4j.api.common.AppliesToFilter;
-
-/**
- * JAVADOC
- */
-final class OrAppliesToFilter
-    implements AppliesToFilter
-{
-    private final AppliesToFilter left;
-    private final AppliesToFilter right;
-
-    OrAppliesToFilter( AppliesToFilter left, AppliesToFilter right )
-    {
-        this.left = left;
-        this.right = right;
-    }
-
-    @Override
-    public boolean appliesTo( Method method, Class<?> mixin, Class<?> compositeType, Class<?> fragmentClass )
-    {
-        return left.appliesTo( method, mixin, compositeType, fragmentClass ) ||
-               right.appliesTo( method, mixin, compositeType, fragmentClass );
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ServiceAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ServiceAssemblyImpl.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ServiceAssemblyImpl.java
deleted file mode 100644
index 1adbfe6..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ServiceAssemblyImpl.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2007, Rickard Öberg. All Rights Reserved.
- * Copyright (c) 2012, Paul Merlin.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.qi4j.runtime.bootstrap;
-
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.List;
-import org.qi4j.api.activation.Activator;
-import org.qi4j.api.activation.Activators;
-import org.qi4j.api.common.InvalidApplicationException;
-import org.qi4j.api.service.ServiceComposite;
-import org.qi4j.api.util.Annotations;
-import org.qi4j.api.util.Classes;
-import org.qi4j.bootstrap.ServiceAssembly;
-import org.qi4j.bootstrap.StateDeclarations;
-import org.qi4j.functional.Function;
-import org.qi4j.functional.Iterables;
-import org.qi4j.runtime.activation.ActivatorsModel;
-import org.qi4j.runtime.service.ServiceModel;
-
-/**
- * Assembly of a Service.
- */
-public final class ServiceAssemblyImpl extends CompositeAssemblyImpl
-    implements ServiceAssembly
-{
-    String identity;
-    boolean instantiateOnStartup = false;
-    List<Class<? extends Activator<?>>> activators = new ArrayList<>();
-
-    public ServiceAssemblyImpl( Class<?> serviceType )
-    {
-        super( serviceType );
-        // The composite must always implement ServiceComposite, as a marker interface
-        if( !ServiceComposite.class.isAssignableFrom( serviceType ) )
-        {
-            types.add( ServiceComposite.class );
-        }
-    }
-
-    @Override
-    public String identity()
-    {
-        return identity;
-    }
-
-    @SuppressWarnings( {"raw", "unchecked"} )
-    ServiceModel newServiceModel( StateDeclarations stateDeclarations, AssemblyHelper helper )
-    {
-        try
-        {
-            buildComposite( helper, stateDeclarations );
-            List<Class<? extends Activator<?>>> activatorClasses = Iterables.toList(
-                    Iterables.<Class<? extends Activator<?>>>flatten( activators, activatorsDeclarations( types ) ) );
-            return new ServiceModel( types, visibility, metaInfo,
-                                     new ActivatorsModel( activatorClasses ),
-                                     mixinsModel, stateModel, compositeMethodsModel,
-                                     identity, instantiateOnStartup );
-        }
-        catch( Exception e )
-        {
-            throw new InvalidApplicationException( "Could not register " + types, e );
-        }
-    }
-    
-    private Iterable<Class<? extends Activator<?>>> activatorsDeclarations( Iterable<? extends Class<?>> typess )
-    {
-        // Find activator declarations
-        ArrayList<Type> allTypes = new ArrayList<>();
-        for( Class<?> type : typess )
-        {
-            Iterable<Type> types = Classes.typesOf( type );
-            Iterables.addAll( allTypes, types );
-        }
-        // Find all activators and flattern them into an iterable
-        Function<Type, Iterable<Class<? extends Activator<?>>>> function = new Function<Type, Iterable<Class<? extends Activator<?>>>>()
-        {
-            @Override
-            public Iterable<Class<? extends Activator<?>>> map( Type type )
-            {
-                Activators activators = Annotations.annotationOn( type, Activators.class );
-                if( activators == null )
-                {
-                    return Iterables.empty();
-                }
-                else
-                {
-                    return Iterables.iterable( activators.value() );
-                }
-            }
-        };
-        Iterable<Class<? extends Activator<?>>> flatten = Iterables.flattenIterables( Iterables.map( function, allTypes ) );
-        return Iterables.toList( flatten );
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ServiceDeclarationImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ServiceDeclarationImpl.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ServiceDeclarationImpl.java
deleted file mode 100644
index 34e1f6d..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ServiceDeclarationImpl.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (c) 2007, Rickard Öberg. All Rights Reserved.
- * Copyright (c) 2012, Paul Merlin.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.bootstrap;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.qi4j.api.activation.Activator;
-import org.qi4j.api.common.Visibility;
-import org.qi4j.api.service.qualifier.ServiceTags;
-import org.qi4j.bootstrap.ServiceDeclaration;
-
-import static java.util.Arrays.asList;
-
-/**
- * Declaration of a Service. Created by {@link org.qi4j.runtime.bootstrap.ModuleAssemblyImpl#services(Class[])}.
- */
-public final class ServiceDeclarationImpl
-    implements ServiceDeclaration
-{
-    private final Iterable<ServiceAssemblyImpl> serviceAssemblies;
-
-    public ServiceDeclarationImpl( Iterable<ServiceAssemblyImpl> serviceAssemblies )
-    {
-        this.serviceAssemblies = serviceAssemblies;
-    }
-
-    @Override
-    public ServiceDeclaration visibleIn( Visibility visibility )
-    {
-        for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
-        {
-            serviceAssembly.visibility = visibility;
-        }
-        return this;
-    }
-
-    @Override
-    public ServiceDeclaration identifiedBy( String identity )
-    {
-        for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
-        {
-            serviceAssembly.identity = identity;
-        }
-        return this;
-    }
-
-    @Override
-    public ServiceDeclaration taggedWith( String... tags )
-    {
-        for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
-        {
-            ServiceTags previousTags = serviceAssembly.metaInfo.get( ServiceTags.class );
-            if( previousTags != null )
-            {
-                List<String> tagList = new ArrayList<>();
-                tagList.addAll( asList( previousTags.tags() ) );
-                tagList.addAll( asList( tags ) );
-                serviceAssembly.metaInfo.set( new ServiceTags( tagList.toArray( new String[ tagList.size() ] ) ) );
-            }
-            else
-            {
-                serviceAssembly.metaInfo.set( new ServiceTags( tags ) );
-            }
-        }
-
-        return this;
-    }
-
-    @Override
-    public ServiceDeclaration instantiateOnStartup()
-    {
-        for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
-        {
-            serviceAssembly.instantiateOnStartup = true;
-        }
-        return this;
-    }
-
-    @Override
-    public ServiceDeclaration setMetaInfo( Object serviceAttribute )
-    {
-        for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
-        {
-            serviceAssembly.metaInfo.set( serviceAttribute );
-        }
-        return this;
-    }
-
-    @Override
-    public ServiceDeclaration withConcerns( Class<?>... concerns )
-    {
-        for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
-        {
-            serviceAssembly.concerns.addAll( asList( concerns ) );
-        }
-        return this;
-    }
-
-    @Override
-    public ServiceDeclaration withSideEffects( Class<?>... sideEffects )
-    {
-        for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
-        {
-            serviceAssembly.sideEffects.addAll( asList( sideEffects ) );
-        }
-        return this;
-    }
-
-    @Override
-    public ServiceDeclaration withMixins( Class<?>... mixins )
-    {
-        for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
-        {
-            serviceAssembly.mixins.addAll( asList( mixins ) );
-        }
-        return this;
-    }
-
-    @Override
-    public ServiceDeclaration withTypes( Class<?>... types )
-    {
-        for( ServiceAssemblyImpl serviceAssembly : serviceAssemblies )
-        {
-            serviceAssembly.types.addAll( asList( types ) );
-        }
-        return this;
-    }
-
-    @Override
-    @SafeVarargs
-    public final ServiceDeclaration withActivators( Class<? extends Activator<?>>... activators )
-    {
-        for ( ServiceAssemblyImpl serviceAssembly : serviceAssemblies ) {
-            serviceAssembly.activators.addAll( asList( activators ) );
-        }
-        return this;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TransientAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TransientAssemblyImpl.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TransientAssemblyImpl.java
deleted file mode 100644
index dfc9721..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TransientAssemblyImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2007, Rickard Öberg. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.bootstrap;
-
-import org.qi4j.api.common.InvalidApplicationException;
-import org.qi4j.api.composite.TransientComposite;
-import org.qi4j.bootstrap.StateDeclarations;
-import org.qi4j.bootstrap.TransientAssembly;
-import org.qi4j.runtime.composite.TransientModel;
-
-/**
- * Declaration of a TransientComposite.
- */
-public final class TransientAssemblyImpl extends CompositeAssemblyImpl
-    implements TransientAssembly
-{
-    public TransientAssemblyImpl( Class<?> transientType )
-    {
-        super( transientType );
-
-        // The composite must always implement TransientComposite, as a marker interface
-        if( !TransientComposite.class.isAssignableFrom( transientType ) )
-        {
-            types.add( TransientComposite.class );
-        }
-
-        // If type is a class, register it as a mixin
-        if( !transientType.isInterface() )
-        {
-            mixins.add( transientType );
-        }
-    }
-
-    TransientModel newTransientModel( StateDeclarations stateDeclarations, AssemblyHelper helper )
-    {
-        try
-        {
-            buildComposite( helper, stateDeclarations );
-            TransientModel transientModel = new TransientModel(
-                types, visibility, metaInfo, mixinsModel, stateModel, compositeMethodsModel );
-
-            return transientModel;
-        }
-        catch( Exception e )
-        {
-            throw new InvalidApplicationException( "Could not register " + types, e );
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TransientDeclarationImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TransientDeclarationImpl.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TransientDeclarationImpl.java
deleted file mode 100644
index 9a9154f..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TransientDeclarationImpl.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2007, Rickard Öberg. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.bootstrap;
-
-import org.qi4j.api.common.Visibility;
-import org.qi4j.bootstrap.TransientDeclaration;
-
-import static java.util.Arrays.asList;
-
-/**
- * Declaration of a Composite. Created by {@link org.qi4j.bootstrap.ModuleAssembly#transients(Class[])}.
- */
-public final class TransientDeclarationImpl
-    implements TransientDeclaration
-{
-    private final Iterable<TransientAssemblyImpl> assemblies;
-
-    public TransientDeclarationImpl( Iterable<TransientAssemblyImpl> assemblies )
-    {
-        this.assemblies = assemblies;
-    }
-
-    @Override
-    public TransientDeclaration setMetaInfo( Object info )
-    {
-        for( TransientAssemblyImpl assembly : assemblies )
-        {
-            assembly.metaInfo.set( info );
-        }
-        return this;
-    }
-
-    @Override
-    public TransientDeclaration visibleIn( Visibility visibility )
-    {
-        for( TransientAssemblyImpl assembly : assemblies )
-        {
-            assembly.visibility = visibility;
-        }
-        return this;
-    }
-
-    @Override
-    public TransientDeclaration withConcerns( Class<?>... concerns )
-    {
-        for( TransientAssemblyImpl assembly : assemblies )
-        {
-            assembly.concerns.addAll( asList( concerns ) );
-        }
-        return this;
-    }
-
-    @Override
-    public TransientDeclaration withSideEffects( Class<?>... sideEffects )
-    {
-        for( TransientAssemblyImpl assembly : assemblies )
-        {
-            assembly.sideEffects.addAll( asList( sideEffects ) );
-        }
-        return this;
-    }
-
-    @Override
-    public TransientDeclaration withMixins( Class<?>... mixins )
-    {
-        for( TransientAssemblyImpl assembly : assemblies )
-        {
-            assembly.mixins.addAll( asList( mixins ) );
-        }
-        return this;
-    }
-
-    @Override
-    public TransientDeclaration withTypes( Class<?>... types )
-    {
-        for( TransientAssemblyImpl assembly : assemblies )
-        {
-            assembly.types.addAll( asList( types ) );
-        }
-        return this;
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TypeCheckAppliesToFilter.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TypeCheckAppliesToFilter.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TypeCheckAppliesToFilter.java
deleted file mode 100644
index dee1993..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TypeCheckAppliesToFilter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2008, Rickard Öberg. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.bootstrap;
-
-import java.lang.reflect.Method;
-import org.qi4j.api.common.AppliesToFilter;
-
-/**
- * JAVADOC
- */
-final class TypeCheckAppliesToFilter
-    implements AppliesToFilter
-{
-    @SuppressWarnings( "raw" )
-    private final Class type;
-
-    @SuppressWarnings( "raw" )
-    TypeCheckAppliesToFilter( Class type )
-    {
-        this.type = type;
-    }
-
-    @Override
-    @SuppressWarnings( "unchecked" )
-    public boolean appliesTo( Method method, Class<?> mixin, Class<?> compositeType, Class<?> fragmentClass )
-    {
-        return type.isAssignableFrom( compositeType );
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TypedFragmentAppliesToFilter.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TypedFragmentAppliesToFilter.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TypedFragmentAppliesToFilter.java
deleted file mode 100644
index e007697..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/TypedFragmentAppliesToFilter.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2008, Rickard Öberg. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.bootstrap;
-
-import java.lang.reflect.Method;
-import org.qi4j.api.common.AppliesToFilter;
-
-/**
- * JAVADOC
- */
-final class TypedFragmentAppliesToFilter
-    implements AppliesToFilter
-{
-    @Override
-    public boolean appliesTo( Method method, Class<?> mixin, Class<?> compositeType, Class<?> fragmentClass )
-    {
-        return method.getDeclaringClass().isAssignableFrom( fragmentClass );
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ValueAssemblyImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ValueAssemblyImpl.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ValueAssemblyImpl.java
deleted file mode 100644
index 605efa1..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ValueAssemblyImpl.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright (c) 2007-2011, Rickard Öberg. All Rights Reserved.
- * Copyright (c) 2014, Paul Merlin. All Rights Reserved.
- *
- * Licensed  under the  Apache License,  Version 2.0  (the "License");
- * you may not use  this file  except in  compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed  under the  License is distributed on an "AS IS" BASIS,
- * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
- * implied.
- *
- * See the License for the specific language governing permissions and
- * limitations under the License. 
- */
-package org.qi4j.runtime.bootstrap;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Member;
-import org.qi4j.api.association.Association;
-import org.qi4j.api.association.GenericAssociationInfo;
-import org.qi4j.api.association.ManyAssociation;
-import org.qi4j.api.association.NamedAssociation;
-import org.qi4j.api.common.InvalidApplicationException;
-import org.qi4j.api.common.MetaInfo;
-import org.qi4j.api.common.Optional;
-import org.qi4j.api.common.QualifiedName;
-import org.qi4j.api.common.UseDefaults;
-import org.qi4j.api.constraint.Constraint;
-import org.qi4j.api.property.GenericPropertyInfo;
-import org.qi4j.api.property.Property;
-import org.qi4j.api.util.Annotations;
-import org.qi4j.api.util.Classes;
-import org.qi4j.api.value.ValueComposite;
-import org.qi4j.bootstrap.StateDeclarations;
-import org.qi4j.bootstrap.ValueAssembly;
-import org.qi4j.runtime.association.AssociationModel;
-import org.qi4j.runtime.association.AssociationsModel;
-import org.qi4j.runtime.association.ManyAssociationModel;
-import org.qi4j.runtime.association.ManyAssociationsModel;
-import org.qi4j.runtime.association.NamedAssociationModel;
-import org.qi4j.runtime.association.NamedAssociationsModel;
-import org.qi4j.runtime.composite.StateModel;
-import org.qi4j.runtime.composite.ValueConstraintsInstance;
-import org.qi4j.runtime.composite.ValueConstraintsModel;
-import org.qi4j.runtime.property.PropertyModel;
-import org.qi4j.runtime.value.ValueModel;
-import org.qi4j.runtime.value.ValueStateModel;
-
-import static org.qi4j.api.util.Annotations.isType;
-import static org.qi4j.api.util.Classes.typeOf;
-import static org.qi4j.functional.Iterables.filter;
-import static org.qi4j.functional.Iterables.first;
-
-/**
- * Declaration of a ValueComposite.
- */
-public final class ValueAssemblyImpl
-    extends CompositeAssemblyImpl
-    implements ValueAssembly
-{
-    private AssociationsModel associationsModel;
-    private ManyAssociationsModel manyAssociationsModel;
-    private NamedAssociationsModel namedAssociationsModel;
-
-    public ValueAssemblyImpl( Class<?> compositeType )
-    {
-        super( compositeType );
-        // The composite must always implement ValueComposite, as a marker interface
-        if( !ValueComposite.class.isAssignableFrom( compositeType ) )
-        {
-            types.add( ValueComposite.class );
-        }
-    }
-
-    @Override
-    protected StateModel createStateModel()
-    {
-        return new ValueStateModel( propertiesModel, associationsModel, manyAssociationsModel, namedAssociationsModel );
-    }
-
-    ValueModel newValueModel(
-        StateDeclarations stateDeclarations,
-        AssemblyHelper helper
-    )
-    {
-        try
-        {
-            associationsModel = new AssociationsModel();
-            manyAssociationsModel = new ManyAssociationsModel();
-            namedAssociationsModel = new NamedAssociationsModel();
-            buildComposite( helper, stateDeclarations );
-
-            ValueModel valueModel = new ValueModel(
-                types, visibility, metaInfo, mixinsModel, (ValueStateModel) stateModel, compositeMethodsModel );
-
-            return valueModel;
-        }
-        catch( Exception e )
-        {
-            throw new InvalidApplicationException( "Could not register " + types, e );
-        }
-    }
-
-    @Override
-    protected void addStateFor( AccessibleObject accessor,
-                                Iterable<Class<? extends Constraint<?, ?>>> constraintClasses
-    )
-    {
-        String stateName = QualifiedName.fromAccessor( accessor ).name();
-
-        if( registeredStateNames.contains( stateName ) )
-        {
-            return; // Skip already registered names
-        }
-
-        Class<?> accessorType = Classes.RAW_CLASS.map( typeOf( accessor ) );
-        if( Property.class.isAssignableFrom( accessorType ) )
-        {
-            propertiesModel.addProperty( newPropertyModel( accessor, constraintClasses ) );
-            registeredStateNames.add( stateName );
-        }
-        else if( Association.class.isAssignableFrom( accessorType ) )
-        {
-            associationsModel.addAssociation( newAssociationModel( accessor, constraintClasses ) );
-            registeredStateNames.add( stateName );
-        }
-        else if( ManyAssociation.class.isAssignableFrom( accessorType ) )
-        {
-            manyAssociationsModel.addManyAssociation( newManyAssociationModel( accessor, constraintClasses ) );
-            registeredStateNames.add( stateName );
-        }
-        else if( NamedAssociation.class.isAssignableFrom( accessorType ) )
-        {
-            namedAssociationsModel.addNamedAssociation( newNamedAssociationModel( accessor, constraintClasses ) );
-            registeredStateNames.add( stateName );
-        }
-    }
-
-    @Override
-    protected PropertyModel newPropertyModel( AccessibleObject accessor,
-                                              Iterable<Class<? extends Constraint<?, ?>>> constraintClasses
-    )
-    {
-        Iterable<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor );
-        boolean optional = first( filter( isType( Optional.class ), annotations ) ) != null;
-        ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericPropertyInfo.propertyTypeOf( accessor ), ( (Member) accessor )
-            .getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance valueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            valueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
-        MetaInfo metaInfo = stateDeclarations.metaInfoFor( accessor );
-        boolean useDefaults = metaInfo.get( UseDefaults.class ) != null || stateDeclarations.useDefaults( accessor );
-        Object initialValue = stateDeclarations.initialValueOf( accessor );
-        return new PropertyModel( accessor, true, useDefaults, valueConstraintsInstance, metaInfo, initialValue );
-    }
-
-    public AssociationModel newAssociationModel( AccessibleObject accessor,
-                                                 Iterable<Class<? extends Constraint<?, ?>>> constraintClasses
-    )
-    {
-        Iterable<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor );
-        boolean optional = first( filter( isType( Optional.class ), annotations ) ) != null;
-
-        // Constraints for Association references
-        ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericAssociationInfo
-            .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance valueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            valueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
-
-        // Constraints for the Association itself
-        valueConstraintsModel = constraintsFor( annotations, Association.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance associationValueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            associationValueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
-
-        MetaInfo metaInfo = stateDeclarations.metaInfoFor( accessor );
-        AssociationModel associationModel = new AssociationModel( accessor, valueConstraintsInstance, associationValueConstraintsInstance, metaInfo );
-        return associationModel;
-    }
-
-    public ManyAssociationModel newManyAssociationModel( AccessibleObject accessor,
-                                                         Iterable<Class<? extends Constraint<?, ?>>> constraintClasses
-    )
-    {
-        Iterable<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor );
-        boolean optional = first( filter( isType( Optional.class ), annotations ) ) != null;
-
-        // Constraints for entities in ManyAssociation
-        ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericAssociationInfo
-            .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance valueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            valueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
-
-        // Constraints for the ManyAssociation itself
-        valueConstraintsModel = constraintsFor( annotations, ManyAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance manyValueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            manyValueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
-        MetaInfo metaInfo = stateDeclarations.metaInfoFor( accessor );
-        ManyAssociationModel associationModel = new ManyAssociationModel( accessor, valueConstraintsInstance, manyValueConstraintsInstance, metaInfo );
-        return associationModel;
-    }
-    
-    public NamedAssociationModel newNamedAssociationModel( AccessibleObject accessor,
-                                                           Iterable<Class<? extends Constraint<?, ?>>> constraintClasses
-    )
-    {
-        Iterable<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn( accessor );
-        boolean optional = first( filter( isType( Optional.class ), annotations ) ) != null;
-
-        // Constraints for entities in NamedAssociation
-        ValueConstraintsModel valueConstraintsModel = constraintsFor( annotations, GenericAssociationInfo
-            .associationTypeOf( accessor ), ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance valueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            valueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
-
-        // Constraints for the NamedAssociation itself
-        valueConstraintsModel = constraintsFor( annotations, NamedAssociation.class, ( (Member) accessor ).getName(), optional, constraintClasses, accessor );
-        ValueConstraintsInstance namedValueConstraintsInstance = null;
-        if( valueConstraintsModel.isConstrained() )
-        {
-            namedValueConstraintsInstance = valueConstraintsModel.newInstance();
-        }
-        MetaInfo metaInfo = stateDeclarations.metaInfoFor( accessor );
-        NamedAssociationModel associationModel = new NamedAssociationModel( accessor, valueConstraintsInstance, namedValueConstraintsInstance, metaInfo );
-        return associationModel;
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ValueDeclarationImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ValueDeclarationImpl.java b/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ValueDeclarationImpl.java
deleted file mode 100644
index 22169bf..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/bootstrap/ValueDeclarationImpl.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2007, Rickard Öberg. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.bootstrap;
-
-import org.qi4j.api.common.Visibility;
-import org.qi4j.bootstrap.ValueDeclaration;
-
-import static java.util.Arrays.asList;
-
-/**
- * Declaration of a ValueComposite.
- */
-public final class ValueDeclarationImpl
-    implements ValueDeclaration
-{
-    private final Iterable<ValueAssemblyImpl> assemblies;
-
-    public ValueDeclarationImpl( Iterable<ValueAssemblyImpl> assemblies )
-    {
-        this.assemblies = assemblies;
-    }
-
-    @Override
-    public ValueDeclaration setMetaInfo( Object info )
-    {
-        for( ValueAssemblyImpl assembly : assemblies )
-        {
-            assembly.metaInfo.set( info );
-        }
-        return this;
-    }
-
-    @Override
-    public ValueDeclaration visibleIn( Visibility visibility )
-    {
-        for( ValueAssemblyImpl assembly : assemblies )
-        {
-            assembly.visibility = visibility;
-        }
-        return this;
-    }
-
-    @Override
-    public ValueDeclaration withConcerns( Class<?>... concerns )
-    {
-        for( ValueAssemblyImpl assembly : assemblies )
-        {
-            assembly.concerns.addAll( asList( concerns ) );
-        }
-        return this;
-    }
-
-    @Override
-    public ValueDeclaration withSideEffects( Class<?>... sideEffects )
-    {
-        for( ValueAssemblyImpl assembly : assemblies )
-        {
-            assembly.sideEffects.addAll( asList( sideEffects ) );
-        }
-        return this;
-    }
-
-    @Override
-    public ValueDeclaration withMixins( Class<?>... mixins )
-    {
-        for( ValueAssemblyImpl assembly : assemblies )
-        {
-            assembly.mixins.addAll( asList( mixins ) );
-        }
-        return this;
-    }
-
-    @Override
-    public ValueDeclaration withTypes( Class<?>... types )
-    {
-        for( ValueAssemblyImpl assembly : assemblies )
-        {
-            assembly.types.addAll( asList( types ) );
-        }
-        return this;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/061ddaa0/core/runtime/src/main/java/org/qi4j/runtime/composite/AbstractConstraintModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/composite/AbstractConstraintModel.java b/core/runtime/src/main/java/org/qi4j/runtime/composite/AbstractConstraintModel.java
deleted file mode 100644
index d9ffbbd..0000000
--- a/core/runtime/src/main/java/org/qi4j/runtime/composite/AbstractConstraintModel.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2008, Rickard Öberg. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.qi4j.runtime.composite;
-
-import java.lang.annotation.Annotation;
-import org.qi4j.api.constraint.ConstraintDescriptor;
-import org.qi4j.functional.Visitable;
-import org.qi4j.functional.Visitor;
-
-/**
- * JAVADOC
- */
-public abstract class AbstractConstraintModel
-    implements ConstraintDescriptor, Visitable<ConstraintDescriptor>
-{
-    protected final Annotation annotation;
-
-    public AbstractConstraintModel( Annotation annotation )
-    {
-        this.annotation = annotation;
-    }
-
-    @Override
-    public Annotation annotation()
-    {
-        return annotation;
-    }
-
-    public abstract ConstraintInstance<?, ?> newInstance();
-
-    @Override
-    public <ThrowableType extends Throwable> boolean accept( Visitor<? super ConstraintDescriptor, ThrowableType> modelVisitor )
-        throws ThrowableType
-    {
-        return modelVisitor.visit( this );
-    }
-}
\ No newline at end of file