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:47:30 UTC
[11/51] [abbrv] [partial] zest-java git commit: Revert "First round
of changes to move to org.apache.zest namespace."
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityModel.java b/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityModel.java
deleted file mode 100644
index aa45b18..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityModel.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 2008, Rickard Öberg. All Rights Reserved.
- * Copyright (c) 2008, Niclas Hedhman. 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.apache.zest.runtime.entity;
-
-import java.lang.reflect.Method;
-import org.apache.zest.api.association.AssociationDescriptor;
-import org.apache.zest.api.common.ConstructionException;
-import org.apache.zest.api.common.MetaInfo;
-import org.apache.zest.api.common.Visibility;
-import org.apache.zest.api.composite.CompositeInstance;
-import org.apache.zest.api.constraint.ConstraintViolationException;
-import org.apache.zest.api.entity.EntityDescriptor;
-import org.apache.zest.api.entity.EntityReference;
-import org.apache.zest.api.entity.Identity;
-import org.apache.zest.api.entity.Queryable;
-import org.apache.zest.api.property.PropertyDescriptor;
-import org.apache.zest.api.property.StateHolder;
-import org.apache.zest.api.unitofwork.EntityCompositeAlreadyExistsException;
-import org.apache.zest.api.util.Annotations;
-import org.apache.zest.functional.Iterables;
-import org.apache.zest.runtime.composite.CompositeMethodsModel;
-import org.apache.zest.runtime.composite.CompositeModel;
-import org.apache.zest.runtime.property.PropertyModel;
-import org.apache.zest.runtime.structure.ModuleUnitOfWork;
-import org.apache.zest.spi.entity.EntityState;
-import org.apache.zest.spi.entitystore.EntityAlreadyExistsException;
-import org.apache.zest.spi.entitystore.EntityStoreException;
-import org.apache.zest.spi.entitystore.EntityStoreUnitOfWork;
-import org.apache.zest.spi.module.ModuleSpi;
-
-import static org.apache.zest.functional.Iterables.filter;
-import static org.apache.zest.functional.Iterables.first;
-import static org.apache.zest.functional.Iterables.flattenIterables;
-import static org.apache.zest.functional.Iterables.map;
-
-/**
- * JAVADOC
- */
-public final class EntityModel
- extends CompositeModel
- implements EntityDescriptor
-{
- private static final Method IDENTITY_METHOD;
-
- static
- {
- try
- {
- IDENTITY_METHOD = Identity.class.getMethod( "identity" );
- }
- catch( NoSuchMethodException e )
- {
- throw new InternalError( "Zest Core Runtime codebase is corrupted. Contact Zest team: ModuleUnitOfWork" );
- }
- }
-
- private final boolean queryable;
-
- public EntityModel( Iterable<Class<?>> types,
- Visibility visibility,
- MetaInfo info,
- EntityMixinsModel mixinsModel,
- EntityStateModel stateModel,
- CompositeMethodsModel compositeMethodsModel
- )
- {
- super( types, visibility, info, mixinsModel, stateModel, compositeMethodsModel );
-
- final Queryable queryable = first( Iterables.<Queryable>cast(
- filter( Annotations.isType( Queryable.class ),
- flattenIterables( map( Annotations.ANNOTATIONS_OF, types ) ) ) ) );
- this.queryable = queryable == null || queryable.value();
- }
-
- @Override
- public boolean queryable()
- {
- return queryable;
- }
-
- @Override
- public EntityStateModel state()
- {
- return (EntityStateModel) super.state();
- }
-
- public EntityInstance newInstance( ModuleUnitOfWork uow, ModuleSpi moduleInstance, EntityState state )
- {
- EntityInstance instance = new EntityInstance( uow, moduleInstance, this, state );
- return instance;
- }
-
- public Object[] newMixinHolder()
- {
- return mixinsModel.newMixinHolder();
- }
-
- public Object newMixin( Object[] mixins,
- EntityStateInstance entityState,
- EntityInstance entityInstance,
- Method method
- )
- {
- return ( (EntityMixinsModel) mixinsModel ).newMixin( entityInstance, entityState, mixins, method );
- }
-
- public EntityState newEntityState( EntityStoreUnitOfWork store, ModuleSpi module, EntityReference identity )
- throws ConstraintViolationException, EntityStoreException
- {
- try
- {
- // New EntityState
- EntityState entityState = store.newEntityState( module, identity, this );
-
- // Set identity property
- PropertyDescriptor persistentPropertyDescriptor = state().propertyModelFor( IDENTITY_METHOD );
- entityState.setPropertyValue( persistentPropertyDescriptor.qualifiedName(), identity.identity() );
-
- return entityState;
- }
- catch( EntityAlreadyExistsException e )
- {
- throw new EntityCompositeAlreadyExistsException( identity );
- }
- catch( EntityStoreException e )
- {
- throw new ConstructionException( "Could not create new entity in store", e );
- }
- }
-
- public void initState( ModuleSpi module, EntityState entityState )
- {
- // Set new properties to default value
- for( PropertyModel propertyDescriptor : state().properties() )
- {
- entityState.setPropertyValue( propertyDescriptor.qualifiedName(), propertyDescriptor.initialValue( module ) );
- }
-
- // Set new associations to null
- for( AssociationDescriptor associationDescriptor : state().associations() )
- {
- entityState.setAssociationValue( associationDescriptor.qualifiedName(), null );
- }
-
- // Set new many-associations to empty
- for( AssociationDescriptor associationDescriptor : state().manyAssociations() )
- {
- entityState.manyAssociationValueOf( associationDescriptor.qualifiedName() );
- }
-
- // Set new named-associations to empty
- for( AssociationDescriptor associationDescriptor : state().namedAssociations() )
- {
- entityState.namedAssociationValueOf( associationDescriptor.qualifiedName() );
- }
- }
-
- public void invokeLifecycle( boolean create, Object[] mixins, CompositeInstance instance, StateHolder state )
- {
- ( (EntityMixinsModel) mixinsModel ).invokeLifecycle( create, mixins, instance, state );
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityPropertyInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityPropertyInstance.java b/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityPropertyInstance.java
deleted file mode 100644
index 5ac473f..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityPropertyInstance.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2007, Rickard Öberg. All Rights Reserved.
- * Copyright (c) 2008, Edward Yakop. 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.apache.zest.runtime.entity;
-
-import org.apache.zest.runtime.property.PropertyInfo;
-import org.apache.zest.runtime.property.PropertyInstance;
-import org.apache.zest.spi.entity.EntityState;
-
-/**
- * {@code EntityPropertyInstance} represents a property whose value must be backed by an EntityState.
- */
-public class EntityPropertyInstance<T>
- extends PropertyInstance<T>
-{
- private final EntityState entityState;
-
- /**
- * Construct an instance of {@code PropertyInstance} with the specified arguments.
- *
- * @param aPropertyInfo The property info. This argument must not be {@code null}.
- * @param entityState EntityState
- */
- @SuppressWarnings( "unchecked" )
- public EntityPropertyInstance( PropertyInfo aPropertyInfo, EntityState entityState )
- {
- super( aPropertyInfo, (T) entityState.propertyValueOf( aPropertyInfo.qualifiedName() ) );
- this.entityState = entityState;
- }
-
- /**
- * Sets this property value.
- *
- * @param aNewValue The new value.
- */
- @Override
- public void set( T aNewValue )
- {
- super.set( aNewValue );
- entityState.setPropertyValue( model.qualifiedName(), aNewValue );
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityStateInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityStateInstance.java b/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityStateInstance.java
deleted file mode 100644
index fe528b3..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityStateInstance.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Copyright (c) 2008-2011, Rickard Öberg. All Rights Reserved.
- * Copyright (c) 2008-2013, Niclas Hedhman. 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.apache.zest.runtime.entity;
-
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Type;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.zest.api.association.Association;
-import org.apache.zest.api.association.AssociationDescriptor;
-import org.apache.zest.api.association.AssociationStateHolder;
-import org.apache.zest.api.association.ManyAssociation;
-import org.apache.zest.api.association.NamedAssociation;
-import org.apache.zest.api.entity.EntityReference;
-import org.apache.zest.api.property.Property;
-import org.apache.zest.api.property.PropertyDescriptor;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.util.Classes;
-import org.apache.zest.functional.Function;
-import org.apache.zest.functional.Function2;
-import org.apache.zest.functional.Iterables;
-import org.apache.zest.runtime.association.AssociationInstance;
-import org.apache.zest.runtime.association.AssociationModel;
-import org.apache.zest.runtime.association.ManyAssociationInstance;
-import org.apache.zest.runtime.association.ManyAssociationModel;
-import org.apache.zest.runtime.association.NamedAssociationInstance;
-import org.apache.zest.runtime.association.NamedAssociationModel;
-import org.apache.zest.runtime.composite.ConstraintsCheck;
-import org.apache.zest.runtime.property.PropertyModel;
-import org.apache.zest.runtime.unitofwork.BuilderEntityState;
-import org.apache.zest.spi.entity.EntityState;
-
-/**
- * TODO
- */
-public final class EntityStateInstance
- implements AssociationStateHolder
-{
- private Map<AccessibleObject, Object> state;
-
- private final EntityStateModel stateModel;
- private EntityState entityState;
- private final Function2<EntityReference, Type, Object> entityFunction;
-
- public EntityStateInstance( EntityStateModel stateModel, final UnitOfWork uow, EntityState entityState )
- {
- this.stateModel = stateModel;
- this.entityState = entityState;
-
- entityFunction = new Function2<EntityReference, Type, Object>()
- {
- @Override
- public Object map( EntityReference entityReference, Type type )
- {
- return uow.get( Classes.RAW_CLASS.map( type ), entityReference.identity() );
- }
- };
- }
-
- @Override
- @SuppressWarnings( "unchecked" )
- public <T> Property<T> propertyFor( AccessibleObject accessor )
- throws IllegalArgumentException
- {
- Map<AccessibleObject, Object> state = state();
-
- Property<T> property = (Property<T>) state.get( accessor );
-
- if( property == null )
- {
- PropertyModel entityPropertyModel = stateModel.propertyModelFor( accessor );
- property = new EntityPropertyInstance<>(
- entityState instanceof BuilderEntityState
- ? entityPropertyModel.getBuilderInfo()
- : entityPropertyModel,
- entityState );
- state.put( accessor, property );
- }
-
- return property;
- }
-
- @Override
- public Iterable<Property<?>> properties()
- {
- return Iterables.map( new Function<PropertyDescriptor, Property<?>>()
- {
- @Override
- public Property<?> map( PropertyDescriptor propertyDescriptor )
- {
- return propertyFor( propertyDescriptor.accessor() );
- }
- }, stateModel.properties() );
- }
-
- @Override
- @SuppressWarnings( "unchecked" )
- public <T> Association<T> associationFor( AccessibleObject accessor )
- throws IllegalArgumentException
- {
- Map<AccessibleObject, Object> state = state();
- Association<T> association = (Association<T>) state.get( accessor );
-
- if( association == null )
- {
- final AssociationModel associationModel = stateModel.getAssociation( accessor );
- association = new AssociationInstance<>(
- entityState instanceof BuilderEntityState
- ? associationModel.getBuilderInfo()
- : associationModel,
- entityFunction,
- new Property<EntityReference>()
- {
- @Override
- public EntityReference get()
- {
- return entityState.associationValueOf( associationModel.qualifiedName() );
- }
-
- @Override
- public void set( EntityReference newValue )
- throws IllegalArgumentException, IllegalStateException
- {
- entityState.setAssociationValue( associationModel.qualifiedName(), newValue );
- }
- } );
- state.put( accessor, association );
- }
-
- return association;
- }
-
- @Override
- public Iterable<Association<?>> allAssociations()
- {
- return Iterables.map( new Function<AssociationDescriptor, Association<?>>()
- {
- @Override
- public Association<?> map( AssociationDescriptor associationDescriptor )
- {
- return associationFor( associationDescriptor.accessor() );
- }
- }, stateModel.associations() );
- }
-
- @Override
- @SuppressWarnings( "unchecked" )
- public <T> ManyAssociation<T> manyAssociationFor( AccessibleObject accessor )
- {
- Map<AccessibleObject, Object> state = state();
-
- ManyAssociation<T> manyAssociation = (ManyAssociation<T>) state.get( accessor );
-
- if( manyAssociation == null )
- {
- ManyAssociationModel associationModel = stateModel.getManyAssociation( accessor );
- manyAssociation = new ManyAssociationInstance<>(
- entityState instanceof BuilderEntityState
- ? associationModel.getBuilderInfo()
- : associationModel,
- entityFunction,
- entityState.manyAssociationValueOf( associationModel.qualifiedName() ) );
- state.put( accessor, manyAssociation );
- }
-
- return manyAssociation;
- }
-
- @Override
- public Iterable<ManyAssociation<?>> allManyAssociations()
- {
- return Iterables.map( new Function<AssociationDescriptor, ManyAssociation<?>>()
- {
- @Override
- public ManyAssociation<?> map( AssociationDescriptor associationDescriptor )
- {
- return manyAssociationFor( associationDescriptor.accessor() );
- }
- }, stateModel.manyAssociations() );
- }
-
- @Override
- @SuppressWarnings( "unchecked" )
- public <T> NamedAssociation<T> namedAssociationFor( AccessibleObject accessor )
- {
- Map<AccessibleObject, Object> state = state();
-
- NamedAssociation<T> namedAssociation = (NamedAssociation<T>) state.get( accessor );
-
- if( namedAssociation == null )
- {
- NamedAssociationModel associationModel = stateModel.getNamedAssociation( accessor );
- namedAssociation = new NamedAssociationInstance<>(
- entityState instanceof BuilderEntityState
- ? associationModel.getBuilderInfo()
- : associationModel,
- entityFunction,
- entityState.namedAssociationValueOf( associationModel.qualifiedName() ) );
- state.put( accessor, namedAssociation );
- }
-
- return namedAssociation;
- }
-
- @Override
- public Iterable<? extends NamedAssociation<?>> allNamedAssociations()
- {
- return Iterables.map( new Function<AssociationDescriptor, NamedAssociation<?>>()
- {
- @Override
- public NamedAssociation<?> map( AssociationDescriptor associationDescriptor )
- {
- return namedAssociationFor( associationDescriptor.accessor() );
- }
- }, stateModel.namedAssociations() );
- }
-
- public void checkConstraints()
- {
- for( PropertyDescriptor propertyDescriptor : stateModel.properties() )
- {
- ConstraintsCheck constraints = (ConstraintsCheck) propertyDescriptor;
- Property<Object> property = this.propertyFor( propertyDescriptor.accessor() );
- constraints.checkConstraints( property.get() );
- }
-
- for( AssociationDescriptor associationDescriptor : stateModel.associations() )
- {
- ConstraintsCheck constraints = (ConstraintsCheck) associationDescriptor;
- Association<Object> association = this.associationFor( associationDescriptor.accessor() );
- constraints.checkConstraints( association.get() );
- }
-
- // TODO Should ManyAssociations and NamedAssociations be checked too?
- }
-
- private Map<AccessibleObject, Object> state()
- {
- if( state == null )
- {
- state = new HashMap<>();
- }
-
- return state;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityStateModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityStateModel.java b/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityStateModel.java
deleted file mode 100644
index 8b9b56e..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityStateModel.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (c) 2008-2011, Rickard Öberg. All Rights Reserved.
- * Copyright (c) 2008-2013, Niclas Hedhman. 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.apache.zest.runtime.entity;
-
-import java.lang.reflect.AccessibleObject;
-import org.apache.zest.api.association.AssociationDescriptor;
-import org.apache.zest.api.association.AssociationStateDescriptor;
-import org.apache.zest.api.common.QualifiedName;
-import org.apache.zest.functional.HierarchicalVisitor;
-import org.apache.zest.functional.VisitableHierarchy;
-import org.apache.zest.runtime.association.AssociationModel;
-import org.apache.zest.runtime.association.AssociationsModel;
-import org.apache.zest.runtime.association.ManyAssociationModel;
-import org.apache.zest.runtime.association.ManyAssociationsModel;
-import org.apache.zest.runtime.association.NamedAssociationModel;
-import org.apache.zest.runtime.association.NamedAssociationsModel;
-import org.apache.zest.runtime.composite.StateModel;
-import org.apache.zest.runtime.property.PropertiesModel;
-
-/**
- * Model for EntityComposite state.
- */
-public final class EntityStateModel
- extends StateModel
- implements AssociationStateDescriptor
-{
- private final AssociationsModel associationsModel;
- private final ManyAssociationsModel manyAssociationsModel;
- private final NamedAssociationsModel namedAssociationsModel;
-
- public EntityStateModel( PropertiesModel propertiesModel,
- AssociationsModel associationsModel,
- ManyAssociationsModel manyAssociationsModel,
- NamedAssociationsModel namedAssociationsModel )
- {
- super( propertiesModel );
- this.associationsModel = associationsModel;
- this.manyAssociationsModel = manyAssociationsModel;
- this.namedAssociationsModel = namedAssociationsModel;
- }
-
- public AssociationModel getAssociation( AccessibleObject accessor )
- throws IllegalArgumentException
- {
- return associationsModel.getAssociation( accessor );
- }
-
- @Override
- public AssociationDescriptor getAssociationByName( String name )
- throws IllegalArgumentException
- {
- return associationsModel.getAssociationByName( name );
- }
-
- @Override
- public AssociationDescriptor getAssociationByQualifiedName( QualifiedName name )
- throws IllegalArgumentException
- {
- return associationsModel.getAssociationByQualifiedName( name );
- }
-
- public ManyAssociationModel getManyAssociation( AccessibleObject accessor )
- throws IllegalArgumentException
- {
- return manyAssociationsModel.getManyAssociation( accessor );
- }
-
- @Override
- public AssociationDescriptor getManyAssociationByName( String name )
- throws IllegalArgumentException
- {
- return manyAssociationsModel.getManyAssociationByName( name );
- }
-
- @Override
- public AssociationDescriptor getManyAssociationByQualifiedName( QualifiedName name )
- throws IllegalArgumentException
- {
- return manyAssociationsModel.getManyAssociationByQualifiedName( name );
- }
-
- public NamedAssociationModel getNamedAssociation( AccessibleObject accessor )
- throws IllegalArgumentException
- {
- return namedAssociationsModel.getNamedAssociation( accessor );
- }
-
- @Override
- public AssociationDescriptor getNamedAssociationByName( String name )
- throws IllegalArgumentException
- {
- return namedAssociationsModel.getNamedAssociationByName( name );
- }
-
- @Override
- public AssociationDescriptor getNamedAssociationByQualifiedName( QualifiedName name )
- throws IllegalArgumentException
- {
- return namedAssociationsModel.getNamedAssociationByQualifiedName( name );
- }
-
- @Override
- public Iterable<AssociationModel> associations()
- {
- return associationsModel.associations();
- }
-
- @Override
- public Iterable<ManyAssociationModel> manyAssociations()
- {
- return manyAssociationsModel.manyAssociations();
- }
-
- @Override
- public Iterable<NamedAssociationModel> namedAssociations()
- {
- return namedAssociationsModel.namedAssociations();
- }
-
- @Override
- public <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super Object, ? super Object, ThrowableType> visitor )
- throws ThrowableType
- {
- if( visitor.visitEnter( this ) )
- {
- if( ( (VisitableHierarchy<Object, Object>) propertiesModel ).accept( visitor ) )
- {
- if( ( (VisitableHierarchy<AssociationsModel, AssociationModel>) associationsModel ).accept( visitor ) )
- {
- if( ( (VisitableHierarchy<ManyAssociationsModel, ManyAssociationModel>) manyAssociationsModel ).accept( visitor ) )
- {
- ( (VisitableHierarchy<NamedAssociationsModel, NamedAssociationModel>) namedAssociationsModel ).accept( visitor );
- }
- }
- }
- }
- return visitor.visitLeave( this );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/Dependencies.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/Dependencies.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/Dependencies.java
deleted file mode 100644
index f2b3cf5..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/Dependencies.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.zest.runtime.injection;
-
-import org.apache.zest.functional.Function;
-
-/**
- * TODO
- */
-public interface Dependencies
-{
- public static Function<Dependencies, Iterable<DependencyModel>> DEPENDENCIES_FUNCTION = new Function<Dependencies, Iterable<DependencyModel>>()
- {
- @Override
- public Iterable<DependencyModel> map( Dependencies dependencies )
- {
- return dependencies.dependencies();
- }
- };
-
- Iterable<DependencyModel> dependencies();
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/DependencyModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/DependencyModel.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/DependencyModel.java
deleted file mode 100644
index 8ceecba..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/DependencyModel.java
+++ /dev/null
@@ -1,412 +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.apache.zest.runtime.injection;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.util.Collections;
-import org.apache.zest.api.common.ConstructionException;
-import org.apache.zest.api.common.Optional;
-import org.apache.zest.api.composite.DependencyDescriptor;
-import org.apache.zest.bootstrap.BindingException;
-import org.apache.zest.bootstrap.InvalidInjectionException;
-import org.apache.zest.functional.Function;
-import org.apache.zest.functional.Iterables;
-import org.apache.zest.functional.Specification;
-import org.apache.zest.functional.Visitable;
-import org.apache.zest.functional.Visitor;
-import org.apache.zest.runtime.injection.provider.InjectionProviderException;
-import org.apache.zest.runtime.model.Binder;
-import org.apache.zest.runtime.model.Resolution;
-
-import static org.apache.zest.api.util.Annotations.isType;
-import static org.apache.zest.functional.Iterables.iterable;
-
-/**
- * JAVADOC
- * move all the extraction code to a TypeUtils class
- */
-public final class DependencyModel
- implements Binder, DependencyDescriptor, Visitable<DependencyModel>
-{
- public static boolean isOptional( Annotation injectionAnnotation, Annotation[] annotations )
- {
- if( Iterables.matchesAny( isType( Optional.class ), iterable( annotations ) ) )
- {
- return true;
- }
-
- Method[] methods = injectionAnnotation.annotationType().getMethods();
- for( Method method : methods )
- {
- if( method.getName().equals( "optional" ) )
- {
- try
- {
- return (Boolean) method.invoke( injectionAnnotation );
- }
- catch( Throwable e )
- {
- return false;
- }
- }
- }
-
- return false;
- }
-
- // Model
- private final Annotation injectionAnnotation;
- private final Type injectionType;
- private final Class<?> injectedClass;
- private final Class<?> rawInjectionClass;
- private final boolean optional;
- private final Annotation[] annotations;
-
- // Binding
- private InjectionProvider injectionProvider;
-
- public DependencyModel( Annotation injectionAnnotation,
- Type genericType,
- Class<?> injectedClass,
- boolean optional,
- Annotation[] annotations
- )
- {
- this.injectionAnnotation = injectionAnnotation;
- this.injectedClass = injectedClass;
-
- this.injectionType = genericType;
- this.optional = optional;
- this.annotations = annotations;
- this.rawInjectionClass = mapPrimitiveTypes( extractRawInjectionClass( injectedClass, injectionType ) );
- }
-
- @Override
- public <ThrowableType extends Throwable> boolean accept( Visitor<? super DependencyModel, ThrowableType> visitor )
- throws ThrowableType
- {
- return visitor.visit( this );
- }
-
- private Class<?> extractRawInjectionClass( Class<?> injectedClass, final Type injectionType )
- {
- // Calculate raw injection type
- if( injectionType instanceof Class )
- {
- return (Class<?>) injectionType;
- }
- else if( injectionType instanceof ParameterizedType )
- {
- return (Class<?>) ( (ParameterizedType) injectionType ).getRawType();
- }
- else if( injectionType instanceof TypeVariable )
- {
- return extractRawInjectionClass( injectedClass, (TypeVariable<?>) injectionType );
- }
- throw new IllegalArgumentException(
- "Could not extract the rawInjectionClass of " + injectedClass + " and " + injectionType );
- }
-
- private Class<?> extractRawInjectionClass( Class<?> injectedClass, TypeVariable<?> injectionTypeVariable )
- {
- int index = 0;
- for( TypeVariable<?> typeVariable : injectionTypeVariable.getGenericDeclaration().getTypeParameters() )
- {
- if( injectionTypeVariable.getName().equals( typeVariable.getName() ) )
- {
- return (Class<?>) getActualType( injectedClass, index );
- }
- index++;
- }
- throw new IllegalArgumentException(
- "Could not extract the rawInjectionClass of " + injectedClass + " and " + injectionTypeVariable );
- }
-
- // todo continue refactoring
-
- private Type getActualType( Class<?> injectedClass, int index )
- {
- // Type index found - map it to actual type
- Type genericType = injectedClass;
- Type type = null;
-
- while( !Object.class.equals( genericType ) && type == null )
- {
- genericType = ( (Class<?>) genericType ).getGenericSuperclass();
- if( genericType instanceof ParameterizedType )
- {
- type = ( (ParameterizedType) genericType ).getActualTypeArguments()[ index ];
- }
- else
- {
- Type[] genericInterfaces = ( (Class<?>) genericType ).getGenericInterfaces();
- if( genericInterfaces.length > index )
- {
- type = genericInterfaces[ index ];
- if( type instanceof ParameterizedType )
- {
- type = ( (ParameterizedType) type ).getActualTypeArguments()[ index ];
- }
- // TODO type may still be one of the generic interfaces???
- }
- }
- }
-
- if( type == null )
- {
- type = Object.class; // Generic type with no constraints so Object is fine
- }
-
- return type;
- }
-
- // FIXME This method is unused, remove it.
- private Type extractDependencyType( Type injectionType )
- {
- if( injectionType instanceof ParameterizedType )
- {
- return ( (ParameterizedType) injectionType ).getActualTypeArguments()[ 0 ];
- }
- else if( injectionType instanceof TypeVariable )
- {
- return ( (TypeVariable) injectionType ).getBounds()[ 0 ];
- }
- return injectionType;
- }
-
- // Model
- @Override
- public Annotation injectionAnnotation()
- {
- return injectionAnnotation;
- }
-
- @Override
- public Type injectionType()
- {
- return injectionType;
- }
-
- @Override
- public Class<?> injectedClass()
- {
- return injectedClass;
- }
-
- /**
- * Get the raw dependency type.
- * <p>
- * If the dependency uses generics this is the raw type,
- * and otherwise it is the type of the field.
- * <p>
- * Examples:
- * <p>
- * {@code @Service MyService service} -> MyService
- * <p>
- * {@code @Entity Iterable<Foo> fooList} -> Iterable
- * <p>
- * {@code @Entity Query<Foo> fooQuery} -> Query
- *
- * @return raw injection type.
- */
- @Override
- public Class<?> rawInjectionType()
- {
- return rawInjectionClass;
- }
-
- @Override
- public boolean optional()
- {
- return optional;
- }
-
- @Override
- public Annotation[] annotations()
- {
- return annotations;
- }
-
- @Override
- public void bind( Resolution resolution )
- throws BindingException
- {
- InjectionProviderFactory providerFactory = resolution.application().injectionProviderFactory();
-
- try
- {
- injectionProvider = providerFactory.newInjectionProvider( resolution, this );
-
- if( injectionProvider == null && !optional )
- {
- String message =
- "[Module " + resolution.module()
- .name() + "] Non-optional @" + rawInjectionClass.getName() + " was not bound in " + injectedClass
- .getName();
- throw new ConstructionException( message );
- }
- }
- catch( InvalidInjectionException e )
- {
- throw new BindingException( "Could not bind dependency injection", e );
- }
- }
-
- // Context
- public Object inject( InjectionContext context )
- {
- if( injectionProvider == null )
- {
- return null;
- }
- Object injectedValue;
- try
- {
- injectedValue = injectionProvider.provideInjection( context );
- }
- catch( InjectionProviderException e )
- {
- Throwable ex = e;
- if( ex.getCause() != null )
- {
- ex = ex.getCause();
- }
-
- String message = "[Module " + context.module().name() + "] InjectionProvider unable to resolve @" +
- injectionAnnotation.annotationType().getSimpleName() + " " + injectionType.toString();
- throw new ConstructionException( message, ex );
- }
- if( injectedValue == null && !optional )
- {
- String simpleName = injectionAnnotation.annotationType().getSimpleName();
- String message = "[Module " + context.module().name() + "] Non-optional @" +
- simpleName + " " + injectionType.toString() +
- " was null in " + injectedClass.getName();
- if( simpleName.toLowerCase().contains( "service" ) )
- {
- message = message + ". Did you mean the @Service injection scope?";
- }
- throw new ConstructionException( message );
- }
- return getInjectedValue( injectedValue );
- }
-
- @SuppressWarnings( "unchecked" )
- private Object getInjectedValue( Object injectionResult )
- {
- if( injectionResult == null )
- {
- return null;
- }
-
- if( injectionResult instanceof Iterable )
- {
- if( Iterable.class.isAssignableFrom( rawInjectionClass ) || rawInjectionClass.isInstance(
- injectionResult ) )
- {
- return injectionResult;
- }
- else
- {
- return Iterables.first( (Iterable) injectionResult );
- }
- }
- else
- {
- if( Iterable.class.equals( injectionType ) )
- {
- return Collections.singleton( injectionResult );
- }
- }
- return injectionResult;
- }
-
- private final static Class<?>[] primitiveTypeMapping = {
- boolean.class, Boolean.class,
- byte.class, Byte.class,
- short.class, Short.class,
- char.class, Character.class,
- long.class, Long.class,
- double.class, Double.class,
- float.class, Float.class,
- int.class, Integer.class,
- };
-
- private Class<?> mapPrimitiveTypes( Class<?> rawInjectionType )
- {
- if( rawInjectionType == null || !rawInjectionType.isPrimitive() )
- {
- return rawInjectionType;
- }
- for( int i = 0; i < primitiveTypeMapping.length; i += 2 )
- {
- if( primitiveTypeMapping[ i ].equals( rawInjectionType ) )
- {
- return primitiveTypeMapping[ i + 1 ];
- }
- }
- return rawInjectionType;
- }
-
- public boolean hasScope( final Class<? extends Annotation> scope )
- {
- return scope == null || scope.equals( injectionAnnotation().annotationType() );
- }
-
- public Class<? extends Annotation> injectionAnnotationType()
- {
- if( injectionAnnotation == null )
- {
- return null;
- }
- return injectionAnnotation.annotationType();
- }
-
- @Override
- public String toString()
- {
- return injectionAnnotation + " for " + injectionType + " in " + injectedClass.getName();
- }
-
- public static class ScopeSpecification
- implements Specification<DependencyModel>
- {
- private final Class<? extends Annotation> scope;
-
- public ScopeSpecification( Class<? extends Annotation> scope )
- {
- this.scope = scope;
- }
-
- @Override
- public boolean satisfiedBy( DependencyModel model )
- {
- return model.hasScope( scope );
- }
- }
-
- public static class InjectionTypeFunction
- implements Function<DependencyModel, Class<?>>
- {
- @Override
- public Class<?> map( DependencyModel dependencyModel )
- {
- return dependencyModel.rawInjectionType();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedFieldModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedFieldModel.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedFieldModel.java
deleted file mode 100644
index 60977a5..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedFieldModel.java
+++ /dev/null
@@ -1,147 +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.apache.zest.runtime.injection;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Proxy;
-import java.util.Collection;
-import org.apache.zest.api.composite.InjectedFieldDescriptor;
-import org.apache.zest.api.util.Classes;
-import org.apache.zest.bootstrap.BindingException;
-import org.apache.zest.bootstrap.InjectionException;
-import org.apache.zest.functional.HierarchicalVisitor;
-import org.apache.zest.functional.Specification;
-import org.apache.zest.functional.VisitableHierarchy;
-import org.apache.zest.runtime.composite.TransientInstance;
-import org.apache.zest.runtime.model.Resolution;
-
-import static java.util.Collections.emptyList;
-import static java.util.Collections.singleton;
-
-/**
- * JAVADOC
- */
-public final class InjectedFieldModel
- implements InjectedFieldDescriptor, VisitableHierarchy<InjectedFieldModel, DependencyModel>
-{
- private DependencyModel dependencyModel;
- private Field injectedField;
-
- public InjectedFieldModel( Field injectedField, DependencyModel dependencyModel )
- {
- injectedField.setAccessible( true );
- this.injectedField = injectedField;
- this.dependencyModel = dependencyModel;
- }
-
- @Override
- public DependencyModel dependency()
- {
- return dependencyModel;
- }
-
- @Override
- public Field field()
- {
- return injectedField;
- }
-
- public void bind( Resolution resolution )
- throws BindingException
- {
- dependencyModel.bind( resolution.forField( injectedField ) );
- }
-
- public void inject( InjectionContext context, Object instance )
- {
- Object value = dependencyModel.inject( context );
- try
- {
- injectedField.set( instance, value );
- }
- catch( IllegalAccessException e )
- {
- throw new InjectionException( e );
- }
- catch( IllegalArgumentException e )
- {
- String valueClassName;
- if( Proxy.isProxyClass( value.getClass() ) )
- {
- InvocationHandler invocationHandler = Proxy.getInvocationHandler( value );
- if( invocationHandler instanceof TransientInstance )
- {
- TransientInstance handler = (TransientInstance) invocationHandler;
- valueClassName = Classes.toString( handler.descriptor().types() )
- + " in [" + handler.module().name() + "] of [" + handler.layer().name() + "]";
- }
- else
- {
- valueClassName = invocationHandler.toString();
- }
- }
- else
- {
- valueClassName = value.getClass().getName();
- }
- StringBuilder annotBuilder = new StringBuilder();
- for( Annotation annot : injectedField.getAnnotations() )
- {
- String s = annot.toString();
- annotBuilder.append( "@" ).append( s.substring( s.lastIndexOf( '.' ) + 1, s.length() - 2 ) );
- annotBuilder.append( " " );
- }
- String annots = annotBuilder.toString();
- String message = "Can not inject the field\n "
- + injectedField.getDeclaringClass()
- + "\n {\n " + annots + "\n "
- + injectedField.getType().getSimpleName() + " " + injectedField.getName()
- + "\n }\nwith value \n " + value + "\nof type\n "
- + valueClassName;
- throw new InjectionException( message, e );
- }
- }
-
- @Override
- public <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super InjectedFieldModel, ? super DependencyModel, ThrowableType> visitor )
- throws ThrowableType
- {
- if( visitor.visitEnter( this ) )
- {
- visitor.visit( dependencyModel );
- }
- return visitor.visitLeave( this );
- }
-
- public Collection<DependencyModel> filter( Specification<DependencyModel> specification )
- {
- if( specification.satisfiedBy( dependencyModel ) )
- {
- return singleton( dependencyModel );
- }
- else
- {
- return emptyList();
- }
- }
-
- @Override
- public String toString()
- {
- return "InjectedFieldModel{" + ", injectedField=" + injectedField + '}';
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedFieldsModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedFieldsModel.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedFieldsModel.java
deleted file mode 100644
index e61bc39..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedFieldsModel.java
+++ /dev/null
@@ -1,124 +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.apache.zest.runtime.injection;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.zest.api.injection.InjectionScope;
-import org.apache.zest.api.util.Classes;
-import org.apache.zest.api.util.Fields;
-import org.apache.zest.functional.Function;
-import org.apache.zest.functional.HierarchicalVisitor;
-import org.apache.zest.functional.Iterables;
-import org.apache.zest.functional.VisitableHierarchy;
-
-import static org.apache.zest.api.util.Annotations.hasAnnotation;
-import static org.apache.zest.api.util.Annotations.type;
-import static org.apache.zest.functional.Iterables.filter;
-import static org.apache.zest.functional.Iterables.first;
-import static org.apache.zest.functional.Iterables.iterable;
-import static org.apache.zest.functional.Specifications.translate;
-
-/**
- * JAVADOC
- */
-public final class InjectedFieldsModel
- implements Dependencies, VisitableHierarchy<Object, Object>
-{
- private final List<InjectedFieldModel> fields = new ArrayList<InjectedFieldModel>();
-
- public InjectedFieldsModel( Class fragmentClass )
- {
- Iterable<Field> mappedFields = Fields.FIELDS_OF.map( fragmentClass );
- for( Field field : mappedFields )
- {
- Annotation injectionAnnotation = first( filter( translate( type(), hasAnnotation( InjectionScope.class ) ), iterable( field
- .getAnnotations() ) ) );
- if( injectionAnnotation != null )
- {
- addModel( fragmentClass, field, injectionAnnotation );
- }
- }
- }
-
- private void addModel( Class fragmentClass, Field field, Annotation injectionAnnotation )
- {
- Type genericType = field.getGenericType();
- if( genericType instanceof ParameterizedType )
- {
- genericType = new ParameterizedTypeInstance( ( (ParameterizedType) genericType ).getActualTypeArguments(), ( (ParameterizedType) genericType )
- .getRawType(), ( (ParameterizedType) genericType ).getOwnerType() );
-
- for( int i = 0; i < ( (ParameterizedType) genericType ).getActualTypeArguments().length; i++ )
- {
- Type type = ( (ParameterizedType) genericType ).getActualTypeArguments()[ i ];
- if( type instanceof TypeVariable )
- {
- type = Classes.resolveTypeVariable( (TypeVariable) type, field.getDeclaringClass(), fragmentClass );
- ( (ParameterizedType) genericType ).getActualTypeArguments()[ i ] = type;
- }
- }
- }
-
- boolean optional = DependencyModel.isOptional( injectionAnnotation, field.getAnnotations() );
- DependencyModel dependencyModel = new DependencyModel( injectionAnnotation, genericType, fragmentClass, optional, field
- .getAnnotations() );
- InjectedFieldModel injectedFieldModel = new InjectedFieldModel( field, dependencyModel );
- this.fields.add( injectedFieldModel );
- }
-
- @Override
- public Iterable<DependencyModel> dependencies()
- {
- return Iterables.map( new Function<InjectedFieldModel, DependencyModel>()
- {
- @Override
- public DependencyModel map( InjectedFieldModel injectedFieldModel )
- {
- return injectedFieldModel.dependency();
- }
- }, fields );
- }
-
- @Override
- public <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super Object, ? super Object, ThrowableType> modelVisitor )
- throws ThrowableType
- {
- if( modelVisitor.visitEnter( this ) )
- {
- for( InjectedFieldModel field : fields )
- {
- if( !field.accept( modelVisitor ) )
- {
- break;
- }
- }
- }
- return modelVisitor.visitLeave( this );
- }
-
- public void inject( InjectionContext context, Object instance )
- {
- for( InjectedFieldModel field : fields )
- {
- field.inject( context, instance );
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedMethodModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedMethodModel.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedMethodModel.java
deleted file mode 100644
index b0ec660..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedMethodModel.java
+++ /dev/null
@@ -1,86 +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.apache.zest.runtime.injection;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import org.apache.zest.api.composite.InjectedMethodDescriptor;
-import org.apache.zest.bootstrap.InjectionException;
-import org.apache.zest.functional.HierarchicalVisitor;
-import org.apache.zest.functional.VisitableHierarchy;
-
-/**
- * JAVADOC
- */
-public final class InjectedMethodModel
- implements InjectedMethodDescriptor, Dependencies, VisitableHierarchy<Object, Object>
-{
- // Model
- private Method method;
- private InjectedParametersModel parameters;
-
- public InjectedMethodModel( Method method, InjectedParametersModel parameters )
- {
- this.method = method;
- this.method.setAccessible( true );
- this.parameters = parameters;
- }
-
- @Override
- public Method method()
- {
- return method;
- }
-
- @Override
- public Iterable<DependencyModel> dependencies()
- {
- return parameters.dependencies();
- }
-
- // Context
- public void inject( InjectionContext context, Object instance )
- throws InjectionException
- {
- Object[] params = parameters.newParametersInstance( context );
- try
- {
- if( !method.isAccessible() )
- {
- method.setAccessible( true );
- }
- method.invoke( instance, params );
- }
- catch( IllegalAccessException e )
- {
- throw new InjectionException( e );
- }
- catch( InvocationTargetException e )
- {
- throw new InjectionException( e.getTargetException() );
- }
- }
-
- @Override
- public <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super Object, ? super Object, ThrowableType> visitor )
- throws ThrowableType
- {
- if( visitor.visitEnter( this ) )
- {
- parameters.accept( visitor );
- }
- return visitor.visitLeave( this );
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedMethodsModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedMethodsModel.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedMethodsModel.java
deleted file mode 100644
index 82121a4..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedMethodsModel.java
+++ /dev/null
@@ -1,124 +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.apache.zest.runtime.injection;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.zest.api.injection.InjectionScope;
-import org.apache.zest.api.util.Annotations;
-import org.apache.zest.api.util.Classes;
-import org.apache.zest.api.util.Methods;
-import org.apache.zest.functional.HierarchicalVisitor;
-import org.apache.zest.functional.Specifications;
-import org.apache.zest.functional.VisitableHierarchy;
-
-import static org.apache.zest.api.util.Annotations.hasAnnotation;
-import static org.apache.zest.functional.Iterables.filter;
-import static org.apache.zest.functional.Iterables.first;
-import static org.apache.zest.functional.Iterables.flattenIterables;
-import static org.apache.zest.functional.Iterables.iterable;
-import static org.apache.zest.functional.Iterables.map;
-
-/**
- * JAVADOC
- */
-public final class InjectedMethodsModel
- implements Dependencies, VisitableHierarchy<Object, Object>
-{
- // Model
- private final List<InjectedMethodModel> methodModels = new ArrayList<InjectedMethodModel>();
-
- public InjectedMethodsModel( Class fragmentClass )
- {
- nextMethod:
- for( Method method : Methods.METHODS_OF.map( fragmentClass ) )
- {
- Annotation[][] parameterAnnotations = method.getParameterAnnotations();
- if( parameterAnnotations.length > 0 )
- {
- InjectedParametersModel parametersModel = new InjectedParametersModel();
- final Type[] genericParameterTypes = method.getGenericParameterTypes();
- for( int i = 0; i < parameterAnnotations.length; i++ )
- {
- Annotation injectionAnnotation = first( filter( Specifications.translate( Annotations.type(), hasAnnotation( InjectionScope.class ) ), iterable( parameterAnnotations[ i ] ) ) );
- if( injectionAnnotation == null )
- {
- continue nextMethod;
- }
-
- Type genericType = genericParameterTypes[ i ];
- if( genericType instanceof ParameterizedType )
- {
- genericType = new ParameterizedTypeInstance( ( (ParameterizedType) genericType ).getActualTypeArguments(), ( (ParameterizedType) genericType )
- .getRawType(), ( (ParameterizedType) genericType ).getOwnerType() );
-
- for( int j = 0; j < ( (ParameterizedType) genericType ).getActualTypeArguments().length; j++ )
- {
- Type type = ( (ParameterizedType) genericType ).getActualTypeArguments()[ j ];
- if( type instanceof TypeVariable )
- {
- type = Classes.resolveTypeVariable( (TypeVariable) type, method.getDeclaringClass(), fragmentClass );
- ( (ParameterizedType) genericType ).getActualTypeArguments()[ j ] = type;
- }
- }
- }
-
- boolean optional = DependencyModel.isOptional( injectionAnnotation, parameterAnnotations[ i ] );
- DependencyModel dependencyModel = new DependencyModel( injectionAnnotation, genericType, fragmentClass, optional, parameterAnnotations[ i ] );
- parametersModel.addDependency( dependencyModel );
- }
- InjectedMethodModel methodModel = new InjectedMethodModel( method, parametersModel );
- methodModels.add( methodModel );
- }
- }
- }
-
- @Override
- public Iterable<DependencyModel> dependencies()
- {
- return flattenIterables( map( Dependencies.DEPENDENCIES_FUNCTION, methodModels ) );
- }
-
- // Context
- public void inject( InjectionContext context, Object instance )
- {
- for( InjectedMethodModel methodModel : methodModels )
- {
- methodModel.inject( context, instance );
- }
- }
-
- @Override
- public <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super Object, ? super Object, ThrowableType> visitor )
- throws ThrowableType
- {
- if( visitor.visitEnter( this ) )
- {
- for( InjectedMethodModel methodModel : methodModels )
- {
- if( !methodModel.accept( visitor ) )
- {
- break;
- }
- }
- }
- return visitor.visitLeave( this );
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedParametersModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedParametersModel.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedParametersModel.java
deleted file mode 100644
index 2bb8360..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectedParametersModel.java
+++ /dev/null
@@ -1,103 +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.apache.zest.runtime.injection;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import org.apache.zest.api.composite.InjectedParametersDescriptor;
-import org.apache.zest.functional.HierarchicalVisitor;
-import org.apache.zest.functional.Specification;
-import org.apache.zest.functional.VisitableHierarchy;
-
-/**
- * JAVADOC
- */
-public final class InjectedParametersModel
- implements InjectedParametersDescriptor, Dependencies, VisitableHierarchy<Object, Object>
-{
- private final List<DependencyModel> parameterDependencies;
-
- public InjectedParametersModel()
- {
- parameterDependencies = new ArrayList<DependencyModel>();
- }
-
- @Override
- public Iterable<DependencyModel> dependencies()
- {
- return parameterDependencies;
- }
-
- // Context
- public Object[] newParametersInstance( InjectionContext context )
- {
- Object[] parametersInstance = new Object[ parameterDependencies.size() ];
-
- // Inject parameterDependencies
- for( int j = 0; j < parameterDependencies.size(); j++ )
- {
- DependencyModel dependencyModel = parameterDependencies.get( j );
- Object parameter = dependencyModel.inject( context );
- parametersInstance[ j ] = parameter;
- }
-
- return parametersInstance;
- }
-
- public void addDependency( DependencyModel dependency )
- {
- parameterDependencies.add( dependency );
- }
-
- @Override
- public <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super Object, ? super Object, ThrowableType> visitor )
- throws ThrowableType
- {
- if( visitor.visitEnter( this ) )
- {
- for( DependencyModel parameterDependency : parameterDependencies )
- {
- if( !visitor.visit( parameterDependency ) )
- {
- break;
- }
- }
- }
- return visitor.visitLeave( this );
- }
-
- public Collection<DependencyModel> filter( Specification<DependencyModel> specification )
- {
- ArrayList<DependencyModel> result = new ArrayList<DependencyModel>();
- for( DependencyModel model : parameterDependencies )
- {
- if( specification.satisfiedBy( model ) )
- {
- result.add( model );
- }
- }
- return result;
- }
-
- @Override
- public String toString()
- {
- return "InjectedParametersModel{" +
- "parameterDependencies=" + parameterDependencies +
- '}';
- }
-}
-
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionContext.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionContext.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionContext.java
deleted file mode 100644
index f9cefac..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionContext.java
+++ /dev/null
@@ -1,121 +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.apache.zest.runtime.injection;
-
-import org.apache.zest.api.composite.CompositeInstance;
-import org.apache.zest.api.property.StateHolder;
-import org.apache.zest.runtime.composite.ProxyReferenceInvocationHandler;
-import org.apache.zest.runtime.composite.UsesInstance;
-import org.apache.zest.runtime.structure.ModuleInstance;
-import org.apache.zest.spi.module.ModuleSpi;
-
-/**
- * JAVADOC
- */
-public final class InjectionContext
-{
- private final ModuleSpi moduleInstance;
- private CompositeInstance compositeInstance;
- private UsesInstance uses;
- private StateHolder state;
- private Object next; // Only used for concerns and side-effects
- private ProxyReferenceInvocationHandler proxyHandler;
- private Object instance; // Only used for inner classes
-
- // For mixins
-
- public InjectionContext( CompositeInstance compositeInstance, UsesInstance uses, StateHolder state )
- {
- this.moduleInstance = (ModuleInstance) compositeInstance.module();
- this.compositeInstance = compositeInstance;
- this.uses = uses;
- this.state = state;
- }
-
- // For concerns and side-effects
- public InjectionContext( ModuleSpi moduleInstance, Object next, ProxyReferenceInvocationHandler proxyHandler )
- {
- this.moduleInstance = moduleInstance;
- this.next = next;
- this.proxyHandler = proxyHandler;
- }
-
- public InjectionContext( ModuleSpi moduleInstance, UsesInstance uses )
- {
- this.moduleInstance = moduleInstance;
- this.uses = uses;
- }
-
- // For inner classes
- public InjectionContext( ModuleSpi moduleInstance, UsesInstance uses, Object instance )
- {
- this.moduleInstance = moduleInstance;
- this.uses = uses;
- this.instance = instance;
- }
-
- public ModuleSpi module()
- {
- return moduleInstance;
- }
-
- public CompositeInstance compositeInstance()
- {
- return compositeInstance;
- }
-
- public UsesInstance uses()
- {
- return uses;
- }
-
- public StateHolder state()
- {
- return state;
- }
-
- public Object next()
- {
- return next;
- }
-
- public Object instance()
- {
- return instance;
- }
-
- public ProxyReferenceInvocationHandler proxyHandler()
- {
- return proxyHandler;
- }
-
- public void setUses( UsesInstance uses )
- {
- this.uses = uses;
- }
-
- @Override
- public String toString()
- {
- return "InjectionContext{" +
- "compositeInstance=" + compositeInstance +
- ", module=" + moduleInstance +
- ", uses=" + uses +
- ", state=" + state +
- ", next=" + next +
- ", proxyHandler=" + proxyHandler +
- '}';
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionProvider.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionProvider.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionProvider.java
deleted file mode 100644
index f69c24e..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionProvider.java
+++ /dev/null
@@ -1,26 +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.apache.zest.runtime.injection;
-
-import org.apache.zest.runtime.injection.provider.InjectionProviderException;
-
-/**
- * JAVADOC
- */
-public interface InjectionProvider
-{
- Object provideInjection( InjectionContext context )
- throws InjectionProviderException;
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionProviderFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionProviderFactory.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionProviderFactory.java
deleted file mode 100644
index a993367..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/InjectionProviderFactory.java
+++ /dev/null
@@ -1,37 +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.apache.zest.runtime.injection;
-
-import org.apache.zest.bootstrap.InvalidInjectionException;
-import org.apache.zest.runtime.model.Resolution;
-
-/**
- * JAVADOC
- */
-public interface InjectionProviderFactory
-{
- /**
- * Binding a dependency given an injection resolution. If no binding
- * can be found, return null. If the dependency is optional the dependency will
- * then be explicitly set to null.
- *
- * @param resolution Injection resolution
- * @param dependencyModel Dependency model
- * @return InjectionProvider
- * @throws InvalidInjectionException if the injection is invalid
- */
- InjectionProvider newInjectionProvider( Resolution resolution, DependencyModel dependencyModel )
- throws InvalidInjectionException;
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/ParameterizedTypeInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/ParameterizedTypeInstance.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/ParameterizedTypeInstance.java
deleted file mode 100644
index 6a161b0..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/ParameterizedTypeInstance.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.zest.runtime.injection;
-
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.Arrays;
-
-/**
- * TODO
- */
-public class ParameterizedTypeInstance
- implements ParameterizedType
-{
- private Type[] actualTypeArguments;
- private Type rawType;
- private Type ownerType;
-
- public ParameterizedTypeInstance( Type[] actualTypeArguments, Type rawType, Type ownerType )
- {
- this.actualTypeArguments = actualTypeArguments;
- this.rawType = rawType;
- this.ownerType = ownerType;
- }
-
- @Override
- public Type[] getActualTypeArguments()
- {
- return actualTypeArguments;
- }
-
- @Override
- public Type getRawType()
- {
- return rawType;
- }
-
- @Override
- public Type getOwnerType()
- {
- return ownerType;
- }
-
- @Override
- public String toString()
- {
- return rawType.toString() + Arrays.asList( actualTypeArguments );
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/CachingInjectionProviderDecorator.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/CachingInjectionProviderDecorator.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/CachingInjectionProviderDecorator.java
deleted file mode 100644
index 300e1d7..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/CachingInjectionProviderDecorator.java
+++ /dev/null
@@ -1,57 +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.apache.zest.runtime.injection.provider;
-
-import org.apache.zest.runtime.injection.InjectionContext;
-import org.apache.zest.runtime.injection.InjectionProvider;
-
-/**
- * If a dependency resolution should be a singleton, wrap it with this
- * to provide a single instance "cache".
- */
-public final class CachingInjectionProviderDecorator
- implements InjectionProvider
-{
- private final InjectionProvider decoratedProvider;
- private volatile Object singletonInstance;
-
- public CachingInjectionProviderDecorator( InjectionProvider injectionProvider )
- {
- this.decoratedProvider = injectionProvider;
- }
-
- public InjectionProvider decoratedProvider()
- {
- return decoratedProvider;
- }
-
- @Override
- public Object provideInjection( InjectionContext context )
- throws InjectionProviderException
- {
- if( singletonInstance == null )
- {
- synchronized( this )
- {
- if( singletonInstance == null )
- {
- singletonInstance = decoratedProvider.provideInjection( context );
- }
- }
- }
-
- return singletonInstance;
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/CachingInjectionProviderFactoryDecorator.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/CachingInjectionProviderFactoryDecorator.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/CachingInjectionProviderFactoryDecorator.java
deleted file mode 100644
index cdb4f5a..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/CachingInjectionProviderFactoryDecorator.java
+++ /dev/null
@@ -1,50 +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.apache.zest.runtime.injection.provider;
-
-import org.apache.zest.bootstrap.InvalidInjectionException;
-import org.apache.zest.runtime.injection.DependencyModel;
-import org.apache.zest.runtime.injection.InjectionProvider;
-import org.apache.zest.runtime.injection.InjectionProviderFactory;
-import org.apache.zest.runtime.model.Resolution;
-
-/**
- * JAVADOC
- */
-public class CachingInjectionProviderFactoryDecorator
- implements InjectionProviderFactory
-{
- private final InjectionProviderFactory decoratedFactory;
-
- public CachingInjectionProviderFactoryDecorator( InjectionProviderFactory decoratedFactory )
- {
- this.decoratedFactory = decoratedFactory;
- }
-
- @Override
- public InjectionProvider newInjectionProvider( Resolution resolution, DependencyModel dependencyModel )
- throws InvalidInjectionException
- {
- InjectionProvider injectionProvider = decoratedFactory.newInjectionProvider( resolution, dependencyModel );
- if( injectionProvider != null )
- {
- return new CachingInjectionProviderDecorator( injectionProvider );
- }
- else
- {
- return null;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/InjectionProviderException.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/InjectionProviderException.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/InjectionProviderException.java
deleted file mode 100644
index abdae00..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/InjectionProviderException.java
+++ /dev/null
@@ -1,32 +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.apache.zest.runtime.injection.provider;
-
-/**
- * JAVADOC
- */
-public class InjectionProviderException
- extends RuntimeException
-{
- public InjectionProviderException( String string )
- {
- super( string );
- }
-
- public InjectionProviderException( String string, Throwable throwable )
- {
- super( string, throwable );
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/a789141d/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/InjectionProviderFactoryStrategy.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/InjectionProviderFactoryStrategy.java b/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/InjectionProviderFactoryStrategy.java
deleted file mode 100644
index 8d87bb9..0000000
--- a/core/runtime/src/main/java/org/apache/zest/runtime/injection/provider/InjectionProviderFactoryStrategy.java
+++ /dev/null
@@ -1,102 +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.apache.zest.runtime.injection.provider;
-
-import java.lang.annotation.Annotation;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.zest.api.common.MetaInfo;
-import org.apache.zest.api.composite.InvalidValueCompositeException;
-import org.apache.zest.api.composite.ModelDescriptor;
-import org.apache.zest.api.concern.internal.ConcernFor;
-import org.apache.zest.api.injection.scope.Invocation;
-import org.apache.zest.api.injection.scope.Service;
-import org.apache.zest.api.injection.scope.State;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.injection.scope.This;
-import org.apache.zest.api.injection.scope.Uses;
-import org.apache.zest.api.sideeffect.internal.SideEffectFor;
-import org.apache.zest.api.value.ValueComposite;
-import org.apache.zest.bootstrap.InvalidInjectionException;
-import org.apache.zest.runtime.injection.DependencyModel;
-import org.apache.zest.runtime.injection.InjectionProvider;
-import org.apache.zest.runtime.injection.InjectionProviderFactory;
-import org.apache.zest.runtime.model.Resolution;
-
-import static org.apache.zest.functional.Iterables.first;
-
-/**
- * JAVADOC
- */
-public final class InjectionProviderFactoryStrategy
- implements InjectionProviderFactory
-{
- private final Map<Class<? extends Annotation>, InjectionProviderFactory> generalProviderFactories = new HashMap<Class<? extends Annotation>, InjectionProviderFactory>();
- private final Map<Class<? extends Annotation>, InjectionProviderFactory> valuesProviderFactories = new HashMap<Class<? extends Annotation>, InjectionProviderFactory>();
- private MetaInfo metaInfo;
-
- public InjectionProviderFactoryStrategy( MetaInfo metaInfo )
- {
- this.metaInfo = metaInfo;
- valuesProviderFactories.put( This.class, new ThisInjectionProviderFactory() );
- ModifiesInjectionProviderFactory modifiesInjectionProviderFactory = new ModifiesInjectionProviderFactory();
- valuesProviderFactories.put( ConcernFor.class, modifiesInjectionProviderFactory );
- valuesProviderFactories.put( SideEffectFor.class, modifiesInjectionProviderFactory );
- valuesProviderFactories.put( State.class, new StateInjectionProviderFactory() );
-
- valuesProviderFactories.put( Structure.class, new CachingInjectionProviderFactoryDecorator( new StructureInjectionProviderFactory() ) );
- valuesProviderFactories.put( Service.class, new CachingInjectionProviderFactoryDecorator( new ServiceInjectionProviderFactory() ) );
- generalProviderFactories.put( Invocation.class, new InvocationInjectionProviderFactory() );
- generalProviderFactories.put( Uses.class, new UsesInjectionProviderFactory() );
- }
-
- @Override
- public InjectionProvider newInjectionProvider( Resolution resolution, DependencyModel dependencyModel )
- throws InvalidInjectionException
- {
- Class<? extends Annotation> injectionAnnotationType = dependencyModel.injectionAnnotation().annotationType();
- InjectionProviderFactory factory1 = generalProviderFactories.get( injectionAnnotationType );
- InjectionProviderFactory factory2 = valuesProviderFactories.get( injectionAnnotationType );
- if( factory1 == null && factory2 == null )
- {
- InjectionProviderFactory factory = metaInfo.get( InjectionProviderFactory.class );
- if( factory != null )
- {
- return factory.newInjectionProvider( resolution, dependencyModel );
- }
- else
- {
- throw new InvalidInjectionException( "Unknown injection annotation @" + injectionAnnotationType.getSimpleName() );
- }
- }
- ModelDescriptor composite = resolution.model();
- Class<?> compositeType = first( composite.types() );
- if( factory1 != null && ValueComposite.class.isAssignableFrom( compositeType ) )
- {
- throw new InvalidValueCompositeException( "@" + injectionAnnotationType.getSimpleName() + " is not allowed in ValueComposites: " + compositeType );
- }
-
- InjectionProviderFactory factory;
- if( factory1 == null )
- {
- factory = factory2;
- }
- else
- {
- factory = factory1;
- }
- return factory.newInjectionProvider( resolution, dependencyModel );
- }
-}