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:28 UTC

[04/50] isis git commit: ISIS-1194: inlining functionality of PojoRecreator into AdapterManagerDefault

ISIS-1194: inlining functionality of PojoRecreator into AdapterManagerDefault


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/10bdb630
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/10bdb630
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/10bdb630

Branch: refs/heads/master
Commit: 10bdb63013a4f9670f27142e997bbc8e53629e4a
Parents: 52eb2ab
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 11:03:32 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 11:03:32 2015 +0100

----------------------------------------------------------------------
 .../adaptermanager/AdapterManagerDefault.java   | 36 +++++++--
 .../adaptermanager/PojoRecreator.java           | 80 --------------------
 .../system/persistence/PersistenceSession.java  |  4 +-
 .../persistence/PersistenceSessionTest.java     |  3 +-
 4 files changed, 32 insertions(+), 91 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/10bdb630/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 13f821f..53f0547 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
@@ -48,6 +48,7 @@ import org.apache.isis.core.metamodel.facets.actcoll.typeof.ElementSpecification
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.object.parented.ParentedCollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
+import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -93,7 +94,6 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
 
     private final PersistenceSession persistenceSession;
     private final SpecificationLoaderSpi specificationLoader;
-    private final PojoRecreator pojoRecreator;
     private final OidMarshaller oidMarshaller;
     private final OidGenerator oidGenerator;
     private final AuthenticationSession authenticationSession;
@@ -106,15 +106,13 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
 
     /**
      * For object store implementations (eg JDO) that do not provide any mechanism
-     * to allow transient objects to be reattached; can instead provide a
-     * {@link PojoRecreator} implementation that is injected into the Adapter Manager.
+     * to allow transient objects to be reattached.
      * 
      * @see <a href="http://www.datanucleus.org/servlet/forum/viewthread_thread,7238_lastpage,yes#35976">this thread</a>
      */
     public AdapterManagerDefault(
             final PersistenceSession persistenceSession,
             final SpecificationLoaderSpi specificationLoader,
-            final PojoRecreator pojoRecreator,
             final OidMarshaller oidMarshaller,
             final OidGenerator oidGenerator,
             final AuthenticationSession authenticationSession,
@@ -122,7 +120,6 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
             final IsisConfiguration configuration) {
         this.persistenceSession = persistenceSession;
         this.specificationLoader = specificationLoader;
-        this.pojoRecreator = pojoRecreator;
         this.oidMarshaller = oidMarshaller;
         this.oidGenerator = oidGenerator;
         this.authenticationSession = authenticationSession;
@@ -333,7 +330,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         if (adapter == null) {
             // else recreate
             try {
-                final Object pojo = pojoRecreator.recreatePojo(rootOid);
+                final Object pojo = recreatePojo(rootOid);
                 adapter = mapRecreatedPojo(rootOid, pojo);
             } catch(ObjectNotFoundException ex) {
                 throw ex; // just rethrow
@@ -385,6 +382,33 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         return adapter;
     }
 
+    public Object recreatePojo(RootOid oid) {
+        if(oid.isTransient() || oid.isViewModel()) {
+            return recreatePojoDefault(oid);
+        } else {
+            return getPersistenceSession().loadPojo(oid);
+        }
+    }
+
+    private Object recreatePojoDefault(final RootOid rootOid) {
+        final ObjectSpecification spec =
+                getSpecificationLoader().lookupBySpecId(rootOid.getObjectSpecId());
+        final Object pojo = spec.createObject();
+        if(rootOid.isViewModel()) {
+            // initialize the view model pojo from the oid's identifier
+
+            final ViewModelFacet facet = spec.getFacet(ViewModelFacet.class);
+            if(facet == null) {
+                throw new IllegalArgumentException("spec does not have RecreatableObjectFacet; " + rootOid.toString() + "; spec is " + spec.getFullIdentifier());
+            }
+
+            final String memento = rootOid.getIdentifier();
+
+            facet.initialize(pojo, memento);
+        }
+        return pojo;
+    }
+
     public void remapRecreatedPojo(ObjectAdapter adapter, final Object pojo) {
         removeAdapter(adapter);
         adapter.replacePojo(pojo);

http://git-wip-us.apache.org/repos/asf/isis/blob/10bdb630/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreator.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreator.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreator.java
deleted file mode 100644
index c23505c..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreator.java
+++ /dev/null
@@ -1,80 +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.adaptermanager;
-
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-
-public class PojoRecreator {
-
-    private final PersistenceSession persistenceSession;
-    private final SpecificationLoaderSpi specificationLoader;
-
-    public PojoRecreator(
-            final PersistenceSession persistenceSession,
-            final SpecificationLoaderSpi specificationLoader) {
-        this.persistenceSession = persistenceSession;
-        this.specificationLoader = specificationLoader;
-    }
-
-    public Object recreatePojo(RootOid oid) {
-        if(oid.isTransient() || oid.isViewModel()) {
-            return recreatePojoDefault(oid);
-        } else {
-            return getPersistenceSession().loadPojo(oid);
-        }
-    }
-
-    private Object recreatePojoDefault(final RootOid rootOid) {
-        final ObjectSpecification spec =
-                getSpecificationLoader().lookupBySpecId(rootOid.getObjectSpecId());
-        final Object pojo = spec.createObject();
-        if(rootOid.isViewModel()) {
-            // initialize the view model pojo from the oid's identifier
-
-            final ViewModelFacet facet = spec.getFacet(ViewModelFacet.class);
-            if(facet == null) {
-                throw new IllegalArgumentException("spec does not have RecreatableObjectFacet; " + rootOid.toString() + "; spec is " + spec.getFullIdentifier());
-            }
-
-            final String memento = rootOid.getIdentifier();
-
-            facet.initialize(pojo, memento);
-        }
-        return pojo;
-    }
-
-
-
-
-    ///////////////////////////////
-
-
-    protected SpecificationLoaderSpi getSpecificationLoader() {
-        return specificationLoader;
-    }
-
-    protected PersistenceSession getPersistenceSession() {
-        return persistenceSession;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/10bdb630/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 4cbd135..5cae6b5 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
@@ -64,7 +64,6 @@ import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.persistence.PojoRefreshException;
 import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
 import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
-import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreator;
 import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithm;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
@@ -175,8 +174,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         this.objectFactory = new ObjectFactory(this, servicesInjector);
         this.oidGenerator = new OidGenerator(this, specificationLoader);
 
-        final PojoRecreator pojoRecreator = new PojoRecreator(this, specificationLoader);
-        this.adapterManager = new AdapterManagerDefault(this, specificationLoader, pojoRecreator, oidMarshaller,
+        this.adapterManager = new AdapterManagerDefault(this, specificationLoader, oidMarshaller,
                 oidGenerator, authenticationSession, servicesInjector, configuration);
         this.persistAlgorithm = new PersistAlgorithm();
 

http://git-wip-us.apache.org/repos/asf/isis/blob/10bdb630/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
index daf9997..040203a 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
@@ -44,7 +44,6 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 import org.apache.isis.core.metamodel.specloader.InjectorMethodEvaluatorDefault;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
 import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
-import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreator;
 import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
@@ -156,7 +155,7 @@ public class PersistenceSessionTest {
             }
             
         };
-        adapterManager = new AdapterManagerDefault(persistenceSession, mockSpecificationLoader, new PojoRecreator(persistenceSession, mockSpecificationLoader),
+        adapterManager = new AdapterManagerDefault(persistenceSession, mockSpecificationLoader,
                 new OidMarshaller(), mockOidGenerator, mockAuthenticationSession, servicesInjector,
                 mockConfiguration);