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 2015/09/11 00:08:36 UTC
[12/50] isis git commit: ISIS-1194: moving
ObjectSpecification#createObject to PersistenceSession.
ISIS-1194: moving ObjectSpecification#createObject to PersistenceSession.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/96abb170
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/96abb170
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/96abb170
Branch: refs/heads/master
Commit: 96abb17027ad485612bcd6811e3b63f17e2c2418
Parents: 7da8aa5
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 14:33:13 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 14:33:13 2015 +0100
----------------------------------------------------------------------
.../metamodel/spec/ObjectSpecification.java | 1 -
.../dflt/ObjectSpecificationDefault.java | 29 -------------
.../ObjectSpecificationOnStandaloneList.java | 6 ---
.../testspec/ObjectSpecificationStub.java | 11 +----
.../isis/core/runtime/memento/Memento.java | 4 +-
.../adaptermanager/AdapterManagerDefault.java | 5 ++-
...shingServiceWithDefaultPayloadFactories.java | 3 +-
.../system/persistence/PersistenceSession.java | 43 +++++++++++++++++++-
8 files changed, 49 insertions(+), 53 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/96abb170/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
index 5a0f605..e59ae4f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
@@ -335,7 +335,6 @@ public interface ObjectSpecification extends Specification, ObjectActionContaine
// Creation
// //////////////////////////////////////////////////////////////
- Object createObject();
/**
* REVIEW: should this behaviour move, eg onto ObjectAdapter?
http://git-wip-us.apache.org/repos/asf/isis/blob/96abb170/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 5ff3e3b..effa99a 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
@@ -411,35 +411,6 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
// //////////////////////////////////////////////////////////////////////
- @Override
- public Object createObject() {
- if (getCorrespondingClass().isArray()) {
- return Array.newInstance(getCorrespondingClass().getComponentType(), 0);
- }
-
- try {
- final Class<?> cls = getCorrespondingClass();
-
- if (Modifier.isAbstract(cls.getModifiers())) {
- throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
- }
- final Object newInstance;
- if (Modifier.isAbstract(cls.getModifiers())) {
- throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
- }
- try {
- newInstance = cls.newInstance();
- } catch (final IllegalAccessException | InstantiationException e) {
- throw new ObjectInstantiationException(e);
- }
-
- getDependencyInjector().injectServicesInto(newInstance);
- return newInstance;
- } catch (final ObjectInstantiationException e) {
- throw new IsisException("Failed to create instance of type " + getFullIdentifier(), e);
- }
- }
-
/**
* REVIEW: does this behaviour live best here? Not that sure that it does...
*/
http://git-wip-us.apache.org/repos/asf/isis/blob/96abb170/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
index 18ce582..a7f88c3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
@@ -182,11 +182,5 @@ public class ObjectSpecificationOnStandaloneList extends ObjectSpecificationAbst
}
- @Override
- public Object createObject() {
- throw new UnsupportedOperationException(getFullIdentifier());
- }
-
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/96abb170/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
index 9fa6c1b..4f0eb63 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
@@ -324,20 +324,11 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
}
@Override
- public Object createObject() {
- try {
- final Class<?> cls = Class.forName(name);
- return cls.newInstance();
- } catch (final ClassNotFoundException | InstantiationException | IllegalAccessException e) {
- throw new IsisException(e);
- }
- }
-
- @Override
public ObjectAdapter initialize(final ObjectAdapter objectAdapter) {
return objectAdapter;
}
+ // TODO: not used
public void setupPersistable(final Persistability persistable) {
this.persistable = persistable;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/96abb170/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
index 9484d7f..91cb87a 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
@@ -203,8 +203,8 @@ public class Memento implements Serializable {
final Oid oid = getOid();
if (spec.isParentedOrFreeCollection()) {
-
- final Object recreatedPojo = spec.createObject();
+
+ final Object recreatedPojo = getPersistenceSession().createObject(spec);
adapter = getPersistenceSession().getAdapterManager() .mapRecreatedPojo(oid, recreatedPojo);
populateCollection(adapter, (CollectionData) data);
http://git-wip-us.apache.org/repos/asf/isis/blob/96abb170/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
index 756db86..d04366c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
@@ -371,7 +371,7 @@ public class AdapterManagerDefault implements AdapterManager,
private Object recreatePojoDefault(final RootOid rootOid) {
final ObjectSpecification spec =
specificationLoader.lookupBySpecId(rootOid.getObjectSpecId());
- final Object pojo = spec.createObject();
+ final Object pojo = persistenceSession.createObject(spec);
if(rootOid.isViewModel()) {
// initialize the view model pojo from the oid's identifier
@@ -748,7 +748,8 @@ public class AdapterManagerDefault implements AdapterManager,
// take care not to touch the pojo, since it might have been deleted.
ensureThatArg(
adapter, is(adapterAccordingToOidAdapterMap),
- "mismatch in OidAdapter map: " + "adapter's Oid: " + adapterOid + ", " + "provided adapter's OID: " + adapter.getOid() + "; " + "map's adapter's Oid: " + adapterAccordingToOidAdapterMap.getOid());
+ "mismatch in OidAdapter map: " + "adapter's Oid: " + adapterOid + ", " + "provided adapter's OID: "
+ + adapter.getOid() + "; " + "map's adapter's Oid: " + adapterAccordingToOidAdapterMap.getOid());
}
//endregion
http://git-wip-us.apache.org/repos/asf/isis/blob/96abb170/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PublishingServiceWithDefaultPayloadFactories.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PublishingServiceWithDefaultPayloadFactories.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PublishingServiceWithDefaultPayloadFactories.java
index 9ebfd88..9f00b33 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PublishingServiceWithDefaultPayloadFactories.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PublishingServiceWithDefaultPayloadFactories.java
@@ -57,7 +57,8 @@ public class PublishingServiceWithDefaultPayloadFactories {
}
// objectstores such as JDO prevent the underlying pojo from being touched once it has been deleted.
// we therefore replace that pojo with an 'empty' one.
- Object replacementObject = adapter.getSpecification().createObject();
+
+ Object replacementObject = getPersistenceSession().createObject(adapter.getSpecification());
getPersistenceSession().getAdapterManager().remapRecreatedPojo(adapter, replacementObject);
return adapter;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/96abb170/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index 5cae6b5..aa18041 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -18,6 +18,8 @@
*/
package org.apache.isis.core.runtime.system.persistence;
+import java.lang.reflect.Array;
+import java.lang.reflect.Modifier;
import java.text.MessageFormat;
import java.util.List;
import java.util.Map;
@@ -43,6 +45,7 @@ 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.commons.ensure.Assert;
+import org.apache.isis.core.commons.exceptions.IsisException;
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;
@@ -55,6 +58,7 @@ import org.apache.isis.core.metamodel.services.ServiceUtil;
import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
import org.apache.isis.core.metamodel.spec.FreeStandingList;
+import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
@@ -382,21 +386,56 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
if (LOG.isDebugEnabled()) {
LOG.debug("creating transient instance of " + objectSpec);
}
- final Object pojo = objectSpec.createObject();
+ final Object pojo = createObject(objectSpec);
final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
return objectSpec.initialize(adapter);
}
+
+
public ObjectAdapter createViewModelInstance(final ObjectSpecification objectSpec, final String memento) {
if (LOG.isDebugEnabled()) {
LOG.debug("creating view model instance of " + objectSpec);
}
- final Object pojo = objectSpec.createObject();
+ final Object pojo = createObject(objectSpec);
final ViewModelFacet facet = objectSpec.getFacet(ViewModelFacet.class);
facet.initialize(pojo, memento);
final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
return objectSpec.initialize(adapter);
}
+
+
+ public Object createObject(final ObjectSpecification objectSpec) {
+
+ final Class<?> correspondingClass = objectSpec.getCorrespondingClass();
+ if (correspondingClass.isArray()) {
+ return Array.newInstance(correspondingClass.getComponentType(), 0);
+ }
+
+ try {
+ final Class<?> cls = correspondingClass;
+
+ if (Modifier.isAbstract(cls.getModifiers())) {
+ throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
+ }
+ final Object newInstance;
+ if (Modifier.isAbstract(cls.getModifiers())) {
+ throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
+ }
+ try {
+ newInstance = cls.newInstance();
+ } catch (final IllegalAccessException | InstantiationException e) {
+ throw new ObjectInstantiationException(e);
+ }
+
+ servicesInjector.injectServicesInto(newInstance);
+ return newInstance;
+ } catch (final ObjectInstantiationException e) {
+ throw new IsisException("Failed to create instance of type " + objectSpec.getFullIdentifier(), e);
+ }
+ }
+
+
//endregion
//region > findInstancesInTransaction