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:18 UTC
[2/8] git commit: ISIS-939: simplified ClassSubstitutor and
ObjectFactory.
ISIS-939: simplified ClassSubstitutor and ObjectFactory.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/a22b88f9
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/a22b88f9
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/a22b88f9
Branch: refs/heads/master
Commit: a22b88f952082684b6632beecf548c8f5ea1e565
Parents: f4b9021
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Oct 28 17:06:14 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Oct 28 17:06:14 2014 +0000
----------------------------------------------------------------------
.../integtestsupport/IsisSystemDefault.java | 5 +-
.../isis/core/metamodel/app/IsisMetaModel.java | 17 +--
.../facetapi/ClassSubstitutorFactory.java | 32 -----
...tSpecIdFacetDerivedFromClassNameFactory.java | 10 +-
.../specloader/ObjectReflectorDefault.java | 2 -
.../specloader/ObjectReflectorInstaller.java | 4 +-
.../classsubstitutor/ClassSubstitutor.java | 85 ++++++++++--
.../ClassSubstitutorAbstract.java | 137 -------------------
.../classsubstitutor/ClassSubstitutorAware.java | 25 ----
.../ClassSubstitutorComposite.java | 76 ----------
.../JdoDiscriminatorAnnotationFacetFactory.java | 14 +-
.../progmodels/dflt/JavaReflectorHelper.java | 14 +-
.../JavaReflectorInstallerNoDecorators.java | 10 +-
.../metamodel/app/IsisMetaModelTest_init.java | 11 +-
...cIdFacetDerivedFromClassNameFactoryTest.java | 1 -
.../ObjectReflectorDefaultTestAbstract.java | 8 +-
.../ClassSubstitutorAbstract_getClass.java | 68 ---------
.../ClassSubstitutorComposite_lifecycle.java | 67 ---------
.../ClassSubstitutor_getClass.java | 67 +++++++++
.../InMemoryPersistenceMechanismInstaller.java | 42 ------
...ResolveAndObjectChangedEnhancerAbstract.java | 107 ---------------
.../bytecode/dflt/ClassSubstitutorDefault.java | 29 ----
.../bytecode/dflt/ObjectFactoryBasic.java | 54 --------
.../PersistenceMechanismInstallerAbstract.java | 5 +-
.../PersistenceSessionFactoryDelegate.java | 5 +-
.../PersistenceSessionFactoryDelegating.java | 16 +--
.../objectfactory/ObjectFactoryAbstract.java | 134 ------------------
.../system/IsisSystemFixturesHookAbstract.java | 3 +-
.../system/persistence/ObjectFactory.java | 76 +++++++++-
.../system/persistence/PersistenceSession.java | 40 ++----
.../persistence/PersistenceSessionFactory.java | 4 +-
.../IsisSystemAbstract.java | 3 +-
.../IsisSystemUsingInstallers.java | 5 +-
...ataNucleusPersistenceMechanismInstaller.java | 14 --
.../DataNucleusTypesClassSubstitutor.java | 40 ------
.../PersistenceSessionObjectStoreTest.java | 2 +-
36 files changed, 259 insertions(+), 973 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/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 70d0388..4b3b348 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
@@ -27,7 +27,6 @@ import com.google.common.collect.Sets;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.config.IsisConfigurationDefault;
import org.apache.isis.core.commons.resource.ResourceStreamSourceContextLoaderClassPath;
-import org.apache.isis.core.metamodel.facetapi.ClassSubstitutorFactory;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
@@ -126,13 +125,13 @@ public class IsisSystemDefault extends IsisSystemAbstract {
* @see #obtainReflectorProgrammingModel()
*/
@Override
- protected SpecificationLoaderSpi obtainSpecificationLoaderSpi(DeploymentType deploymentType, ClassSubstitutorFactory classSubstitutorFactory, Collection<MetaModelRefiner> metaModelRefiners) throws IsisSystemException {
+ protected SpecificationLoaderSpi obtainSpecificationLoaderSpi(DeploymentType deploymentType, Collection<MetaModelRefiner> metaModelRefiners) throws IsisSystemException {
final ProgrammingModel programmingModel = obtainReflectorProgrammingModel();
final Set<FacetDecorator> facetDecorators = obtainReflectorFacetDecoratorSet();
final MetaModelValidator mmv = obtainReflectorMetaModelValidator();
- return JavaReflectorHelper.createObjectReflector(programmingModel, classSubstitutorFactory, metaModelRefiners, facetDecorators, mmv, getConfiguration());
+ return JavaReflectorHelper.createObjectReflector(programmingModel, metaModelRefiners, facetDecorators, mmv, getConfiguration());
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/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 7ab73bd..404ad60 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
@@ -34,7 +34,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
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.classsubstitutor.ClassSubstitutorAbstract;
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;
@@ -117,7 +116,9 @@ public class IsisMetaModel implements ApplicationScopedComponent {
this.services.addAll(Arrays.asList(services));
setConfiguration(new IsisConfigurationDefault());
- setClassSubstitutor(new ClassSubstitutorAbstract() {});
+
+ this.classSubstitutor = new ClassSubstitutor();
+
setCollectionTypeRegistry(new CollectionTypeRegistryDefault());
setSpecificationTraverser(new SpecificationTraverserDefault());
setFacetDecorators(new TreeSet<FacetDecorator>());
@@ -225,18 +226,6 @@ public class IsisMetaModel implements ApplicationScopedComponent {
}
/**
- * Optionally specify the {@link ClassSubstitutor}.
- *
- * <p>
- * Call prior to {@link #init()}.
- */
- public void setClassSubstitutor(final ClassSubstitutor classSubstitutor) {
- ensureNotInitialized();
- ensureThatArg(classSubstitutor, is(notNullValue()));
- this.classSubstitutor = classSubstitutor;
- }
-
- /**
* The {@link CollectionTypeRegistry} in force, either defaulted or
* specified {@link #setCollectionTypeRegistry(CollectionTypeRegistry)
* explicitly.}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/ClassSubstitutorFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/ClassSubstitutorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/ClassSubstitutorFactory.java
deleted file mode 100644
index a222ea2..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/ClassSubstitutorFactory.java
+++ /dev/null
@@ -1,32 +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.facetapi;
-
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
-
-
-/**
- * Provides the ability for components to inform/alter/adjust/refine the metamodel.
- */
-public interface ClassSubstitutorFactory {
-
- ClassSubstitutor createClassSubstitutor(IsisConfiguration configuration);
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java
index 50a54a6..31401ac 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java
@@ -25,11 +25,10 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutorAware;
-public class ObjectSpecIdFacetDerivedFromClassNameFactory extends FacetFactoryAbstract implements ClassSubstitutorAware {
+public class ObjectSpecIdFacetDerivedFromClassNameFactory extends FacetFactoryAbstract {
- private ClassSubstitutor classSubstitutor;
+ private ClassSubstitutor classSubstitutor = new ClassSubstitutor();
public ObjectSpecIdFacetDerivedFromClassNameFactory() {
super(FeatureType.OBJECTS_ONLY);
@@ -47,9 +46,4 @@ public class ObjectSpecIdFacetDerivedFromClassNameFactory extends FacetFactoryAb
FacetUtil.addFacet(new ObjectSpecIdFacetDerivedFromClassName(substitutedClass.getCanonicalName(), facetHolder));
}
- @Override
- public void setClassSubstitutor(ClassSubstitutor classSubstitutor) {
- this.classSubstitutor = classSubstitutor;
- }
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/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 32716d4..333f0fd 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
@@ -252,7 +252,6 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
// initialize subcomponents
facetDecoratorSet.init();
- classSubstitutor.init();
collectionTypeRegistry.init();
specificationTraverser.init();
programmingModel.init();
@@ -590,7 +589,6 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
cast.setSpecificationLookup(this);
}
- getClassSubstitutor().injectInto(candidate);
getCollectionTypeRegistry().injectInto(candidate);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
index c70866f..c3b42c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
@@ -20,9 +20,7 @@
package org.apache.isis.core.metamodel.specloader;
import java.util.Collection;
-
import org.apache.isis.core.commons.components.Installer;
-import org.apache.isis.core.metamodel.facetapi.ClassSubstitutorFactory;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
@@ -33,7 +31,7 @@ public interface ObjectReflectorInstaller extends Installer {
static String TYPE = "reflector";
- SpecificationLoaderSpi createReflector(ClassSubstitutorFactory classSubstitutorFactory, Collection<MetaModelRefiner> metaModelRefiners);
+ SpecificationLoaderSpi createReflector(Collection<MetaModelRefiner> metaModelRefiners);
void addFacetDecoratorInstaller(final FacetDecoratorInstaller decoratorInstaller);
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutor.java
index cbbb869..c69fe9a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutor.java
@@ -19,19 +19,86 @@
package org.apache.isis.core.metamodel.specloader.classsubstitutor;
-import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.commons.components.Injectable;
+import java.util.Set;
+import com.google.common.collect.Sets;
+import org.apache.isis.applib.DomainObjectContainer;
+import org.apache.isis.core.commons.lang.ClassUtil;
/**
* Provides capability to translate or ignore classes.
- *
- * <p>
- * The class strategy is typically required when either an underlying object
- * store (such as Hibernate); it then allows the enhancement artifacts can be
- * ignored or interpreted correctly.
*/
-public interface ClassSubstitutor extends Injectable, ApplicationScopedComponent {
+public class ClassSubstitutor {
+
+ //region > constructor
+
+ public ClassSubstitutor() {
+ ignore(DomainObjectContainer.class);
+
+ // ignore cglib
+ ignore("net.sf.cglib.proxy.Factory");
+ ignore("net.sf.cglib.proxy.MethodProxy");
+ ignore("net.sf.cglib.proxy.Callback");
+
+ // ignore javassist
+ ignore("javassist.util.proxy.ProxyObject");
+ ignore("javassist.util.proxy.MethodHandler");
+
+ }
+ //endregion
+
+ //region > getClass(Class)
+
+ public Class<?> getClass(final Class<?> cls) {
+
+ // ignore datanucleus proxies
+ if(cls.getName().startsWith("org.datanucleus")) {
+ return getClass(cls.getSuperclass());
+ }
+
+ if (shouldIgnore(cls)) {
+ return null;
+ }
+ final Class<?> superclass = cls.getSuperclass();
+ if(superclass != null && superclass.isEnum()) {
+ return superclass;
+ }
+ if (ClassUtil.directlyImplements(cls, JavassistEnhanced.class)) {
+ return getClass(cls.getSuperclass());
+ }
+ return cls;
+ }
+
+ //endregion
+
+ //region > helpers
+
+ private final Set<Class<?>> classesToIgnore = Sets.newHashSet();
+ private final Set<String> classNamesToIgnore = Sets.newHashSet();
+
+ /**
+ * For any classes registered as ignored, {@link #getClass(Class)} will
+ * return <tt>null</tt>.
+ */
+ private boolean ignore(final Class<?> q) {
+ return classesToIgnore.add(q);
+ }
+
+ /**
+ * For any classes registered as ignored, {@link #getClass(Class)} will
+ * return <tt>null</tt>.
+ */
+ private boolean ignore(final String className) {
+ return classNamesToIgnore.add(className);
+ }
+
+ private boolean shouldIgnore(final Class<?> cls) {
+ if (cls.isArray()) {
+ return shouldIgnore(cls.getComponentType());
+ }
+ return classesToIgnore.contains(cls) || classNamesToIgnore.contains(cls.getCanonicalName());
+ }
+
+ //endregion
- Class<?> getClass(Class<?> cls);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAbstract.java
deleted file mode 100644
index 761d64f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAbstract.java
+++ /dev/null
@@ -1,137 +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.classsubstitutor;
-
-import java.util.Set;
-
-import com.google.common.collect.Sets;
-
-import org.apache.isis.applib.DomainObjectContainer;
-import org.apache.isis.core.commons.lang.ClassUtil;
-
-public abstract class ClassSubstitutorAbstract implements ClassSubstitutor {
-
- private final Set<Class<?>> classesToIgnore = Sets.newHashSet();
- private final Set<String> classNamesToIgnore = Sets.newHashSet();
-
- /**
- * Will implicitly ignore the {@link DomainObjectContainer}.
- */
- public ClassSubstitutorAbstract() {
- ignore(DomainObjectContainer.class);
-
- // ignore cglib
- ignore("net.sf.cglib.proxy.Factory");
- ignore("net.sf.cglib.proxy.MethodProxy");
- ignore("net.sf.cglib.proxy.Callback");
-
- // ignore javassist
- ignore("javassist.util.proxy.ProxyObject");
- ignore("javassist.util.proxy.MethodHandler");
-
- }
-
- // /////////////////////////////////////////////////////////////////
- // init, shutdown
- // /////////////////////////////////////////////////////////////////
-
- /**
- * Default implementation does nothing.
- */
- @Override
- public void init() {
- }
-
- /**
- * Default implementation does nothing.
- */
- @Override
- public void shutdown() {
- }
-
- // /////////////////////////////////////////////////////////////////
- // ClassSubstitutor impl.
- // /////////////////////////////////////////////////////////////////
-
- /**
- * Hook method for subclasses to override if required.
- *
- * <p>
- * Default implementation will either return the class, unless has been
- * registered as to be {@link #ignore(Class) ignore}d, in which case returns
- * <tt>null</tt>.
- */
- @Override
- public Class<?> getClass(final Class<?> cls) {
- if (shouldIgnore(cls)) {
- return null;
- }
- final Class<?> superclass = cls.getSuperclass();
- if(superclass != null && superclass.isEnum()) {
- return superclass;
- }
- if (ClassUtil.directlyImplements(cls, JavassistEnhanced.class)) {
- return getClass(cls.getSuperclass());
- }
- return cls;
- }
-
-
- private boolean shouldIgnore(final Class<?> cls) {
- if (cls.isArray()) {
- return shouldIgnore(cls.getComponentType());
- }
- return classesToIgnore.contains(cls) || classNamesToIgnore.contains(cls.getCanonicalName());
- }
-
- // ////////////////////////////////////////////////////////////////////
- // ignoring
- // ////////////////////////////////////////////////////////////////////
-
- /**
- * For any classes registered as ignored, {@link #getClass(Class)} will
- * return <tt>null</tt>.
- */
- protected boolean ignore(final Class<?> q) {
- return classesToIgnore.add(q);
- }
-
- /**
- * For any classes registered as ignored, {@link #getClass(Class)} will
- * return <tt>null</tt>.
- */
- protected boolean ignore(final String className) {
- return classNamesToIgnore.add(className);
- }
-
-
- // ////////////////////////////////////////////////////////////////////
- // injectInto
- // ////////////////////////////////////////////////////////////////////
-
- @Override
- public void injectInto(final Object candidate) {
- if (ClassSubstitutorAware.class.isAssignableFrom(candidate.getClass())) {
- final ClassSubstitutorAware cast = ClassSubstitutorAware.class.cast(candidate);
- cast.setClassSubstitutor(this);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAware.java
deleted file mode 100644
index 132d5bc..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAware.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.classsubstitutor;
-
-public interface ClassSubstitutorAware {
-
- public void setClassSubstitutor(ClassSubstitutor classSubstitutor);
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorComposite.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorComposite.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorComposite.java
deleted file mode 100644
index 43e0d88..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorComposite.java
+++ /dev/null
@@ -1,76 +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.classsubstitutor;
-
-import java.util.Arrays;
-import java.util.List;
-
-import com.google.common.collect.Lists;
-
-public class ClassSubstitutorComposite implements ClassSubstitutor {
-
- private final List<ClassSubstitutor> substitutors = Lists.newArrayList();
-
- public ClassSubstitutorComposite(final List<ClassSubstitutor> substitutors) {
- this.substitutors.addAll(substitutors);
- }
-
- public ClassSubstitutorComposite(final ClassSubstitutor... substitutors) {
- this(Arrays.asList(substitutors));
- }
-
- @Override
- public void init() {
- for (final ClassSubstitutor classSubstitutor : substitutors) {
- classSubstitutor.init();
- }
- }
-
- @Override
- public void shutdown() {
- for (final ClassSubstitutor classSubstitutor : substitutors) {
- classSubstitutor.shutdown();
- }
- }
-
- @Override
- public Class<?> getClass(Class<?> cls) {
- Class<?> clsBefore;
- do {
- clsBefore = cls;
- for (final ClassSubstitutor substitutor : substitutors) {
- cls = substitutor.getClass(cls);
- if (cls == null) {
- return null;
- }
- }
- } while (clsBefore != cls);
- return cls;
- }
-
- @Override
- public void injectInto(final Object candidate) {
- if (ClassSubstitutorAware.class.isAssignableFrom(candidate.getClass())) {
- final ClassSubstitutorAware cast = ClassSubstitutorAware.class.cast(candidate);
- cast.setClassSubstitutor(this);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
index a98ebbe..bde6dc9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
@@ -20,21 +20,18 @@
package org.apache.isis.objectstore.jdo.metamodel.facets.object.discriminator;
import javax.jdo.annotations.Discriminator;
-
import com.google.common.base.Strings;
-
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.Annotations;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutorAware;
import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName;
+import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
-public class JdoDiscriminatorAnnotationFacetFactory extends FacetFactoryAbstract implements ClassSubstitutorAware {
+public class JdoDiscriminatorAnnotationFacetFactory extends FacetFactoryAbstract {
- private ClassSubstitutor classSubstitutor;
+ private ClassSubstitutor classSubstitutor = new ClassSubstitutor();
public JdoDiscriminatorAnnotationFacetFactory() {
super(FeatureType.OBJECTS_ONLY);
@@ -60,9 +57,4 @@ public class JdoDiscriminatorAnnotationFacetFactory extends FacetFactoryAbstract
FacetUtil.addFacet(new JdoDiscriminatorFacetDefault(annotationValueAttribute, processClassContext.getFacetHolder()));
}
- @Override
- public void setClassSubstitutor(ClassSubstitutor classSubstitutor) {
- this.classSubstitutor = classSubstitutor;
- }
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/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 8b5bcb5..3a12dd2 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
@@ -26,7 +26,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.facetapi.ClassSubstitutorFactory;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
@@ -48,15 +47,14 @@ public final class JavaReflectorHelper {
private JavaReflectorHelper(){}
public static SpecificationLoaderSpi createObjectReflector(
- final ProgrammingModel programmingModel,
- final ClassSubstitutorFactory classSubstitutorFactory,
- final Collection<MetaModelRefiner> metaModelRefiners,
- final Set<FacetDecorator> facetDecorators,
- final MetaModelValidator mmv,
- final IsisConfiguration configuration) {
+ final ProgrammingModel programmingModel,
+ final Collection<MetaModelRefiner> metaModelRefiners,
+ final Set<FacetDecorator> facetDecorators,
+ final MetaModelValidator mmv,
+ final IsisConfiguration configuration) {
final SpecificationTraverser specificationTraverser = new SpecificationTraverserDefault();
final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistryDefault();
- final ClassSubstitutor classSubstitutor = classSubstitutorFactory.createClassSubstitutor(configuration);
+ final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
MetaModelValidatorComposite metaModelValidator = MetaModelValidatorComposite.asComposite(mmv);
for (MetaModelRefiner metaModelRefiner : metaModelRefiners) {
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
index 86684f9..24bc810 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
@@ -34,7 +34,6 @@ import org.apache.isis.core.commons.config.ConfigurationConstants;
import org.apache.isis.core.commons.config.InstallerAbstract;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.factory.InstanceUtil;
-import org.apache.isis.core.metamodel.facetapi.ClassSubstitutorFactory;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
import org.apache.isis.core.metamodel.facets.FacetFactory;
@@ -74,19 +73,14 @@ public class JavaReflectorInstallerNoDecorators extends InstallerAbstract implem
// createReflector, doCreateReflector
// /////////////////////////////////////////////////////
- /**
- * Should call
- * {@link #addFacetDecoratorInstaller(ReflectorDecoratorInstaller)} prior to
- * calling this.
- */
@Override
- public SpecificationLoaderSpi createReflector(final ClassSubstitutorFactory classSubstitutorFactory, final Collection<MetaModelRefiner> metaModelRefiners) {
+ public SpecificationLoaderSpi createReflector(final Collection<MetaModelRefiner> metaModelRefiners) {
final ProgrammingModel programmingModel = createProgrammingModel(getConfiguration());
final Set<FacetDecorator> facetDecorators = createFacetDecorators(getConfiguration());
final MetaModelValidator mmv = createMetaModelValidator(getConfiguration());
- return JavaReflectorHelper.createObjectReflector(programmingModel, classSubstitutorFactory, metaModelRefiners, facetDecorators, mmv, getConfiguration());
+ return JavaReflectorHelper.createObjectReflector(programmingModel, metaModelRefiners, facetDecorators, mmv, getConfiguration());
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/test/java/org/apache/isis/core/metamodel/app/IsisMetaModelTest_init.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/app/IsisMetaModelTest_init.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/app/IsisMetaModelTest_init.java
index 3fc502a..fb7e0eb 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/app/IsisMetaModelTest_init.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/app/IsisMetaModelTest_init.java
@@ -71,18 +71,19 @@ public class IsisMetaModelTest_init {
@Mock
private FacetDecorator mockFacetDecorator;
@Mock
- private ClassSubstitutor mockClassSubstitutor;
- @Mock
private CollectionTypeRegistry mockCollectionTypeRegistry;
@Mock
private RuntimeContext mockRuntimeContext;
+ private ClassSubstitutor classSubstitutor;
+
private IsisMetaModel metaModel;
@Before
public void setUp() {
expectingMetaModelToBeInitialized();
metaModel = new IsisMetaModel(mockRuntimeContext, mockProgrammingModelFacets);
+ classSubstitutor = new ClassSubstitutor();
}
private void expectingMetaModelToBeInitialized() {
@@ -153,12 +154,6 @@ public class IsisMetaModelTest_init {
}
@Test(expected = IllegalStateException.class)
- public void shouldNotBeAbleToChangeClassSubstitutor() {
- metaModel.init();
- metaModel.setClassSubstitutor(mockClassSubstitutor);
- }
-
- @Test(expected = IllegalStateException.class)
public void shouldNotBeAbleToChangeFacetDecorators() {
metaModel.init();
metaModel.setFacetDecorators(new TreeSet<FacetDecorator>());
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
index 5eff3d2..ce5bd98 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
@@ -44,7 +44,6 @@ public class ObjectSpecIdFacetDerivedFromClassNameFactoryTest extends AbstractFa
public void setUp() throws Exception {
facetFactory = new ObjectSpecIdFacetDerivedFromClassNameFactory();
facetFactory.setSpecificationLookup(mockSpecificationLoaderSpi);
- facetFactory.setClassSubstitutor(mockClassSubstitutor);
}
static class Customer {
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/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 c013d06..6082cd8 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
@@ -30,17 +30,17 @@ import org.junit.Test;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
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.ClassSubstitutorAbstract;
+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;
@@ -78,7 +78,7 @@ public abstract class ObjectReflectorDefaultTestAbstract {
final ObjectReflectorDefault reflector =
new ObjectReflectorDefault(
mockConfiguration,
- new ClassSubstitutorAbstract() {},
+ new ClassSubstitutor(),
new CollectionTypeRegistryDefault(),
new SpecificationTraverserDefault(),
new ProgrammingModelFacetsJava5(),
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAbstract_getClass.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAbstract_getClass.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAbstract_getClass.java
deleted file mode 100644
index b887c49..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorAbstract_getClass.java
+++ /dev/null
@@ -1,68 +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.classsubstitutor;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Before;
-import org.junit.Test;
-
-public class ClassSubstitutorAbstract_getClass {
-
- private ClassSubstitutorAbstract classSubstitutorAbstract;
-
- @Before
- public void setUp() throws Exception {
- classSubstitutorAbstract = new ClassSubstitutorAbstract() {
- };
- }
-
- public static class SomeDomainObject {
-
- public static enum SomeEnum {
- Foo {
- @Override
- public void x() {
- }
- };
- public abstract void x();
- }
- }
-
- @Test
- public void regularDomainObject() throws Exception {
- Class<?> cls = classSubstitutorAbstract.getClass(SomeDomainObject.class);
- assertEquals(SomeDomainObject.class, cls);
- }
-
- @Test
- public void someEnum() throws Exception {
- Class<?> cls = classSubstitutorAbstract.getClass(SomeDomainObject.SomeEnum.class);
- assertEquals(SomeDomainObject.SomeEnum.class, cls);
- }
-
- @Test
- public void someAnonymousSubtypeOfEnum() throws Exception {
- Class<?> cls = classSubstitutorAbstract.getClass(SomeDomainObject.SomeEnum.Foo.getClass());
- assertEquals(SomeDomainObject.SomeEnum.class, cls);
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorComposite_lifecycle.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorComposite_lifecycle.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorComposite_lifecycle.java
deleted file mode 100644
index 3416522..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutorComposite_lifecycle.java
+++ /dev/null
@@ -1,67 +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.classsubstitutor;
-
-import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(JMock.class)
-public class ClassSubstitutorComposite_lifecycle {
-
- private final Mockery context = new JUnit4Mockery();
-
- final ClassSubstitutor mockSubstitutor = context.mock(ClassSubstitutor.class, "one");
- final ClassSubstitutor mockSubstitutor2 = context.mock(ClassSubstitutor.class, "two");
-
- private ClassSubstitutorComposite classSubstitutorComposite;
-
- @Before
- public void setUp() throws Exception {
- classSubstitutorComposite = new ClassSubstitutorComposite(mockSubstitutor, mockSubstitutor2);
- }
-
- @Test
- public void whenInitThenShouldPropogate() throws Exception {
- context.checking(new Expectations() {
- {
- one(mockSubstitutor).init();
- one(mockSubstitutor2).init();
- }
- });
- classSubstitutorComposite.init();
- }
-
- @Test
- public void whenShutdownThenShouldPropogate() throws Exception {
- context.checking(new Expectations() {
- {
- one(mockSubstitutor).shutdown();
- one(mockSubstitutor2).shutdown();
- }
- });
- classSubstitutorComposite.shutdown();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutor_getClass.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutor_getClass.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutor_getClass.java
new file mode 100644
index 0000000..016a61c
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/classsubstitutor/ClassSubstitutor_getClass.java
@@ -0,0 +1,67 @@
+/*
+ * 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.classsubstitutor;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class ClassSubstitutor_getClass {
+
+ private ClassSubstitutor classSubstitutor;
+
+ @Before
+ public void setUp() throws Exception {
+ classSubstitutor = new ClassSubstitutor();
+ }
+
+ public static class SomeDomainObject {
+
+ public static enum SomeEnum {
+ Foo {
+ @Override
+ public void x() {
+ }
+ };
+ public abstract void x();
+ }
+ }
+
+ @Test
+ public void regularDomainObject() throws Exception {
+ Class<?> cls = classSubstitutor.getClass(SomeDomainObject.class);
+ assertEquals(SomeDomainObject.class, cls);
+ }
+
+ @Test
+ public void someEnum() throws Exception {
+ Class<?> cls = classSubstitutor.getClass(SomeDomainObject.SomeEnum.class);
+ assertEquals(SomeDomainObject.SomeEnum.class, cls);
+ }
+
+ @Test
+ public void someAnonymousSubtypeOfEnum() throws Exception {
+ Class<?> cls = classSubstitutor.getClass(SomeDomainObject.SomeEnum.Foo.getClass());
+ assertEquals(SomeDomainObject.SomeEnum.class, cls);
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
index e23b93f..2f0acc2 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
@@ -19,14 +19,9 @@
package org.apache.isis.core.objectstore;
-import java.lang.reflect.Modifier;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
-import org.apache.isis.core.runtime.bytecode.dflt.ClassSubstitutorDefault;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstallerAbstract;
-import org.apache.isis.core.runtime.persistence.objectfactory.ObjectFactoryAbstract;
import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi;
@@ -66,45 +61,8 @@ public class InMemoryPersistenceMechanismInstaller extends PersistenceMechanismI
}
- @Override
- public ObjectFactory createObjectFactory(IsisConfiguration configuration) {
- return new ObjectFactoryBasic();
- }
-
- @Override
- public ClassSubstitutor createClassSubstitutor(IsisConfiguration configuration) {
- return new ClassSubstitutorDefault();
- }
}
-class ObjectFactoryBasic extends ObjectFactoryAbstract {
-
- public ObjectFactoryBasic() {
- }
-
- public ObjectFactoryBasic(final Mode mode) {
- super(mode);
- }
-
- /**
- * Simply instantiates reflectively, does not enhance bytecode etc in any
- * way.
- */
- @Override
- protected <T> T doInstantiate(final Class<T> cls) throws ObjectInstantiationException {
- if (Modifier.isAbstract(cls.getModifiers())) {
- throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
- }
- try {
- return cls.newInstance();
- } catch (final IllegalAccessException e) {
- throw new ObjectInstantiationException(e);
- } catch (final InstantiationException e) {
- throw new ObjectInstantiationException(e);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/ObjectResolveAndObjectChangedEnhancerAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/ObjectResolveAndObjectChangedEnhancerAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/ObjectResolveAndObjectChangedEnhancerAbstract.java
deleted file mode 100644
index 1489110..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/ObjectResolveAndObjectChangedEnhancerAbstract.java
+++ /dev/null
@@ -1,107 +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.runtime.bytecode;
-
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-
-import java.lang.reflect.Method;
-
-import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-import org.apache.isis.core.runtime.persistence.objectfactory.ObjectChanger;
-import org.apache.isis.core.runtime.persistence.objectfactory.ObjectResolver;
-
-public abstract class ObjectResolveAndObjectChangedEnhancerAbstract {
-
- protected final ObjectResolver objectResolver;
- protected final ObjectChanger objectChanger;
- protected final SpecificationLoaderSpi specificationLoader;
-
- public ObjectResolveAndObjectChangedEnhancerAbstract(final ObjectResolver objectResolver, final ObjectChanger objectChanger, final SpecificationLoaderSpi specificationLoader) {
- ensureThatArg(objectResolver, is(notNullValue()));
- ensureThatArg(objectChanger, is(notNullValue()));
- ensureThatArg(specificationLoader, is(notNullValue()));
-
- this.objectResolver = objectResolver;
- this.objectChanger = objectChanger;
- this.specificationLoader = specificationLoader;
- }
-
- /**
- * Subclasses should call from their constructor, and setup their
- * implementation-specific callback mechanism.
- */
- protected abstract void createCallback();
-
- protected ObjectSpecificationDefault getJavaSpecificationOfOwningClass(final Method method) {
- return getJavaSpecification(method.getDeclaringClass());
- }
-
- protected ObjectSpecificationDefault getJavaSpecification(final Class<?> cls) {
- final ObjectSpecification nos = getSpecification(cls);
- if (!(nos instanceof ObjectSpecificationDefault)) {
- throw new UnsupportedOperationException("Only Java is supported (specification is '" + nos.getClass().getCanonicalName() + "')");
- }
- return (ObjectSpecificationDefault) nos;
- }
-
- protected boolean impliesResolve(final ImperativeFacet[] imperativeFacets) {
- for (final ImperativeFacet imperativeFacet : imperativeFacets) {
- if (imperativeFacet.impliesResolve()) {
- return true;
- }
- }
- return false;
- }
-
- protected boolean impliesObjectChanged(final ImperativeFacet[] imperativeFacets) {
- for (final ImperativeFacet imperativeFacet : imperativeFacets) {
- if (imperativeFacet.impliesObjectChanged()) {
- return true;
- }
- }
- return false;
- }
-
- private ObjectSpecification getSpecification(final Class<?> type) {
- return specificationLoader.loadSpecification(type);
- }
-
- // /////////////////////////////////////////////////////////////
- // Dependencies (from constructor)
- // /////////////////////////////////////////////////////////////
-
- public final ObjectResolver getObjectResolver() {
- return objectResolver;
- }
-
- public final ObjectChanger getObjectChanger() {
- return objectChanger;
- }
-
- public final SpecificationLoaderSpi getSpecificationLoader() {
- return specificationLoader;
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/dflt/ClassSubstitutorDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/dflt/ClassSubstitutorDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/dflt/ClassSubstitutorDefault.java
deleted file mode 100644
index 05ef574..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/dflt/ClassSubstitutorDefault.java
+++ /dev/null
@@ -1,29 +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.runtime.bytecode.dflt;
-
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutorAbstract;
-
-public class ClassSubstitutorDefault extends ClassSubstitutorAbstract {
-
- public ClassSubstitutorDefault() {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/dflt/ObjectFactoryBasic.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/dflt/ObjectFactoryBasic.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/dflt/ObjectFactoryBasic.java
deleted file mode 100644
index 7ad7742..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/bytecode/dflt/ObjectFactoryBasic.java
+++ /dev/null
@@ -1,54 +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.runtime.bytecode.dflt;
-
-import java.lang.reflect.Modifier;
-
-import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
-import org.apache.isis.core.runtime.persistence.objectfactory.ObjectFactoryAbstract;
-
-public class ObjectFactoryBasic extends ObjectFactoryAbstract {
-
- public ObjectFactoryBasic() {
- }
-
- public ObjectFactoryBasic(final Mode mode) {
- super(mode);
- }
-
- /**
- * Simply instantiates reflectively, does not enhance bytecode etc in any
- * way.
- */
- @Override
- protected <T> T doInstantiate(final Class<T> cls) throws ObjectInstantiationException {
- if (Modifier.isAbstract(cls.getModifiers())) {
- throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
- }
- try {
- return cls.newInstance();
- } catch (final IllegalAccessException e) {
- throw new ObjectInstantiationException(e);
- } catch (final InstantiationException e) {
- throw new ObjectInstantiationException(e);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
index f8deedf..99feccb 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
@@ -35,7 +35,6 @@ import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
import org.apache.isis.core.runtime.installerregistry.InstallerLookupAware;
-import org.apache.isis.core.runtime.persistence.PersistenceConstants;
import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegating;
import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
@@ -110,7 +109,6 @@ public abstract class PersistenceMechanismInstallerAbstract extends InstallerAbs
}
ObjectAdapterFactory adapterFactory = persistenceSessionFactory.getAdapterFactory();
- ObjectFactory objectFactory = persistenceSessionFactory.getObjectFactory();
PojoRecreator pojoRecreator = persistenceSessionFactory.getPojoRecreator();
IdentifierGenerator identifierGenerator = persistenceSessionFactory.getIdentifierGenerator();
ServicesInjectorSpi servicesInjector = persistenceSessionFactory.getServicesInjector();
@@ -129,7 +127,7 @@ public abstract class PersistenceMechanismInstallerAbstract extends InstallerAbs
}
final PersistenceSession persistenceSession =
- new PersistenceSession(persistenceSessionFactory, adapterFactory, objectFactory, servicesInjector, identifierGenerator, adapterManager, persistAlgorithm, objectStore);
+ new PersistenceSession(persistenceSessionFactory, adapterFactory, servicesInjector, identifierGenerator, adapterManager, persistAlgorithm, objectStore);
final IsisTransactionManager transactionManager = createTransactionManager(persistenceSession, objectStore, servicesInjector);
@@ -276,7 +274,6 @@ public abstract class PersistenceMechanismInstallerAbstract extends InstallerAbs
}
-
// /////////////////////////////////////////////////////
// Dependencies (from setters)
// /////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java
index 20742cf..9cbc2e0 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java
@@ -22,7 +22,6 @@ package org.apache.isis.core.runtime.persistence;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.config.IsisConfigurationBuilderAware;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
-import org.apache.isis.core.metamodel.facetapi.ClassSubstitutorFactory;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
@@ -36,7 +35,7 @@ import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory
* Creates a {@link PersistenceSession} on behalf of a
* {@link PersistenceSessionFactory}.
*/
-public interface PersistenceSessionFactoryDelegate extends IsisConfigurationBuilderAware, ClassSubstitutorFactory, MetaModelRefiner {
+public interface PersistenceSessionFactoryDelegate extends IsisConfigurationBuilderAware, MetaModelRefiner {
///////////////////////////////////////////////////////////////////////////
@@ -47,8 +46,6 @@ public interface PersistenceSessionFactoryDelegate extends IsisConfigurationBuil
ObjectAdapterFactory createAdapterFactory(IsisConfiguration configuration);
- ObjectFactory createObjectFactory(IsisConfiguration configuration);
-
IdentifierGenerator createIdentifierGenerator(IsisConfiguration configuration);
ServicesInjectorSpi createServicesInjector(IsisConfiguration configuration);
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java
index 2efacc2..45284cc 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java
@@ -28,13 +28,11 @@ import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreator;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.IdentifierGenerator;
-import org.apache.isis.core.runtime.system.persistence.ObjectFactory;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
@@ -57,10 +55,9 @@ public class PersistenceSessionFactoryDelegating implements PersistenceSessionFa
private List<Object> serviceList;
private Boolean fixturesInstalled;
-
+
private PojoRecreator pojoRecreator;
private ObjectAdapterFactory adapterFactory;
- private ObjectFactory objectFactory;
private IdentifierGenerator identifierGenerator;
private ServicesInjectorSpi servicesInjector;
private RuntimeContext runtimeContext;
@@ -107,12 +104,10 @@ public class PersistenceSessionFactoryDelegating implements PersistenceSessionFa
pojoRecreator = persistenceSessionFactoryDelegate.createPojoRecreator(getConfiguration());
adapterFactory = persistenceSessionFactoryDelegate.createAdapterFactory(getConfiguration());
- objectFactory = persistenceSessionFactoryDelegate.createObjectFactory(getConfiguration());
identifierGenerator = persistenceSessionFactoryDelegate.createIdentifierGenerator(getConfiguration());
ensureThatState(pojoRecreator, is(not(nullValue())));
ensureThatState(adapterFactory, is(not(nullValue())));
- ensureThatState(objectFactory, is(not(nullValue())));
ensureThatState(identifierGenerator, is(not(nullValue())));
servicesInjector = persistenceSessionFactoryDelegate.createServicesInjector(getConfiguration());
@@ -162,10 +157,6 @@ public class PersistenceSessionFactoryDelegating implements PersistenceSessionFa
return identifierGenerator;
}
- public ObjectFactory getObjectFactory() {
- return objectFactory;
- }
-
public PojoRecreator getPojoRecreator() {
return pojoRecreator;
}
@@ -183,11 +174,6 @@ public class PersistenceSessionFactoryDelegating implements PersistenceSessionFa
// //////////////////////////////////////////////////////
@Override
- public ClassSubstitutor createClassSubstitutor(final IsisConfiguration configuration) {
- return persistenceSessionFactoryDelegate.createClassSubstitutor(configuration);
- }
-
- @Override
public void refineMetaModelValidator(MetaModelValidatorComposite metaModelValidator, IsisConfiguration configuration) {
persistenceSessionFactoryDelegate.refineMetaModelValidator(metaModelValidator, configuration);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectfactory/ObjectFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectfactory/ObjectFactoryAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectfactory/ObjectFactoryAbstract.java
deleted file mode 100644
index 8edd371..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectfactory/ObjectFactoryAbstract.java
+++ /dev/null
@@ -1,134 +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.runtime.persistence.objectfactory;
-
-import java.lang.reflect.Modifier;
-
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpiAware;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.ObjectFactory;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-
-/**
- * Abstract adapter for {@link ObjectFactory}.
- *
- * <p>
- * Implementation note: rather than use the <tt>*Aware</tt> interfaces, we
- * instead look up dependencies from the {@link IsisContext}. This is necessary,
- * for the {@link PersistenceSession} at least, because class enhancers may hold
- * a reference to the factory as part of the generated bytecode. Since the
- * {@link PersistenceSession} could change over the lifetime of the instance (eg
- * when using the {@link InMemoryObjectStore}), we must always look the
- * {@link PersistenceSession} from the {@link IsisContext}. The same applies to
- * the {@link ServicesInjectorSpi}.
- *
- * <p>
- * In theory it would be possible to cache the {@link SpecificationLoaderSpi} and
- * inject using {@link SpecificationLoaderSpiAware}, but since we are already using
- * the {@link IsisContext}, decided instead to use the same approach throughout.
- */
-public abstract class ObjectFactoryAbstract implements ObjectFactory {
-
- private final Mode mode;
-
- public enum Mode {
- /**
- * Fail if no {@link ObjectAdapterPersistor} has been injected.
- */
- STRICT,
- /**
- * Ignore if no {@link ObjectAdapterPersistor} has been injected
- * (intended for testing only).
- */
- RELAXED
- }
-
- public ObjectFactoryAbstract() {
- this(Mode.STRICT);
- }
-
- public ObjectFactoryAbstract(final Mode mode) {
- this.mode = mode;
- }
-
- @Override
- public <T> T instantiate(final Class<T> cls) throws ObjectInstantiationException {
-
- if (mode == Mode.STRICT && getServicesInjector() == null) {
- throw new IllegalStateException("ServicesInjector has not been injected into ObjectFactory");
- }
- if (Modifier.isAbstract(cls.getModifiers())) {
- throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
- }
- final T newInstance = doInstantiate(cls);
-
- if (getServicesInjector() != null) {
- getServicesInjector().injectServicesInto(newInstance);
- }
- return newInstance;
- }
-
- // /////////////////////////////////////////////////////////////////
- // open, close
- // /////////////////////////////////////////////////////////////////
-
- /**
- * Default implementation does nothing.
- */
- @Override
- public void open() {
- }
-
- /**
- * Default implementation does nothing.
- */
- @Override
- public void close() {
- }
-
- // /////////////////////////////////////////////////////////////////
- // doInstantiate
- // /////////////////////////////////////////////////////////////////
-
- /**
- * Hook method for subclasses to override.
- */
- protected abstract <T> T doInstantiate(Class<T> cls) throws ObjectInstantiationException;
-
- // /////////////////////////////////////////////////////////////////
- // Dependencies (looked up from context)
- // /////////////////////////////////////////////////////////////////
-
- protected SpecificationLoaderSpi getSpecificationLoader() {
- return IsisContext.getSpecificationLoader();
- }
-
- protected PersistenceSession getPersistenceSession() {
- return IsisContext.getPersistenceSession();
- }
-
- protected ServicesInjectorSpi getServicesInjector() {
- return getPersistenceSession().getServicesInjector();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java
index 4e09735..7f4aa22 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java
@@ -29,7 +29,6 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.debug.DebugBuilder;
import org.apache.isis.core.commons.debug.DebuggableWithTitle;
import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.facetapi.ClassSubstitutorFactory;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
@@ -256,7 +255,7 @@ public abstract class IsisSystemFixturesHookAbstract implements IsisSystem {
// Reflector
// ///////////////////////////////////////////
- protected abstract SpecificationLoaderSpi obtainSpecificationLoaderSpi(DeploymentType deploymentType, ClassSubstitutorFactory classSubstitutorFactory, Collection<MetaModelRefiner> metaModelRefiners) throws IsisSystemException;
+ protected abstract SpecificationLoaderSpi obtainSpecificationLoaderSpi(DeploymentType deploymentType, Collection<MetaModelRefiner> metaModelRefiners) throws IsisSystemException;
// ///////////////////////////////////////////
// PersistenceSessionFactory
http://git-wip-us.apache.org/repos/asf/isis/blob/a22b88f9/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
index a7d5614..332eca6 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
@@ -19,15 +19,79 @@
package org.apache.isis.core.runtime.system.persistence;
-import org.apache.isis.core.commons.components.SessionScopedComponent;
+import java.lang.reflect.Modifier;
+import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
+import org.apache.isis.core.runtime.system.context.IsisContext;
-public interface ObjectFactory extends SessionScopedComponent {
+public class ObjectFactory {
+
+ private final Mode mode;
+
+ public enum Mode {
+ /**
+ * Fail if no {@link ObjectFactory#getServicesInjector() services injector} has been injected.
+ */
+ STRICT,
+ /**
+ * Ignore if no {@link ObjectFactory#getServicesInjector() services injector} has been injected
+ * (intended for testing only).
+ */
+ RELAXED
+ }
+
+ public ObjectFactory() {
+ this(Mode.STRICT);
+ }
+
+ public ObjectFactory(final Mode mode) {
+ this.mode = mode;
+ }
+
+ public <T> T instantiate(final Class<T> cls) throws ObjectInstantiationException {
+
+ if (mode == Mode.STRICT && getServicesInjector() == null) {
+ throw new IllegalStateException("ServicesInjector is not available (no open session)");
+ }
+ if (Modifier.isAbstract(cls.getModifiers())) {
+ throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
+ }
+ final T newInstance = doInstantiate(cls);
+
+ if (getServicesInjector() != null) {
+ getServicesInjector().injectServicesInto(newInstance);
+ }
+ return newInstance;
+ }
+
+
+ //region > doInstantiate
/**
- * Should instantiate the object, and in addition initialize the domain
- * object (for example, inject any services and repositories into it).
- *
+ * Simply instantiates reflectively.
*/
- <T> T instantiate(Class<T> cls) throws ObjectInstantiationException;
+ protected <T> T doInstantiate(final Class<T> cls) throws ObjectInstantiationException {
+ if (Modifier.isAbstract(cls.getModifiers())) {
+ throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
+ }
+ try {
+ return cls.newInstance();
+ } catch (final IllegalAccessException | InstantiationException e) {
+ throw new ObjectInstantiationException(e);
+ }
+ }
+ //endregion
+
+ //region > dependencies (looked up from context)
+
+ private PersistenceSession getPersistenceSession() {
+ return IsisContext.getPersistenceSession();
+ }
+
+ protected ServicesInjectorSpi getServicesInjector() {
+ return getPersistenceSession().getServicesInjector();
+ }
+
+ //endregion
+
}