You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2014/10/30 14:59:19 UTC
[3/8] git commit: ISIS-939: simplified CollectionTypeRegistry
hierarchy (to single implementation).
ISIS-939: simplified CollectionTypeRegistry hierarchy (to single implementation).
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/51562c54
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/51562c54
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/51562c54
Branch: refs/heads/master
Commit: 51562c548660a220b74738ffdb500ab29bd4ae7b
Parents: a22b88f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Oct 28 17:24:16 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Oct 28 17:24:16 2014 +0000
----------------------------------------------------------------------
.../integtestsupport/IsisSystemDefault.java | 9 ---
.../isis/core/metamodel/app/IsisMetaModel.java | 6 +-
...llectionIdentifyingFacetFactoryAbstract.java | 19 +----
.../TypeOfFacetOnActionAnnotationFactory.java | 18 +----
.../collection/CollectionFacetFactory.java | 13 +---
...ypeOfFacetOnCollectionAnnotationFactory.java | 12 +--
.../spec/feature/ObjectMemberContext.java | 16 ++--
.../specloader/ObjectReflectorDefault.java | 47 +++---------
.../CollectionTypeRegistry.java | 59 +++++++++++---
.../CollectionTypeRegistryAbstract.java | 46 -----------
.../CollectionTypeRegistryAware.java | 25 ------
.../CollectionTypeRegistryDefault.java | 81 --------------------
.../facetprocessor/FacetProcessor.java | 54 ++++---------
.../specimpl/IntrospectionContext.java | 31 --------
.../dflt/ObjectSpecificationDefault.java | 20 +----
.../progmodels/dflt/JavaReflectorHelper.java | 12 +--
.../TypeOfAnnotationFacetFactoryTest.java | 5 +-
.../ObjectReflectorDefaultTestAbstract.java | 8 +-
.../specimpl/ObjectAssociationAbstractTest.java | 2 +-
...ectAssociationAbstractTest_alwaysHidden.java | 2 +-
.../runtime/system/ObjectActionImplTest.java | 2 +-
.../system/ObjectMemberAbstractTest.java | 2 +-
.../system/OneToManyAssociationImplTest.java | 2 +-
...rapperFactoryAbstractTest_wrappedObject.java | 3 +-
24 files changed, 111 insertions(+), 383 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java
----------------------------------------------------------------------
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java
index 4b3b348..8f8a05c 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java
@@ -32,8 +32,6 @@ import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
import org.apache.isis.core.objectstore.InMemoryPersistenceMechanismInstaller;
import org.apache.isis.core.runtime.authentication.AuthenticationManager;
@@ -135,13 +133,6 @@ public class IsisSystemDefault extends IsisSystemAbstract {
}
- /**
- * Optional hook method.
- */
- protected CollectionTypeRegistry obtainReflectorCollectionTypeRegistry() {
- return new CollectionTypeRegistryDefault();
- }
-
/**
* Optional hook method.
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/app/IsisMetaModel.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/app/IsisMetaModel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/app/IsisMetaModel.java
index 404ad60..3615b45 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/app/IsisMetaModel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/app/IsisMetaModel.java
@@ -35,7 +35,6 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault;
import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverser;
import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverserDefault;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
@@ -119,8 +118,9 @@ public class IsisMetaModel implements ApplicationScopedComponent {
this.classSubstitutor = new ClassSubstitutor();
- setCollectionTypeRegistry(new CollectionTypeRegistryDefault());
+ this.collectionTypeRegistry = new CollectionTypeRegistry();
setSpecificationTraverser(new SpecificationTraverserDefault());
+
setFacetDecorators(new TreeSet<FacetDecorator>());
setProgrammingModelFacets(programmingModel);
@@ -141,7 +141,7 @@ public class IsisMetaModel implements ApplicationScopedComponent {
@Override
public void init() {
ensureNotInitialized();
- reflector = new ObjectReflectorDefault(configuration, classSubstitutor, collectionTypeRegistry, specificationTraverser, programmingModel, facetDecorators, metaModelValidator);
+ reflector = new ObjectReflectorDefault(configuration, specificationTraverser, programmingModel, facetDecorators, metaModelValidator);
reflector.setServices(services);
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
index a98d2be..c7174c3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
@@ -20,14 +20,12 @@
package org.apache.isis.core.metamodel.facets;
import java.util.List;
-
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryAware;
-public abstract class PropertyOrCollectionIdentifyingFacetFactoryAbstract extends MethodPrefixBasedFacetFactoryAbstract implements PropertyOrCollectionIdentifyingFacetFactory, CollectionTypeRegistryAware {
+public abstract class PropertyOrCollectionIdentifyingFacetFactoryAbstract extends MethodPrefixBasedFacetFactoryAbstract implements PropertyOrCollectionIdentifyingFacetFactory {
- private CollectionTypeRegistry collectionTypeRegistry;
+ private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
public PropertyOrCollectionIdentifyingFacetFactoryAbstract(final List<FeatureType> featureTypes, final String... prefixes) {
super(featureTypes, OrphanValidation.DONT_VALIDATE, prefixes);
@@ -37,22 +35,9 @@ public abstract class PropertyOrCollectionIdentifyingFacetFactoryAbstract extend
return getCollectionTypeRepository().isCollectionType(cls) || getCollectionTypeRepository().isArrayType(cls);
}
- // /////////////////////////////////////////////////////////////////////////
- // Injected: CollectionTypeRegistry
- // /////////////////////////////////////////////////////////////////////////
-
protected CollectionTypeRegistry getCollectionTypeRepository() {
return collectionTypeRegistry;
}
- /**
- * Injected so can propogate to any {@link #registerFactory(FacetFactory)
- * registered} {@link FacetFactory} s that are also
- * {@link CollectionTypeRegistryAware}.
- */
- @Override
- public void setCollectionTypeRegistry(final CollectionTypeRegistry collectionTypeRegistry) {
- this.collectionTypeRegistry = collectionTypeRegistry;
- }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotationFactory.java
index ac6b099..e7f40e8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotationFactory.java
@@ -19,12 +19,7 @@
package org.apache.isis.core.metamodel.facets.actions.typeof.annotation;
-import java.lang.reflect.GenericDeclaration;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-
+import java.lang.reflect.*;
import org.apache.isis.applib.annotation.TypeOf;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -33,10 +28,10 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromArray;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics;
import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryAware;
-public class TypeOfFacetOnActionAnnotationFactory extends FacetFactoryAbstract implements CollectionTypeRegistryAware {
- private CollectionTypeRegistry collectionTypeRegistry;
+public class TypeOfFacetOnActionAnnotationFactory extends FacetFactoryAbstract {
+
+ private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
public TypeOfFacetOnActionAnnotationFactory() {
super(FeatureType.ACTIONS_ONLY);
@@ -112,9 +107,4 @@ public class TypeOfFacetOnActionAnnotationFactory extends FacetFactoryAbstract i
}
- @Override
- public void setCollectionTypeRegistry(final CollectionTypeRegistry collectionTypeRegistry) {
- this.collectionTypeRegistry = collectionTypeRegistry;
- }
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionFacetFactory.java
index ec6105f..0891063 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionFacetFactory.java
@@ -29,11 +29,10 @@ import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetDefaultTo
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromArray;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics;
import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryAware;
-public class CollectionFacetFactory extends FacetFactoryAbstract implements CollectionTypeRegistryAware, AdapterManagerAware {
+public class CollectionFacetFactory extends FacetFactoryAbstract implements AdapterManagerAware {
- private CollectionTypeRegistry collectionTypeRegistry;
+ private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
private AdapterManager adapterManager;
public CollectionFacetFactory() {
@@ -78,14 +77,6 @@ public class CollectionFacetFactory extends FacetFactoryAbstract implements Coll
// Dependencies (injected)
// //////////////////////////////////////////////////////////////
- /**
- * Injected since {@link CollectionTypeRegistryAware}.
- */
- @Override
- public void setCollectionTypeRegistry(final CollectionTypeRegistry collectionTypeRegistry) {
- this.collectionTypeRegistry = collectionTypeRegistry;
- }
-
public AdapterManager getAdapterManager() {
return adapterManager;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/typeof/annotation/TypeOfFacetOnCollectionAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/typeof/annotation/TypeOfFacetOnCollectionAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/typeof/annotation/TypeOfFacetOnCollectionAnnotationFactory.java
index 6bcfb18..43eca17 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/typeof/annotation/TypeOfFacetOnCollectionAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/typeof/annotation/TypeOfFacetOnCollectionAnnotationFactory.java
@@ -23,7 +23,6 @@ import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
-
import org.apache.isis.applib.annotation.TypeOf;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -32,10 +31,9 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromArray;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics;
import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryAware;
-public class TypeOfFacetOnCollectionAnnotationFactory extends FacetFactoryAbstract implements CollectionTypeRegistryAware {
- private CollectionTypeRegistry collectionTypeRegistry;
+public class TypeOfFacetOnCollectionAnnotationFactory extends FacetFactoryAbstract {
+ private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
public TypeOfFacetOnCollectionAnnotationFactory() {
super(FeatureType.COLLECTIONS_ONLY);
@@ -86,12 +84,6 @@ public class TypeOfFacetOnCollectionAnnotationFactory extends FacetFactoryAbstra
// TODO: what to do here?
return;
}
-
- }
-
- @Override
- public void setCollectionTypeRegistry(final CollectionTypeRegistry collectionTypeRegistry) {
- this.collectionTypeRegistry = collectionTypeRegistry;
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java
index 2aef1e1..b26f81c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java
@@ -31,16 +31,16 @@ public class ObjectMemberContext {
private final SpecificationLoader specificationLookup;
private final AdapterManager adapterManager;
private final QuerySubmitter querySubmitter;
- private final CollectionTypeRegistry collectionTypeRegistry;
private final ServicesProvider servicesProvider;
+ private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
+
public ObjectMemberContext(
- final DeploymentCategory deploymentCategory,
- final AuthenticationSessionProvider authenticationSessionProvider,
- final SpecificationLoader specificationLookup,
- final AdapterManager adapterManager,
- final QuerySubmitter querySubmitter,
- final CollectionTypeRegistry collectionTypeRegistry,
+ final DeploymentCategory deploymentCategory,
+ final AuthenticationSessionProvider authenticationSessionProvider,
+ final SpecificationLoader specificationLookup,
+ final AdapterManager adapterManager,
+ final QuerySubmitter querySubmitter,
final ServicesProvider servicesProvider) {
this.deploymentCategory = deploymentCategory;
@@ -48,7 +48,7 @@ public class ObjectMemberContext {
this.specificationLookup = specificationLookup;
this.adapterManager = adapterManager;
this.querySubmitter = querySubmitter;
- this.collectionTypeRegistry = collectionTypeRegistry;
+
this.servicesProvider = servicesProvider;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
index 333f0fd..5af8824 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
@@ -52,11 +52,9 @@ import org.apache.isis.core.metamodel.spec.*;
import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
import org.apache.isis.core.metamodel.specloader.specimpl.CreateObjectContext;
import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilderContext;
-import org.apache.isis.core.metamodel.specloader.specimpl.IntrospectionContext;
import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract;
import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract.IntrospectionState;
import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
@@ -84,12 +82,6 @@ import static org.hamcrest.CoreMatchers.notNullValue;
* allows the class to be loaded to be substituted if required. This is used in
* conjunction with some <tt>PersistenceMechanism</tt>s that do class
* enhancement.
- * <li>The {@link CollectionTypeRegistry} specifies the types that should be
- * considered as collections. If not specified then will
- * {@link CollectionTypeRegistryDefault default}. (Note: this extension point
- * has not been tested, so should be considered more of a "statement of
- * intent" than actual API. Also, we may use annotations (similar to the
- * way in which Values are specified) as an alternative mechanism).
* </ul>
*
* <p>
@@ -109,6 +101,9 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
private final static Logger LOG = LoggerFactory.getLogger(ObjectReflectorDefault.class);
+ private final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
+ private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
+
/**
* Injected in the constructor.
*/
@@ -116,14 +111,6 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
/**
* Injected in the constructor.
*/
- private final ClassSubstitutor classSubstitutor;
- /**
- * Injected in the constructor.
- */
- private final CollectionTypeRegistry collectionTypeRegistry;
- /**
- * Injected in the constructor.
- */
private final ProgrammingModel programmingModel;
/**
@@ -169,25 +156,19 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
// /////////////////////////////////////////////////////////////
public ObjectReflectorDefault(
- final IsisConfiguration configuration,
- final ClassSubstitutor classSubstitutor,
- final CollectionTypeRegistry collectionTypeRegistry,
+ final IsisConfiguration configuration,
final SpecificationTraverser specificationTraverser,
- final ProgrammingModel programmingModel,
- final Set<FacetDecorator> facetDecorators,
+ final ProgrammingModel programmingModel,
+ final Set<FacetDecorator> facetDecorators,
final MetaModelValidator metaModelValidator) {
ensureThatArg(configuration, is(notNullValue()));
- ensureThatArg(classSubstitutor, is(notNullValue()));
- ensureThatArg(collectionTypeRegistry, is(notNullValue()));
ensureThatArg(specificationTraverser, is(notNullValue()));
ensureThatArg(programmingModel, is(notNullValue()));
ensureThatArg(facetDecorators, is(notNullValue()));
ensureThatArg(metaModelValidator, is(notNullValue()));
this.configuration = configuration;
- this.classSubstitutor = classSubstitutor;
- this.collectionTypeRegistry = collectionTypeRegistry;
this.programmingModel = programmingModel;
this.specificationTraverser = specificationTraverser;
@@ -197,7 +178,7 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
}
this.metaModelValidator = metaModelValidator;
- this.facetProcessor = new FacetProcessor(configuration, collectionTypeRegistry, programmingModel);
+ this.facetProcessor = new FacetProcessor(configuration, programmingModel);
}
@Override
@@ -252,7 +233,6 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
// initialize subcomponents
facetDecoratorSet.init();
- collectionTypeRegistry.init();
specificationTraverser.init();
programmingModel.init();
facetProcessor.init();
@@ -341,7 +321,7 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
// just ignore.
return;
}
- final Class<?> substitutedType = getClassSubstitutor().getClass(cls);
+ final Class<?> substitutedType = classSubstitutor.getClass(cls);
if(substitutedType.isAnonymousClass()) {
// JRebel plugin might call us... just ignore 'em.
@@ -420,7 +400,7 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
}
private ObjectSpecification internalLoadSpecification(final Class<?> type) {
- final Class<?> substitutedType = getClassSubstitutor().getClass(type);
+ final Class<?> substitutedType = classSubstitutor.getClass(type);
return substitutedType != null ? loadSpecificationForSubstitutedClass(substitutedType) : null;
}
@@ -488,18 +468,17 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
final SpecificationContext specContext = new SpecificationContext(getDeploymentCategory(), authenticationSessionProvider, servicesProvider, objectInstantiator, specificationLookup, facetProcessor);
final AdapterManager adapterMap = getRuntimeContext().getAdapterManager();
- final ObjectMemberContext objectMemberContext = new ObjectMemberContext(getDeploymentCategory(), authenticationSessionProvider, specificationLookup, adapterMap, getRuntimeContext().getQuerySubmitter(), collectionTypeRegistry, servicesProvider);
+ final ObjectMemberContext objectMemberContext = new ObjectMemberContext(getDeploymentCategory(), authenticationSessionProvider, specificationLookup, adapterMap, getRuntimeContext().getQuerySubmitter(), servicesProvider);
// ... and create the specs
if (FreeStandingList.class.isAssignableFrom(cls)) {
return new ObjectSpecificationOnStandaloneList(specContext, objectMemberContext);
} else {
final SpecificationLoaderSpi specificationLoader = this;
- final IntrospectionContext introspectionContext = new IntrospectionContext(getClassSubstitutor());
final ServicesInjector dependencyInjector = getRuntimeContext().getDependencyInjector();
final CreateObjectContext createObjectContext = new CreateObjectContext(adapterMap, dependencyInjector);
final FacetedMethodsBuilderContext facetedMethodsBuilderContext = new FacetedMethodsBuilderContext(specificationLoader, classSubstitutor, specificationTraverser, facetProcessor);
- return new ObjectSpecificationDefault(cls, facetedMethodsBuilderContext, introspectionContext, specContext, objectMemberContext, createObjectContext);
+ return new ObjectSpecificationDefault(cls, facetedMethodsBuilderContext, specContext, objectMemberContext, createObjectContext);
}
}
@@ -588,8 +567,6 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
final SpecificationLoaderAware cast = SpecificationLoaderAware.class.cast(candidate);
cast.setSpecificationLookup(this);
}
-
- getCollectionTypeRegistry().injectInto(candidate);
}
// /////////////////////////////////////////////////////////////
@@ -605,7 +582,7 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
final List<ObjectSpecification> specs = Lists.newArrayList(allSpecifications());
Collections.sort(specs, ObjectSpecification.COMPARATOR_SHORT_IDENTIFIER_IGNORE_CASE);
for (final ObjectSpecification spec : specs) {
- StringBuffer str = new StringBuffer();
+ StringBuilder str = new StringBuilder();
str.append(spec.isAbstract() ? "A" : ".");
str.append(spec.isService() ? "S" : ".");
str.append(ChoicesFacetUtils.hasChoices(spec) ? "B" : ".");
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistry.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistry.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistry.java
index 93cd815..1ba859e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistry.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistry.java
@@ -19,8 +19,10 @@
package org.apache.isis.core.metamodel.specloader.collectiontyperegistry;
-import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.commons.components.Injectable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
import org.apache.isis.core.metamodel.spec.feature.OneToManyFeature.CollectionSemantics;
/**
@@ -31,20 +33,53 @@ import org.apache.isis.core.metamodel.spec.feature.OneToManyFeature.CollectionSe
* specified using <tt>@Value</tt>. However, we need to maintain a repository of
* these collection types once nominated so that when we introspect classes we
* look for collections first, and then properties second.
- *
- * <p>
- * TODO: plan is to allow new collection types to be installed dynamically,
- * allowing the domain programmer to declare custom classes to have collection
- * semantics.
*/
-public interface CollectionTypeRegistry extends Injectable, ApplicationScopedComponent {
+public class CollectionTypeRegistry {
+
+ private final List<Class<?>> collectionTypes = new ArrayList<Class<?>>();
+ private Class<?>[] collectionTypesAsArray = new Class[0];
+
+ /**
+ * Inbuilt support for {@link java.util.Collection} as a collection type.
+ *
+ * <p>
+ * Note that this includes any subclasses.
+ */
+ public CollectionTypeRegistry() {
+ addCollectionType(Collection.class);
+ }
+
+ /**
+ * Plan is for this to be promoted to API at some stage.
+ */
+ private void addCollectionType(final Class<?> collectionType) {
+ collectionTypes.add(collectionType);
+ collectionTypesAsArray = collectionTypes.toArray(new Class[0]);
+ }
- public boolean isCollectionType(Class<?> cls);
+ public boolean isCollectionType(final Class<?> cls) {
+ return java.util.Collection.class.isAssignableFrom(cls);
+ }
- public boolean isArrayType(Class<?> cls);
+ public boolean isArrayType(final Class<?> cls) {
+ return cls.isArray();
+ }
- public Class<?>[] getCollectionType();
+ public Class<?>[] getCollectionType() {
+ return collectionTypesAsArray;
+ }
- public CollectionSemantics semanticsOf(Class<?> cls);
+ public CollectionSemantics semanticsOf(final Class<?> underlyingClass) {
+ if (!Collection.class.isAssignableFrom(underlyingClass)) {
+ return CollectionSemantics.ARRAY;
+ }
+ if (List.class.isAssignableFrom(underlyingClass)) {
+ return CollectionSemantics.LIST;
+ }
+ if (Set.class.isAssignableFrom(underlyingClass)) {
+ return CollectionSemantics.SET;
+ }
+ return CollectionSemantics.OTHER;
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryAbstract.java
deleted file mode 100644
index be78336..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryAbstract.java
+++ /dev/null
@@ -1,46 +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.isis.core.metamodel.specloader.collectiontyperegistry;
-
-public abstract class CollectionTypeRegistryAbstract implements CollectionTypeRegistry {
-
- /**
- * Default implementation does nothing.
- */
- @Override
- public void init() {
- }
-
- /**
- * Default implementation does nothing.
- */
- @Override
- public void shutdown() {
- }
-
- @Override
- public void injectInto(final Object candidate) {
- if (CollectionTypeRegistryAware.class.isAssignableFrom(candidate.getClass())) {
- final CollectionTypeRegistryAware cast = CollectionTypeRegistryAware.class.cast(candidate);
- cast.setCollectionTypeRegistry(this);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryAware.java
deleted file mode 100644
index 52b0a3f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryAware.java
+++ /dev/null
@@ -1,25 +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.isis.core.metamodel.specloader.collectiontyperegistry;
-
-public interface CollectionTypeRegistryAware {
-
- void setCollectionTypeRegistry(CollectionTypeRegistry collectionTypeRegistry);
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryDefault.java
deleted file mode 100644
index 39ee1eb..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/collectiontyperegistry/CollectionTypeRegistryDefault.java
+++ /dev/null
@@ -1,81 +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.isis.core.metamodel.specloader.collectiontyperegistry;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.isis.core.metamodel.spec.feature.OneToManyFeature.CollectionSemantics;
-
-public class CollectionTypeRegistryDefault extends CollectionTypeRegistryAbstract {
-
- private final List<Class<?>> collectionTypes = new ArrayList<Class<?>>();
- private Class<?>[] collectionTypesAsArray = new Class[0];
-
- /**
- * Inbuilt support for {@link Collection} as a collection type.
- *
- * <p>
- * Note that this includes any subclasses.
- */
- public CollectionTypeRegistryDefault() {
- addCollectionType(Collection.class);
- }
-
- /**
- * Plan is for this to be promoted to API at some stage.
- */
- private void addCollectionType(final Class<?> collectionType) {
- collectionTypes.add(collectionType);
- collectionTypesAsArray = collectionTypes.toArray(new Class[0]);
- }
-
- @Override
- public boolean isCollectionType(final Class<?> cls) {
- return java.util.Collection.class.isAssignableFrom(cls);
- }
-
- @Override
- public boolean isArrayType(final Class<?> cls) {
- return cls.isArray();
- }
-
- @Override
- public Class<?>[] getCollectionType() {
- return collectionTypesAsArray;
- }
-
- @Override
- public CollectionSemantics semanticsOf(final Class<?> underlyingClass) {
- if (!Collection.class.isAssignableFrom(underlyingClass)) {
- return CollectionSemantics.ARRAY;
- }
- if (List.class.isAssignableFrom(underlyingClass)) {
- return CollectionSemantics.LIST;
- }
- if (Set.class.isAssignableFrom(underlyingClass)) {
- return CollectionSemantics.SET;
- }
- return CollectionSemantics.OTHER;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
index 4c22b67..d23f12b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
@@ -19,48 +19,34 @@
package org.apache.isis.core.metamodel.specloader.facetprocessor;
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-
import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
+import java.util.*;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.lang.ListExtensions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facetapi.MethodRemover;
-import org.apache.isis.core.metamodel.facets.FacetFactory;
+import org.apache.isis.core.metamodel.facets.*;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessParameterContext;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
-import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
-import org.apache.isis.core.metamodel.facets.MethodFilteringFacetFactory;
-import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactory;
-import org.apache.isis.core.metamodel.facets.MethodRemoverConstants;
-import org.apache.isis.core.metamodel.facets.PropertyOrCollectionIdentifyingFacetFactory;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAware;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
-import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionContributee;
+
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
public class FacetProcessor implements RuntimeContextAware {
+ private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
+
private final IsisConfiguration configuration;
- private final CollectionTypeRegistry collectionTypeRegistry;
private final ProgrammingModel programmingModel;
private RuntimeContext runtimeContext;
@@ -130,14 +116,14 @@ public class FacetProcessor implements RuntimeContextAware {
*/
private Map<FeatureType, List<FacetFactory>> factoryListByFeatureType = null;
- public FacetProcessor(final IsisConfiguration configuration, final CollectionTypeRegistry collectionTypeRegistry, final ProgrammingModel programmingModel) {
+ public FacetProcessor(
+ final IsisConfiguration configuration,
+ final ProgrammingModel programmingModel) {
ensureThatState(configuration, is(notNullValue()));
- ensureThatState(collectionTypeRegistry, is(notNullValue()));
ensureThatState(programmingModel, is(notNullValue()));
this.configuration = configuration;
this.programmingModel = programmingModel;
- this.collectionTypeRegistry = collectionTypeRegistry;
}
// //////////////////////////////////////////////////
@@ -168,7 +154,6 @@ public class FacetProcessor implements RuntimeContextAware {
* processing.
*/
public void injectDependenciesInto(final FacetFactory factory) {
- getCollectionTypeRepository().injectInto(factory);
getIsisConfiguration().injectInto(factory);
// cascades all the subcomponents also
@@ -208,12 +193,7 @@ public class FacetProcessor implements RuntimeContextAware {
* property accessors, and append them to the supplied methodList.
*
* <p>
- * Intended to be called after
- * {@link #findAndRemoveValuePropertyAccessors(MethodRemover, List)} once
- * only reference properties remain.
- *
- * @see PropertyOrCollectionIdentifyingFacetFactory#findAndRemoveValuePropertyAccessors(MethodRemover,
- * List)
+ * Intended to be called after {@link #findAndRemovePropertyAccessors(org.apache.isis.core.metamodel.facetapi.MethodRemover, java.util.List)} once only reference properties remain.
*/
public void findAndRemovePropertyAccessors(final MethodRemover methodRemover, final List<Method> methodListToAppendTo) {
cachePropertyOrCollectionIdentifyingFacetFactoriesIfRequired();
@@ -279,7 +259,7 @@ public class FacetProcessor implements RuntimeContextAware {
* object}) to the supplied {@link FacetHolder}.
*
* <p>
- * Delegates to {@link FacetFactory#process(Class, FacetHolder)} for each
+ * Delegates to {@link FacetFactory#process(org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext)} for each
* appropriate factory.
*
* @see FacetFactory#process(ProcessClassContext)
@@ -316,11 +296,9 @@ public class FacetProcessor implements RuntimeContextAware {
* feature} to the supplied {@link FacetHolder}.
*
* <p>
- * Delegates to {@link FacetFactory#process(Method, FacetHolder)} for each
+ * Delegates to {@link FacetFactory#process(org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext)} for each
* appropriate factory.
*
- * @see FacetFactory#process(Method, FacetHolder)
- *
* @param cls
* - class in which introspect; allowing the helper methods to be
* found is subclasses of that which the method was originally
@@ -460,9 +438,7 @@ public class FacetProcessor implements RuntimeContextAware {
return;
}
cachedPropertyOrCollectionIdentifyingFactories = Lists.newArrayList();
- final Iterator<FacetFactory> iter = factories.iterator();
- while (iter.hasNext()) {
- final FacetFactory factory = iter.next();
+ for (FacetFactory factory : factories) {
if (factory instanceof PropertyOrCollectionIdentifyingFacetFactory) {
final PropertyOrCollectionIdentifyingFacetFactory identifyingFacetFactory = (PropertyOrCollectionIdentifyingFacetFactory) factory;
cachedPropertyOrCollectionIdentifyingFactories.add(identifyingFacetFactory);
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionContext.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionContext.java
deleted file mode 100644
index 30eb273..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionContext.java
+++ /dev/null
@@ -1,31 +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.isis.core.metamodel.specloader.specimpl;
-
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
-
-public class IntrospectionContext {
- private final ClassSubstitutor classSubstitutor;
-
- public IntrospectionContext(final ClassSubstitutor classSubstitutor) {
- this.classSubstitutor = classSubstitutor;
- }
-
- public ClassSubstitutor getClassSubstitutor() {
- return classSubstitutor;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index b448cef..94fbfff 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -37,7 +37,6 @@ import org.apache.isis.core.commons.exceptions.IsisException;
import org.apache.isis.core.commons.lang.StringExtensions;
import org.apache.isis.core.commons.util.ToString;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
@@ -62,6 +61,7 @@ import org.apache.isis.core.metamodel.specloader.specimpl.*;
public class ObjectSpecificationDefault extends ObjectSpecificationAbstract implements DebuggableWithTitle, FacetHolder {
private final static Logger LOG = LoggerFactory.getLogger(ObjectSpecificationDefault.class);
+ private final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
private static String determineShortName(final Class<?> introspectedClass) {
final String name = introspectedClass.getName();
@@ -79,7 +79,6 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
*/
private Map<Method, ObjectMember> membersByMethod = null;
- private final IntrospectionContext introspectionContext;
private final CreateObjectContext createObjectContext;
private final FacetedMethodsBuilder facetedMethodsBuilder;
@@ -91,16 +90,13 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
public ObjectSpecificationDefault(
final Class<?> correspondingClass,
- final FacetedMethodsBuilderContext facetedMethodsBuilderContext,
- final IntrospectionContext introspectionContext,
- final SpecificationContext specContext,
+ final FacetedMethodsBuilderContext facetedMethodsBuilderContext,
+ final SpecificationContext specContext,
final ObjectMemberContext objectMemberContext,
final CreateObjectContext createObjectContext) {
super(correspondingClass, determineShortName(correspondingClass), specContext, objectMemberContext);
this.facetedMethodsBuilder = new FacetedMethodsBuilder(this, facetedMethodsBuilderContext);
-
- this.introspectionContext = introspectionContext;
this.createObjectContext = createObjectContext;
}
@@ -146,7 +142,7 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
final Class<?>[] interfaceTypes = getCorrespondingClass().getInterfaces();
final List<ObjectSpecification> interfaceSpecList = Lists.newArrayList();
for (final Class<?> interfaceType : interfaceTypes) {
- final Class<?> substitutedInterfaceType = getClassSubstitutor().getClass(interfaceType);
+ final Class<?> substitutedInterfaceType = classSubstitutor.getClass(interfaceType);
if (substitutedInterfaceType != null) {
final ObjectSpecification interfaceSpec = getSpecificationLookup().loadSpecification(substitutedInterfaceType);
interfaceSpecList.add(interfaceSpec);
@@ -504,17 +500,9 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
// Dependencies (from constructor)
// //////////////////////////////////////////////////////////////////
- protected AdapterManager getAdapterMap() {
- return createObjectContext.getAdapterManager();
- }
-
protected ServicesInjector getDependencyInjector() {
return createObjectContext.getDependencyInjector();
}
- private ClassSubstitutor getClassSubstitutor() {
- return introspectionContext.getClassSubstitutor();
- }
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
index 3a12dd2..30d8b32 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
@@ -21,19 +21,14 @@ package org.apache.isis.progmodels.dflt;
import java.util.Collection;
import java.util.Set;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverser;
import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverserDefault;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
@@ -52,10 +47,9 @@ public final class JavaReflectorHelper {
final Set<FacetDecorator> facetDecorators,
final MetaModelValidator mmv,
final IsisConfiguration configuration) {
+
final SpecificationTraverser specificationTraverser = new SpecificationTraverserDefault();
- final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistryDefault();
- final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
-
+
MetaModelValidatorComposite metaModelValidator = MetaModelValidatorComposite.asComposite(mmv);
for (MetaModelRefiner metaModelRefiner : metaModelRefiners) {
metaModelRefiner.refineProgrammingModel(programmingModel, configuration);
@@ -67,7 +61,7 @@ public final class JavaReflectorHelper {
programmingModel.refineMetaModelValidator(metaModelValidator, configuration);
}
- return new ObjectReflectorDefault(configuration, classSubstitutor, collectionTypeRegistry, specificationTraverser, programmingModel, facetDecorators, metaModelValidator);
+ return new ObjectReflectorDefault(configuration, specificationTraverser, programmingModel, facetDecorators, metaModelValidator);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/typeof/TypeOfAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/typeof/TypeOfAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/typeof/TypeOfAnnotationFacetFactoryTest.java
index 9037b4b..de6701e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/typeof/TypeOfAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/typeof/TypeOfAnnotationFacetFactoryTest.java
@@ -25,14 +25,13 @@ import java.util.List;
import java.util.Set;
import org.apache.isis.applib.annotation.TypeOf;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromArray;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics;
import org.apache.isis.core.metamodel.facets.collections.typeof.annotation.TypeOfFacetOnCollectionAnnotation;
import org.apache.isis.core.metamodel.facets.collections.typeof.annotation.TypeOfFacetOnCollectionAnnotationFactory;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
public class TypeOfAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
@@ -41,9 +40,7 @@ public class TypeOfAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
@Override
protected void setUp() throws Exception {
super.setUp();
-
facetFactory = new TypeOfFacetOnCollectionAnnotationFactory();
- facetFactory.setCollectionTypeRegistry(new CollectionTypeRegistryDefault());
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTestAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTestAbstract.java
index 6082cd8..038afc2 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTestAbstract.java
@@ -40,8 +40,6 @@ import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
import org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverserDefault;
import org.apache.isis.core.unittestsupport.jmocking.InjectIntoJMockAction;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -77,10 +75,8 @@ public abstract class ObjectReflectorDefaultTestAbstract {
runtimeContext = new RuntimeContextNoRuntime();
final ObjectReflectorDefault reflector =
new ObjectReflectorDefault(
- mockConfiguration,
- new ClassSubstitutor(),
- new CollectionTypeRegistryDefault(),
- new SpecificationTraverserDefault(),
+ mockConfiguration,
+ new SpecificationTraverserDefault(),
new ProgrammingModelFacetsJava5(),
new HashSet<FacetDecorator>(),
new MetaModelValidatorDefault());
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
index 492a337..21ee9cf 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
@@ -73,7 +73,7 @@ public class ObjectAssociationAbstractTest {
public void setup() {
facetedMethod = FacetedMethod.createForProperty(Customer.class, "firstName");
- objectAssociation = new ObjectAssociationAbstract(facetedMethod, FeatureType.PROPERTY, objectSpecification, new ObjectMemberContext(DeploymentCategory.PRODUCTION, null, null, null, null, null, null)) {
+ objectAssociation = new ObjectAssociationAbstract(facetedMethod, FeatureType.PROPERTY, objectSpecification, new ObjectMemberContext(DeploymentCategory.PRODUCTION, null, null, null, null, null)) {
@Override
public ObjectAdapter get(final ObjectAdapter fromObject) {
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
index 6570145..d4ac220 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
@@ -72,7 +72,7 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
public void setup() {
facetedMethod = FacetedMethod.createForProperty(Customer.class, "firstName");
- objectAssociation = new ObjectAssociationAbstract(facetedMethod, FeatureType.PROPERTY, objectSpecification, new ObjectMemberContext(DeploymentCategory.PRODUCTION, null, null, null, null, null, null)) {
+ objectAssociation = new ObjectAssociationAbstract(facetedMethod, FeatureType.PROPERTY, objectSpecification, new ObjectMemberContext(DeploymentCategory.PRODUCTION, null, null, null, null, null)) {
@Override
public ObjectAdapter get(final ObjectAdapter fromObject) {
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
index 4512af1..efb8aa6 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
@@ -77,7 +77,7 @@ public class ObjectActionImplTest {
}
});
- action = new ObjectActionImpl(mockFacetedMethod, new ObjectMemberContext(DeploymentCategory.PRODUCTION, mockAuthenticationSessionProvider, mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, mockCollectionTypeRegistry, mockServicesProvider));
+ action = new ObjectActionImpl(mockFacetedMethod, new ObjectMemberContext(DeploymentCategory.PRODUCTION, mockAuthenticationSessionProvider, mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, mockServicesProvider));
}
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index d3e52c1..0e85b6c 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -205,7 +205,7 @@ class ObjectMemberAbstractImpl extends ObjectMemberAbstract {
}
protected ObjectMemberAbstractImpl(final String id) {
- super(FacetedMethod.createForProperty(Customer.class, "firstName"), FeatureType.PROPERTY, new ObjectMemberContext(DeploymentCategory.PRODUCTION, null, null, null, null, null, null));
+ super(FacetedMethod.createForProperty(Customer.class, "firstName"), FeatureType.PROPERTY, new ObjectMemberContext(DeploymentCategory.PRODUCTION, null, null, null, null, null));
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationImplTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationImplTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationImplTest.java
index 7b1422e..174103d 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationImplTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationImplTest.java
@@ -94,7 +94,7 @@ public class OneToManyAssociationImplTest {
allowingPeerToReturnCollectionType();
allowingPeerToReturnIdentifier();
allowingSpecLoaderToReturnSpecs();
- association = new OneToManyAssociationImpl(mockPeer, new ObjectMemberContext(DeploymentCategory.PRODUCTION, mockAuthenticationSessionProvider, mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, mockCollectionTypeRegistry, mockServicesProvider));
+ association = new OneToManyAssociationImpl(mockPeer, new ObjectMemberContext(DeploymentCategory.PRODUCTION, mockAuthenticationSessionProvider, mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, mockServicesProvider));
}
private void allowingSpecLoaderToReturnSpecs() {
http://git-wip-us.apache.org/repos/asf/isis/blob/51562c54/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
index c9f7427..ad033bd 100644
--- a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
@@ -47,7 +47,6 @@ import org.apache.isis.core.metamodel.facets.properties.validating.method.Proper
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl;
import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
import org.apache.isis.core.runtime.authentication.standard.SimpleSession;
@@ -113,7 +112,7 @@ public abstract class WrapperFactoryAbstractTest_wrappedObject {
@Before
public void setUp() {
- objectMemberContext = new ObjectMemberContext(DeploymentCategory.PRODUCTION, mockAuthenticationSessionProvider, mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, new CollectionTypeRegistryDefault(), mockServicesProvider);
+ objectMemberContext = new ObjectMemberContext(DeploymentCategory.PRODUCTION, mockAuthenticationSessionProvider, mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, mockServicesProvider);
employeeRepository = new EmployeeRepositoryImpl();