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

[01/50] isis git commit: ISIS-1194: inlined PersistenceSession#findInstances (overload) and renamed to findInstancesInTransaction

Repository: isis
Updated Branches:
  refs/heads/master a63e465fe -> 02e41b3dd


ISIS-1194: inlined PersistenceSession#findInstances (overload) and renamed to findInstancesInTransaction


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

Branch: refs/heads/master
Commit: 241b67f00f8c522a06c19b76352e6bbe7ef703b5
Parents: fc05d14
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 10:27:31 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 10:27:31 2015 +0100

----------------------------------------------------------------------
 .../internal/RuntimeContextFromSession.java      |  6 ++++--
 .../system/persistence/PersistenceSession.java   | 19 +------------------
 2 files changed, 5 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/241b67f0/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
index 1fda389..bde63e7 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
@@ -266,13 +266,15 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
 
             @Override
             public <T> List<ObjectAdapter> allMatchingQuery(final Query<T> query) {
-                final ObjectAdapter instances = getPersistenceSession().findInstances(query, QueryCardinality.MULTIPLE);
+                final ObjectAdapter instances = getPersistenceSession().findInstancesInTransaction(query,
+                        QueryCardinality.MULTIPLE);
                 return CollectionFacetUtils.convertToAdapterList(instances);
             }
 
             @Override
             public <T> ObjectAdapter firstMatchingQuery(final Query<T> query) {
-                final ObjectAdapter instances = getPersistenceSession().findInstances(query, QueryCardinality.SINGLE);
+                final ObjectAdapter instances = getPersistenceSession().findInstancesInTransaction(query,
+                        QueryCardinality.SINGLE);
                 final List<ObjectAdapter> list = CollectionFacetUtils.convertToAdapterList(instances);
                 return list.size() > 0 ? list.get(0) : null;
             }

http://git-wip-us.apache.org/repos/asf/isis/blob/241b67f0/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 3512cf1..4d33b49 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
@@ -415,29 +415,12 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
      * @throws org.apache.isis.core.runtime.persistence.UnsupportedFindException
      *             if the criteria is not support by this persistor
      */
-    public <T> ObjectAdapter findInstances(final Query<T> query, final QueryCardinality cardinality) {
+    public <T> ObjectAdapter findInstancesInTransaction(final Query<T> query, final QueryCardinality cardinality) {
         if (LOG.isDebugEnabled()) {
             LOG.debug("findInstances using (applib) Query: " + query);
         }
 
         final PersistenceQuery persistenceQuery = createPersistenceQueryFor(query, cardinality);
-        return findInstances(persistenceQuery);
-    }
-
-    /**
-     * Finds and returns instances that match the specified
-     * {@link PersistenceQuery}.
-     *
-     * <p>
-     * Compared to {@link #findInstances(Query, QueryCardinality)}, not that
-     * there is no {@link QueryCardinality} parameter. That's because
-     * {@link PersistenceQuery} intrinsically carry the knowledge as to how many
-     * rows they return.
-     *
-     * @throws org.apache.isis.core.runtime.persistence.UnsupportedFindException
-     *             if the criteria is not support by this persistor
-     */
-    private ObjectAdapter findInstances(final PersistenceQuery persistenceQuery) {
         if (LOG.isDebugEnabled()) {
             LOG.debug("findInstances using (core runtime) PersistenceQuery: " + persistenceQuery);
         }


[14/50] isis git commit: ISIS-1194: moving ObjectSpecificationDefault#initialize to PersistenceSession

Posted by da...@apache.org.
ISIS-1194: moving ObjectSpecificationDefault#initialize to PersistenceSession


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

Branch: refs/heads/master
Commit: 604acc3577c1d9c22d06882493df1a0ebd57bd9d
Parents: 2887446
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 14:40:22 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 14:42:31 2015 +0100

----------------------------------------------------------------------
 .../metamodel/spec/ObjectSpecification.java     | 10 ------
 .../specimpl/ObjectSpecificationAbstract.java   |  8 -----
 .../dflt/ObjectSpecificationDefault.java        | 33 +++-----------------
 .../system/persistence/PersistenceSession.java  | 22 +++++++++++--
 4 files changed, 24 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/604acc35/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 e59ae4f..0aa950e 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
@@ -331,16 +331,6 @@ public interface ObjectSpecification extends Specification, ObjectActionContaine
      */
     boolean isHidden();
 
-    // //////////////////////////////////////////////////////////////
-    // Creation
-    // //////////////////////////////////////////////////////////////
-
-
-    /**
-     * REVIEW: should this behaviour move, eg onto ObjectAdapter?
-     */
-    ObjectAdapter initialize(ObjectAdapter object);
-
 
 
     // //////////////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/604acc35/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index c980252..9422e67 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -1143,14 +1143,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         return isValue() || isParented();
     }
 
-    // //////////////////////////////////////////////////////////////////////
-    // misc
-    // //////////////////////////////////////////////////////////////////////
-
-    @Override
-    public ObjectAdapter initialize(ObjectAdapter objectAdapter) {
-        return objectAdapter;
-    }
 
     // //////////////////////////////////////////////////////////////////////
     // toString

http://git-wip-us.apache.org/repos/asf/isis/blob/604acc35/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 effa99a..3e87171 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
@@ -19,22 +19,22 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl.dflt;
 
-import java.lang.reflect.Array;
 import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.filter.Filters;
 import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.commons.debug.DebuggableWithTitle;
-import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -46,8 +46,6 @@ import org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated;
 import org.apache.isis.core.metamodel.facets.all.i18n.PluralFacetTranslated;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred;
-import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacet;
 import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
 import org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred;
@@ -57,10 +55,9 @@ import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.facets.object.wizard.WizardFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.ObjectSpecificationException;
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationDependencies;
+import org.apache.isis.core.metamodel.spec.ObjectSpecificationException;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -406,28 +403,6 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
         return null;
     }
 
-    // //////////////////////////////////////////////////////////////////////
-    // createObject
-    // //////////////////////////////////////////////////////////////////////
-
-
-    /**
-     * REVIEW: does this behaviour live best here?  Not that sure that it does...
-     */
-    @Override
-    public ObjectAdapter initialize(final ObjectAdapter adapter) {
-                        
-        // initialize new object
-        final List<ObjectAssociation> fields = adapter.getSpecification().getAssociations(Contributed.EXCLUDED);
-        for (ObjectAssociation field : fields) {
-            field.toDefault(adapter);
-        }
-        getDependencyInjector().injectServicesInto(adapter.getObject());
-
-        CallbackFacet.Util.callCallback(adapter, CreatedCallbackFacet.class);
-
-        return adapter;
-    }
 
 
     // //////////////////////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/604acc35/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 aa18041..a942e54 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
@@ -53,6 +53,8 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
@@ -62,6 +64,8 @@ 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;
+import org.apache.isis.core.metamodel.spec.feature.Contributed;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
 import org.apache.isis.core.runtime.persistence.NotPersistableException;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
@@ -388,7 +392,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         }
         final Object pojo = createObject(objectSpec);
         final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
-        return objectSpec.initialize(adapter);
+        return initialize(adapter);
     }
 
 
@@ -401,7 +405,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         final ViewModelFacet facet = objectSpec.getFacet(ViewModelFacet.class);
         facet.initialize(pojo, memento);
         final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
-        return objectSpec.initialize(adapter);
+        return initialize(adapter);
     }
 
 
@@ -435,6 +439,20 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         }
     }
 
+    public ObjectAdapter initialize(final ObjectAdapter adapter) {
+
+        // initialize new object
+        final List<ObjectAssociation> fields = adapter.getSpecification().getAssociations(Contributed.EXCLUDED);
+        for (ObjectAssociation field : fields) {
+            field.toDefault(adapter);
+        }
+        servicesInjector.injectServicesInto(adapter.getObject());
+
+        CallbackFacet.Util.callCallback(adapter, CreatedCallbackFacet.class);
+
+        return adapter;
+    }
+
 
     //endregion
 


[05/50] isis git commit: ISIS-1194: adding regions (comments) for AdapterManagerDefault

Posted by da...@apache.org.
ISIS-1194: adding regions (comments) for AdapterManagerDefault


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

Branch: refs/heads/master
Commit: fce6ed7004ae7d0675d1e7ad342ee8aab584f3c2
Parents: 10bdb63
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 11:17:54 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 11:17:54 2015 +0100

----------------------------------------------------------------------
 .../adaptermanager/AdapterManagerDefault.java   | 144 ++++++++-----------
 1 file changed, 57 insertions(+), 87 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/fce6ed70/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 53f0547..b556fa0 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
@@ -46,7 +46,6 @@ import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.ElementSpecificationProviderFromTypeOfFacet;
 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;
@@ -89,6 +88,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
 
     private static final Logger LOG = LoggerFactory.getLogger(AdapterManagerDefault.class);
 
+    //region > constructor and fields
     protected final PojoAdapterHashMap pojoAdapterMap = new PojoAdapterHashMap();
     protected final OidAdapterHashMap oidAdapterMap = new OidAdapterHashMap();
 
@@ -126,11 +126,9 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         this.servicesInjector = servicesInjector;
         this.configuration = configuration;
     }
+    //endregion
 
-    // //////////////////////////////////////////////////////////////////
-    // open, close
-    // //////////////////////////////////////////////////////////////////
-
+    //region > open, close
     @Override
     public void open() {
         oidAdapterMap.open();
@@ -142,33 +140,27 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         oidAdapterMap.close();
         pojoAdapterMap.close();
     }
+    //endregion
 
-    // //////////////////////////////////////////////////////////////////
-    // reset
-    // //////////////////////////////////////////////////////////////////
-
+    //region > reset
     @Override
     public void reset() {
         oidAdapterMap.reset();
         pojoAdapterMap.reset();
     }
+    //endregion
 
-    // //////////////////////////////////////////////////////////////////
-    // Iterable
-    // //////////////////////////////////////////////////////////////////
+    //region > iterable
 
     @Override
     public Iterator<ObjectAdapter> iterator() {
         return pojoAdapterMap.iterator();
     }
+    //endregion
 
 
-    
-
-    // //////////////////////////////////////////////////////////////////
-    // Adapter lookup
-    // //////////////////////////////////////////////////////////////////
 
+    //region > getAdapterFor
     @Override
     public ObjectAdapter getAdapterFor(final Object pojo) {
         ensureThatArg(pojo, is(notNullValue()));
@@ -183,11 +175,9 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
 
         return oidAdapterMap.getAdapter(oid);
     }
+    //endregion
 
-    
-    // //////////////////////////////////////////////////////////////////
-    // Adapter lookup/creation
-    // //////////////////////////////////////////////////////////////////
+    //region > adapterFor
 
     /**
      * {@inheritDoc}
@@ -227,13 +217,14 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         
         // we create value facets as standalone (so not added to maps)
         if (objSpec.containsFacet(ValueFacet.class)) {
-            ObjectAdapter valueAdapter = createStandaloneAdapterAndSetResolveState(pojo);
+            ObjectAdapter valueAdapter = createStandaloneAdapter(pojo);
             return valueAdapter;
         }
         
         return null;
     }
 
+
     /**
      * {@inheritDoc}
      */
@@ -273,15 +264,14 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         return mapAndInjectServices(newAdapter);
     }
 
-    
     /**
      * Creates an {@link ObjectAdapter adapter} to represent a collection
      * of the parent.
-     * 
+     *
      * <p>
      * The returned adapter will have a {@link ParentedCollectionOid}; its version
      * and its persistence are the same as its owning parent.
-     * 
+     *
      * <p>
      * Should only be called if the pojo is known not to be
      * {@link #getAdapterFor(Object) mapped}.
@@ -307,23 +297,18 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         return collectionAdapter;
     }
 
-    private static boolean isAggregated(final ObjectSpecification objSpec) {
-        return objSpec.containsFacet(ParentedCollectionFacet.class);
-    }
 
-    
-    // //////////////////////////////////////////////////////////////////
-    // Recreate adapter
-    // //////////////////////////////////////////////////////////////////
+
 
     @Override
     public ObjectAdapter adapterFor(final RootOid rootOid) {
         return adapterFor(rootOid, AdapterManager.ConcurrencyChecking.NO_CHECK);
     }
 
-
     @Override
-    public ObjectAdapter adapterFor(final RootOid rootOid, final AdapterManager.ConcurrencyChecking concurrencyChecking) {
+    public ObjectAdapter adapterFor(
+            final RootOid rootOid,
+            final AdapterManager.ConcurrencyChecking concurrencyChecking) {
 
         // attempt to locate adapter for the Oid
         ObjectAdapter adapter = getAdapterFor(rootOid);
@@ -382,17 +367,17 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         return adapter;
     }
 
-    public Object recreatePojo(RootOid oid) {
+    private Object recreatePojo(RootOid oid) {
         if(oid.isTransient() || oid.isViewModel()) {
             return recreatePojoDefault(oid);
         } else {
-            return getPersistenceSession().loadPojo(oid);
+            return persistenceSession.loadPojo(oid);
         }
     }
 
     private Object recreatePojoDefault(final RootOid rootOid) {
         final ObjectSpecification spec =
-                getSpecificationLoader().lookupBySpecId(rootOid.getObjectSpecId());
+                specificationLoader.lookupBySpecId(rootOid.getObjectSpecId());
         final Object pojo = spec.createObject();
         if(rootOid.isViewModel()) {
             // initialize the view model pojo from the oid's identifier
@@ -408,13 +393,17 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         }
         return pojo;
     }
+    //endregion
 
+    //region > remapRecreatedPojo
     public void remapRecreatedPojo(ObjectAdapter adapter, final Object pojo) {
         removeAdapter(adapter);
         adapter.replacePojo(pojo);
         mapAndInjectServices(adapter);
     }
+    //endregion
 
+    //region > mapRecreatedPojo
 
     /**
      * Either returns an existing {@link ObjectAdapter adapter} (as per
@@ -461,6 +450,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         }
         return createdAdapter;
     }
+    //endregion
 
     private boolean isConcurrencyCheckingGloballyEnabled() {
         final boolean disabled = getConfiguration().getBoolean("isis.persistor.disableConcurrencyChecking", false);
@@ -468,11 +458,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
     }
 
 
-    // //////////////////////////////////////////////////////////////////
-    // adapter deletion
-    // //////////////////////////////////////////////////////////////////
-
-
+    //region > removeAdapter
     /**
      * Removes the specified object from both the identity-adapter map, and the
      * pojo-adapter map.
@@ -499,11 +485,9 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
 
         unmap(adapter);
     }
+    //endregion
 
-    // //////////////////////////////////////////////////////////////////
-    // Persist API
-    // //////////////////////////////////////////////////////////////////
-
+    //region > remapAsPersistent
     /**
      * {@inheritDoc}
      * 
@@ -515,7 +499,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
      */
     public void remapAsPersistent(final ObjectAdapter adapter, RootOid hintRootOid) {
         
-        final ObjectAdapter rootAdapter = adapter.getAggregateRoot();  // REVIEW: think this is redundant; would seem this method is only ever called for roots anyway.
+        final ObjectAdapter rootAdapter = adapter.getAggregateRoot();  // TODO: REVIEW: think this is redundant; would seem this method is only ever called for roots anyway.
         final RootOid transientRootOid = (RootOid) rootAdapter.getOid();
 
         // no longer true, because isTransient now looks directly at the underlying pojo's state (for entities)
@@ -616,25 +600,19 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         }
     }
 
-
 	private static Object getCollectionPojo(final OneToManyAssociation association, final ObjectAdapter ownerAdapter) {
         final PropertyOrCollectionAccessorFacet accessor = association.getFacet(PropertyOrCollectionAccessorFacet.class);
         return accessor.getProperty(ownerAdapter, InteractionInitiatedBy.FRAMEWORK);
     }
 
+    //endregion
 
-    // ///////////////////////////////////////////////////////////////////////////
-    // Helpers
-    // ///////////////////////////////////////////////////////////////////////////
-
+    //region > Helpers: createXxxAdapter
     /**
      * Creates a new transient root {@link ObjectAdapter adapter} for the supplied domain
      * object.
-     * 
-     * <p>
-     * Has <tt>protected</tt> visibility just so can be used by subclasses if required.
      */
-    protected final ObjectAdapter createTransientOrViewModelRootAdapter(final Object pojo) {
+    private ObjectAdapter createTransientOrViewModelRootAdapter(final Object pojo) {
         final RootOid rootOid = getOidGenerator().createTransientOrViewModelOid(pojo);
         return createRootAdapter(pojo, rootOid);
     }
@@ -651,7 +629,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
      * {@link #getAdapterFor(Object) mapped}, and for immutable value types
      * referenced.
      */
-    private ObjectAdapter createStandaloneAdapterAndSetResolveState(final Object pojo) {
+    private ObjectAdapter createStandaloneAdapter(final Object pojo) {
         return createAdapter(pojo, null);
     }
 
@@ -659,22 +637,19 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
      * Creates (but does not {@link #mapAndInjectServices(ObjectAdapter) map}) a new 
      * root {@link ObjectAdapter adapter} for the supplied domain object.
      * 
-     * @see #createStandaloneAdapterAndSetResolveState(Object)
+     * @see #createStandaloneAdapter(Object)
      * @see #createCollectionAdapter(Object, ParentedCollectionOid)
      */
     private ObjectAdapter createRootAdapter(final Object pojo, RootOid rootOid) {
         Ensure.ensureThatArg(rootOid, is(not(nullValue())));
-        final ObjectAdapter rootAdapter = createAdapter(pojo, rootOid
-        );
-        return rootAdapter;
+        return createAdapter(pojo, rootOid);
     }
 
-
-    private ObjectAdapter createCollectionAdapter(final Object pojo, ParentedCollectionOid collectionOid) {
+    private ObjectAdapter createCollectionAdapter(
+            final Object pojo,
+            ParentedCollectionOid collectionOid) {
         Ensure.ensureThatArg(collectionOid, is(not(nullValue())));
-        final ObjectAdapter collectionAdapter = createAdapter(pojo, collectionOid
-        );
-        return collectionAdapter;
+        return createAdapter(pojo, collectionOid);
     }
 
     private PojoAdapter createAdapter(
@@ -686,16 +661,9 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
                 specificationLoader, this);
     }
 
-    protected Localization getLocalization() {
-        return IsisContext.getLocalization();
-    }
-
-
-
-    // //////////////////////////////////////////////////////////////////////////
-    // Helpers: map & unmap
-    // //////////////////////////////////////////////////////////////////////////
+    //endregion
 
+    //region > Helpers: mapAndInjectServices & unmap
     private ObjectAdapter mapAndInjectServices(final ObjectAdapter adapter) {
         // since the whole point of this method is to map an adapter that's just been created.
         // so we *don't* call ensureMapsConsistent(adapter); 
@@ -746,10 +714,9 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         pojoAdapterMap.remove(adapter);
     }
 
-    // //////////////////////////////////////////////////////////////////////////
-    // Helpers: ensure invariants
-    // //////////////////////////////////////////////////////////////////////////
+    //endregion
 
+    //region > Helpers: ensure invariants
     /**
      * Fail early if any problems.
      */
@@ -795,11 +762,9 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
                 adapter, is(adapterAccordingToOidAdapterMap),
                 "mismatch in OidAdapter map: " + "adapter's Oid: " + adapterOid + ", " + "provided adapter's OID: " + adapter.getOid() + "; " + "map's adapter's Oid: " + adapterAccordingToOidAdapterMap.getOid());
     }
+    //endregion
 
-    // //////////////////////////////////////////////////////////////////
-    // debug
-    // //////////////////////////////////////////////////////////////////
-
+    //region > debug
     @Override
     public String debugTitle() {
         return "Identity map (adapter manager)";
@@ -815,11 +780,9 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         oidAdapterMap.debugData(debug);
 
     }
+    //endregion
 
-    
-    // //////////////////////////////////////////////////////////////////////////
-    // Injectable
-    // //////////////////////////////////////////////////////////////////////////
+    //region > Injectable
 
     @Override
     public void injectInto(final Object candidate) {
@@ -828,9 +791,10 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
             cast.setAdapterManager(this);
         }
     }
-
+    //endregion
 
     //region > Dependencies (from constructor)
+    // only used for debugging
     protected OidMarshaller getOidMarshaller() {
 		return oidMarshaller;
 	}
@@ -861,5 +825,11 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
 
     //endregion
 
+    //region > dependencies (from context)
+    protected Localization getLocalization() {
+        return IsisContext.getLocalization();
+    }
+    //endregion
+
 
 }


[36/50] isis git commit: ISIS-1194: law of demeter for IsisLifecycleListener2 and FrameworkSynchronizer .. call PersistenceSession instead.

Posted by da...@apache.org.
ISIS-1194: law of demeter for IsisLifecycleListener2 and FrameworkSynchronizer .. call PersistenceSession instead.


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

Branch: refs/heads/master
Commit: 2fad991903df02954a8e1ddf751f9631705d5aa0
Parents: ada327f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:37:48 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:37:48 2015 +0100

----------------------------------------------------------------------
 .../persistence/IsisLifecycleListener2.java     | 19 ++++++-------
 .../system/persistence/PersistenceSession.java  | 29 ++++++++++++++++++++
 .../persistence/IsisLifecycleListener.java      |  2 +-
 3 files changed, 38 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/2fad9919/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
index ae96f87..57defda 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
@@ -44,13 +44,10 @@ public class IsisLifecycleListener2
         SuspendableListener {
 
     private final PersistenceSession persistenceSession;
-    private final FrameworkSynchronizer synchronizer;
 
     public IsisLifecycleListener2(
-            final PersistenceSession persistenceSession,
-            final FrameworkSynchronizer synchronizer) {
+            final PersistenceSession persistenceSession) {
         this.persistenceSession = persistenceSession;
-        this.synchronizer = synchronizer;
     }
 
 
@@ -79,7 +76,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                synchronizer.postLoadProcessingFor(pojo, CalledFrom.EVENT_LOAD);
+                persistenceSession.postLoadProcessingFor(pojo, CalledFrom.EVENT_LOAD);
             }});
     }
 
@@ -89,7 +86,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                synchronizer.preStoreProcessingFor(pojo, CalledFrom.EVENT_PRESTORE);
+                persistenceSession.preStoreProcessingFor(pojo, CalledFrom.EVENT_PRESTORE);
 
             }});
     }
@@ -100,7 +97,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                synchronizer.postStoreProcessingFor(pojo, CalledFrom.EVENT_POSTSTORE);
+                persistenceSession.postStoreProcessingFor(pojo, CalledFrom.EVENT_POSTSTORE);
             }});
     }
 
@@ -110,7 +107,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                synchronizer.preDirtyProcessingFor(pojo, CalledFrom.EVENT_PREDIRTY);
+                persistenceSession.preDirtyProcessingFor(pojo, CalledFrom.EVENT_PREDIRTY);
             }});
     }
 
@@ -132,7 +129,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                synchronizer.preDeleteProcessingFor(pojo, CalledFrom.EVENT_PREDELETE);
+                persistenceSession.preDeleteProcessingFor(pojo, CalledFrom.EVENT_PREDELETE);
             }
         });
     }
@@ -143,7 +140,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                synchronizer.postDeleteProcessingFor(pojo, CalledFrom.EVENT_POSTDELETE);
+                persistenceSession.postDeleteProcessingFor(pojo, CalledFrom.EVENT_POSTDELETE);
             }
         });
     }
@@ -224,7 +221,7 @@ public class IsisLifecycleListener2
         }
         protected void doRun() {
             final Persistable pojo = Utils.persistenceCapableFor(event);
-            synchronizer.ensureRootObject(pojo);
+            persistenceSession.ensureRootObject(pojo);
         }
     }
     

http://git-wip-us.apache.org/repos/asf/isis/blob/2fad9919/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 f5aded2..bc559fc 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
@@ -1191,6 +1191,35 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     }
     //endregion
 
+    //region > FrameworkSynchronizer delegate methods
+
+    public void postDeleteProcessingFor(final Persistable pojo, final FrameworkSynchronizer.CalledFrom calledFrom) {
+        frameworkSynchronizer.postDeleteProcessingFor(pojo, calledFrom);
+    }
+
+    public void preDeleteProcessingFor(final Persistable pojo, final FrameworkSynchronizer.CalledFrom calledFrom) {
+        frameworkSynchronizer.preDeleteProcessingFor(pojo, calledFrom);
+    }
+
+    public void postLoadProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
+        frameworkSynchronizer.postLoadProcessingFor(pojo, calledFrom);
+    }
+
+    public void preStoreProcessingFor(final Persistable pojo, final FrameworkSynchronizer.CalledFrom calledFrom) {
+        frameworkSynchronizer.preStoreProcessingFor(pojo, calledFrom);
+    }
+
+    public void postStoreProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
+        frameworkSynchronizer.postStoreProcessingFor(pojo, calledFrom);
+    }
+
+    public void preDirtyProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
+        frameworkSynchronizer.preDirtyProcessingFor(pojo, calledFrom);
+    }
+    public void ensureRootObject(final Persistable pojo) {
+        frameworkSynchronizer.ensureRootObject(pojo);
+    }
+    //endregion
 
 }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/2fad9919/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
index f138725..e25ecf5 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
@@ -36,6 +36,6 @@ public class IsisLifecycleListener extends IsisLifecycleListener2 {
     public IsisLifecycleListener(
             final PersistenceSession persistenceSession,
             final FrameworkSynchronizer synchronizer) {
-        super(persistenceSession, synchronizer);
+        super(persistenceSession);
     }
 }


[48/50] isis git commit: ISIS-1194: pass PojoAdapter to PersistenceSession, rather than use IsisContext (and don't pass in AdapterManager)

Posted by da...@apache.org.
ISIS-1194: pass PojoAdapter to PersistenceSession, rather than use IsisContext (and don't pass in AdapterManager)

Also:
- tidy up of comments/regions
- inlining of getters to dependencies used only internally


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

Branch: refs/heads/master
Commit: 97eed79626f6ee691333ff547d5057beb4a693a2
Parents: 775871c
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 17:58:53 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 17:58:53 2015 +0100

----------------------------------------------------------------------
 .../persistence/adapter/PojoAdapter.java        | 139 +++++++++----------
 .../adaptermanager/AdapterManagerDefault.java   |   2 +-
 .../system/persistence/PersistenceSession.java  |  61 ++++----
 .../adapterfactory/pojo/PojoAdapterTest.java    |   2 +-
 .../transaction/PojoAdapterBuilder.java         |   2 +-
 5 files changed, 94 insertions(+), 112 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/97eed796/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
index dc44b22..e41acfc 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
@@ -29,10 +29,9 @@ import org.apache.isis.core.commons.ensure.Ensure;
 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;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.adapter.version.Version;
@@ -43,7 +42,7 @@ import org.apache.isis.core.metamodel.spec.InstanceAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.Specification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -53,36 +52,40 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
 
     private final static Logger LOG = LoggerFactory.getLogger(PojoAdapter.class);
 
-    private static final int INCOMPLETE_COLLECTION = -1;
+    //region > Constructor, fields, finalizer
 
+    private final AuthenticationSession authenticationSession;
     private final SpecificationLoader specificationLoader;
-    private final AdapterManager adapterManager;
     private final Localization localization;
-    
+    private final PersistenceSession persistenceSession;
+
+    /**
+     * can be {@link #replacePojo(Object) replace}d.
+     */
     private Object pojo;
+    /**
+     * can be {@link #replaceOid(Oid) replace}d.
+     */
     private Oid oid;
 
+    /**
+     * only for standalone or parented collections.
+     */
     private ElementSpecificationProvider elementSpecificationProvider;
 
-    private AuthenticationSession authenticationSession;
-
-
-    // ///////////////////////////////////////////////////////////////////
-    // Constructor, finalizer
-    // ///////////////////////////////////////////////////////////////////
-
     public PojoAdapter(
             final Object pojo,
             final Oid oid,
             final AuthenticationSession authenticationSession,
             final Localization localization,
             final SpecificationLoader specificationLoader,
-            final AdapterManager adapterManager) {
+            final PersistenceSession persistenceSession) {
+
+        this.persistenceSession = persistenceSession;
 
         Ensure.ensureThatArg(specificationLoader, is(notNullValue()));
 
         this.specificationLoader = specificationLoader;
-        this.adapterManager = adapterManager;
         this.localization = localization;
         this.authenticationSession = authenticationSession;
         
@@ -92,19 +95,9 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         this.pojo = pojo;
         this.oid = oid;
     }
+    //endregion
 
-    
-    // ///////////////////////////////////////////////////////////////////
-    // Specification
-    // ///////////////////////////////////////////////////////////////////
-
-    @Override
-    protected ObjectSpecification loadSpecification() {
-        final Class<?> aClass = getObject().getClass();
-        final ObjectSpecification specification = specificationLoader.loadSpecification(aClass);
-        //String defaultTitle = "A" + (" " + specification.getSingularName()).toLowerCase();
-        return specification;
-    }
+    //region > getSpecification
 
     /**
      * Downcasts {@link #getSpecification()}.
@@ -114,10 +107,16 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         return (ObjectSpecification) super.getSpecification();
     }
 
-    // ///////////////////////////////////////////////////////////////////
-    // Object, replacePojo
-    // ///////////////////////////////////////////////////////////////////
+    @Override
+    protected ObjectSpecification loadSpecification() {
+        final Class<?> aClass = getObject().getClass();
+        final ObjectSpecification specification = specificationLoader.loadSpecification(aClass);
+        return specification;
+    }
+
+    //endregion
 
+    //region > getObject, replacePojo
     @Override
     public Object getObject() {
         return pojo;
@@ -132,17 +131,9 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
     public void replacePojo(final Object pojo) {
         this.pojo = pojo;
     }
+    //endregion
 
-
-
-
-
-
-    
-    // ///////////////////////////////////////////////////////////////////
-    // Oid
-    // ///////////////////////////////////////////////////////////////////
-
+    //region > getOid, replaceOid
     @Override
     public Oid getOid() {
         return oid;
@@ -153,6 +144,9 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         Ensure.ensureThatArg(oid, is(notNullValue())); // values have no oid, so cannot be replaced 
         this.oid = persistedOid;
     }
+    //endregion
+
+    //region > isParentedCollection, isValue
 
     @Override
     public boolean isParentedCollection() {
@@ -164,6 +158,10 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         return oid == null;
     }
 
+    //endregion
+
+    //region > isTransient, representsPersistent, isDestroyed
+
     @Override
     public boolean isTransient() {
         if(getSpecification().isService() || getSpecification().isViewModel()) {
@@ -214,7 +212,9 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         }
         return false;
     }
+    //endregion
 
+    //region > getAggregateRoot
     @Override
     public ObjectAdapter getAggregateRoot() {
         if(!isParentedCollection()) {
@@ -222,20 +222,16 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         }
         ParentedCollectionOid collectionOid = (ParentedCollectionOid) oid;
         final Oid rootOid = collectionOid.getRootOid();
-        ObjectAdapter rootadapter = adapterManager.getAdapterFor(rootOid);
+        ObjectAdapter rootadapter = persistenceSession.getAdapterFor(rootOid);
         if(rootadapter == null) {
-            final Oid parentOidNowPersisted = getPersistenceSession().remappedFrom(rootOid);
-            rootadapter = adapterManager.getAdapterFor(parentOidNowPersisted);
+            final Oid parentOidNowPersisted = persistenceSession.remappedFrom(rootOid);
+            rootadapter = persistenceSession.getAdapterFor(parentOidNowPersisted);
         }
         return rootadapter;
     }
+    //endregion
 
-    
-
-    // ///////////////////////////////////////////////////////////////////
-    // Version 
-    // (nb: delegates to parent if parented)
-    // ///////////////////////////////////////////////////////////////////
+    //region > getVersion, setVersion, checkLock
 
     @Override
     public Version getVersion() {
@@ -264,7 +260,7 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
             
             if(ConcurrencyChecking.isCurrentlyEnabled()) {
                 LOG.info("concurrency conflict detected on " + thisOid + " (" + otherVersion + ")");
-                final String currentUser = getAuthenticationSession().getUserName();
+                final String currentUser = authenticationSession.getUserName();
                 throw new ConcurrencyException(currentUser, thisOid, thisVersion, otherVersion);
             } else {
                 LOG.warn("concurrency conflict detected but suppressed, on " + thisOid + " (" + otherVersion + ")");
@@ -289,10 +285,9 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         return version == null || otherVersion == null || otherVersion.different(version);
     }
 
-    // ///////////////////////////////////////////////////////////////////
-    // Title, toString
-    // ///////////////////////////////////////////////////////////////////
+    //endregion
 
+    //region > titleString
     /**
      * Returns the title from the underlying business object.
      * 
@@ -409,10 +404,9 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         }
         return "S"; // standalone adapter (value)
     }
+    //endregion
 
-    // ///////////////////////////////////////////////////////////////////
-    // IconName
-    // ///////////////////////////////////////////////////////////////////
+    //region > iconName
 
     /**
      * Returns the name of the icon to use to represent this object.
@@ -422,9 +416,9 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         return getSpecification().getIconName(this);
     }
 
-    // ///////////////////////////////////////////////////////////////////
-    // ElementType
-    // ///////////////////////////////////////////////////////////////////
+    //endregion
+
+    //region > elementSpecification
 
     @Override
     public ObjectSpecification getElementSpecification() {
@@ -434,14 +428,21 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         return elementSpecificationProvider.getElementType();
     }
 
+    /**
+     * Called whenever there is a {@link org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet} present.
+     *
+     * <p>
+     *     Specifically, if an action which has been annotated (is copied by {@link org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet action invocation facet}), and for a parented collection
+     *     (is copied by the {@link org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault adapter manager} when {@link org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault#adapterFor(Object, ObjectAdapter, OneToManyAssociation) creating} an adapter for a collection.
+     * </p>
+     */
     @Override
     public void setElementSpecificationProvider(final ElementSpecificationProvider elementSpecificationProvider) {
         this.elementSpecificationProvider = elementSpecificationProvider;
     }
+    //endregion
 
-    // /////////////////////////////////////////////////////////////
-    // getInstance
-    // /////////////////////////////////////////////////////////////
+    //region > getInstance (unsupported for this impl)
 
     /**
      * Not supported by this implementation.
@@ -451,18 +452,6 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         throw new UnsupportedOperationException();
     }
 
-
-    
-    ////////////////////////////////////////////////////////////////////
-    // Dependencies (from context)
-    ////////////////////////////////////////////////////////////////////
-
-    protected PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
-    }
-
-    protected AuthenticationSession getAuthenticationSession() {
-        return authenticationSession;
-    }
+    //endregion
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/97eed796/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 954bdc9..89c00bc 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
@@ -646,7 +646,7 @@ public class AdapterManagerDefault implements AdapterManager,
         return new PojoAdapter(
                 pojo, oid,
                 authenticationSession, getLocalization(),
-                specificationLoader, this);
+                specificationLoader, persistenceSession);
     }
 
     //endregion

http://git-wip-us.apache.org/repos/asf/isis/blob/97eed796/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 53ecf94..9afba03 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
@@ -127,7 +127,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     public static final String DATANUCLEUS_PROPERTIES_ROOT = ROOT_KEY + "impl.";
 
 
-    //region > constructor, fields
+    //region > constructor, fields, finalize()
     private final ObjectFactory objectFactory;
 
     private final PersistenceSessionFactory persistenceSessionFactory;
@@ -203,6 +203,12 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         }
     }
 
+    @Override
+    protected void finalize() throws Throwable {
+        super.finalize();
+        LOG.debug("finalizing persistence session");
+    }
+
     //endregion
 
     //region > open
@@ -494,7 +500,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
         final PersistenceQueryProcessor<? extends PersistenceQuery> processor = lookupProcessorFor(persistenceQuery);
 
-        final List<ObjectAdapter> instances = getTransactionManager().executeWithinTransaction(
+        final List<ObjectAdapter> instances = transactionManager.executeWithinTransaction(
                 new TransactionalClosureWithReturn<List<ObjectAdapter>>() {
                     @Override
                     public List<ObjectAdapter> execute() {
@@ -540,23 +546,9 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         return persistenceQueryProcessor.process((Q) persistenceQuery);
     }
 
-
-
     //endregion
 
-    //region > Services
-
-    /**
-     * Returns the OID for the adapted service. This allows a service object to
-     * be given the same OID that it had when it was created in a different
-     * session.
-     */
-    protected RootOid getOidForService(final ObjectSpecification serviceSpec) {
-        final ObjectSpecId serviceSpecId = serviceSpec.getSpecId();
-        final RootOid oid = this.registeredServices.get(serviceSpecId);
-        return oid;
-    }
-
+    //region > getServices, getService
 
     // REVIEW why does this get called multiple times when starting up
     public List<ObjectAdapter> getServices() {
@@ -577,6 +569,17 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         return serviceAdapter;
     }
 
+    /**
+     * Returns the OID for the adapted service. This allows a service object to
+     * be given the same OID that it had when it was created in a different
+     * session.
+     */
+    private RootOid getOidForService(final ObjectSpecification serviceSpec) {
+        final ObjectSpecId serviceSpecId = serviceSpec.getSpecId();
+        final RootOid oid = this.registeredServices.get(serviceSpecId);
+        return oid;
+    }
+
     //endregion
 
     //region > fixture installation
@@ -631,11 +634,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         return !installFixtures;
     }
 
-    @Override
-    protected void finalize() throws Throwable {
-        super.finalize();
-        LOG.debug("finalizing persistence session");
-    }
     //endregion
 
     //region > loadObject
@@ -694,12 +692,12 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         // could be refactored to use getAdapterManager().adapterFor(...)
         ensureThatArg(oid, is(notNullValue()));
 
-        final ObjectAdapter adapter = getAdapterManager().getAdapterFor(oid);
+        final ObjectAdapter adapter = adapterManager.getAdapterFor(oid);
         if (adapter != null) {
             return adapter;
         }
 
-        return getTransactionManager().executeWithinTransaction(
+        return transactionManager.executeWithinTransaction(
                 new TransactionalClosureWithReturn<ObjectAdapter>() {
                     @Override
                     public ObjectAdapter execute() {
@@ -708,7 +706,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
                         }
 
                         final Object pojo = loadPojo(oid);
-                        return getAdapterManager().mapRecreatedPojo(oid, pojo);
+                        return adapterManager.mapRecreatedPojo(oid, pojo);
                     }
                 });
     }
@@ -899,15 +897,12 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         if (LOG.isDebugEnabled()) {
             LOG.debug("destroyObject " + adapter);
         }
-        getTransactionManager().executeWithinTransaction(new TransactionalClosure() {
-
+        transactionManager.executeWithinTransaction(new TransactionalClosure() {
             @Override
             public void execute() {
                 final DestroyObjectCommand command = newDestroyObjectCommand(adapter);
-                getTransactionManager().addCommand(command);
+                transactionManager.addCommand(command);
             }
-
-
         });
     }
 
@@ -934,7 +929,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
      * </p>
      *
      */
-    public CreateObjectCommand newCreateObjectCommand(final ObjectAdapter adapter) {
+    private CreateObjectCommand newCreateObjectCommand(final ObjectAdapter adapter) {
         ensureOpened();
         ensureInSession();
 
@@ -951,9 +946,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         ensureThatContext(IsisContext.inSession(), is(true));
     }
 
-
-
-    public DestroyObjectCommand newDestroyObjectCommand(final ObjectAdapter adapter) {
+    private DestroyObjectCommand newDestroyObjectCommand(final ObjectAdapter adapter) {
         ensureOpened();
         ensureInSession();
 

http://git-wip-us.apache.org/repos/asf/isis/blob/97eed796/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
index 687a944..04702b2 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
@@ -70,7 +70,7 @@ public class PojoAdapterTest {
         domainObject = new RuntimeTestPojo();
         
         adapter = new PojoAdapter(domainObject, RootOid.create(ObjectSpecId.of("CUS"), "1"), mockAuthenticationSession,
-                mockLocalization, mockSpecificationLoader, mockObjectAdapterLookup);
+                mockLocalization, mockSpecificationLoader, persistenceSession);
         adapter.setVersion(mockVersion);
         
         allowUnimportantMethodCallsOn(mockVersion);

http://git-wip-us.apache.org/repos/asf/isis/blob/97eed796/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
index 1145141..68c5ec5 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
@@ -200,7 +200,7 @@ public class PojoAdapterBuilder {
         final RootOid rootOid = persistence.createOid(objectSpecId, identifier);
         final Oid oid = type.oidFor(rootOid, objectSpecId, aggregatedId);
         final PojoAdapter pojoAdapter = new PojoAdapter(pojo, oid, authenticationSession, localization,
-                specificationLoader, objectAdapterLookup) {
+                specificationLoader, persistenceSession) {
             @Override
             public ObjectSpecification getSpecification() { return objectSpec != null? objectSpec: super.getSpecification(); }
             @Override


[08/50] isis git commit: ISIS-1194: fixing up unit tests; also changing isis-core-runtime's pom.xml, skipTests = false

Posted by da...@apache.org.
ISIS-1194: fixing up unit tests; also changing isis-core-runtime's pom.xml, skipTests = false


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

Branch: refs/heads/master
Commit: 550b88d6ede5de6e9ff7b802dfb58c60d3a7e301
Parents: dbd6b49
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 12:45:49 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 12:45:49 2015 +0100

----------------------------------------------------------------------
 .../oid/OidMarshallerTest_unmarshal.java        | 16 ----
 .../AbstractFacetFactoryJUnit4TestCase.java     | 11 +++
 .../facets/AbstractFacetFactoryTest.java        | 36 +++++++-
 .../ActionAnnotationFacetFactoryTest.java       |  5 ++
 ...tationFacetFactoryTest_actionInvocation.java |  6 ++
 .../DomainObjectAnnotationFacetFactoryTest.java |  3 +
 .../ParameterAnnotationFacetFactoryTest.java    |  3 +
 .../PropertyAnnotationFacetFactoryTest.java     |  2 +
 ...cesInjectorDefaultTest_validateServices.java | 80 +++++++++++++++++
 core/runtime/pom.xml                            |  2 +-
 .../persistence/adapter/PojoAdapter.java        |  6 +-
 .../core/runtime/services/i18n/po/PoReader.java |  2 +-
 .../persistence/PersistenceSessionFactory.java  |  6 --
 .../core/runtime/context/IsisContextTest.java   | 48 ++++-------
 ...reTransactionManager_EndTransactionTest.java | 45 +---------
 ...TransactionManager_StartTransactionTest.java | 10 ---
 .../transaction/PojoAdapterBuilder.java         |  5 --
 .../runtime/services/i18n/po/PoReaderTest.java  |  7 +-
 .../system/ObjectMemberAbstractTest.java        | 75 ++++++++++++++--
 ...onFactoryAbstractTest_init_and_shutdown.java | 90 --------------------
 20 files changed, 245 insertions(+), 213 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java
index edabb1e..50d1a9b 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java
@@ -182,27 +182,11 @@ public class OidMarshallerTest_unmarshal {
 
 
     @Test(expected=IllegalArgumentException.class)
-    public void root_forCollection_oidStr() {
-        oidMarshaller.unmarshal("CUS:123~NME:123$items", RootOid.class);
-    }
-
-    @Test(expected=IllegalArgumentException.class)
-    public void root_forAggregated_oidStr() {
-        oidMarshaller.unmarshal("CUS:123~NME:123", RootOid.class);
-    }
-
-    @Test(expected=IllegalArgumentException.class)
     public void collection_forRoot_oidStr() {
         oidMarshaller.unmarshal("CUS:123", ParentedCollectionOid.class);
     }
 
     @Test(expected=IllegalArgumentException.class)
-    public void collection_forAggregated_oidStr() {
-        oidMarshaller.unmarshal("CUS:123~NME:123", ParentedCollectionOid.class);
-    }
-
-    
-    @Test(expected=IllegalArgumentException.class)
     public void badPattern() {
         oidMarshaller.unmarshal("xxx", RootOid.class);
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index 2727ce4..4c5d723 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -28,6 +28,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
@@ -38,6 +39,7 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
 import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForDomainObjectAnnotation;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -59,6 +61,10 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
     protected MethodRemover mockMethodRemover;
     @Mock
     protected FacetHolder mockFacetHolder;
+    @Mock
+    protected ServicesInjector mockServicesInjector;
+    @Mock
+    protected TranslationService mockTranslationService;
 
     @Mock
     protected IsisConfiguration mockConfiguration;
@@ -102,6 +108,11 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
             will(returnValue(DeploymentCategory.PRODUCTION));
         }});
 
+        context.checking(new Expectations() {{
+            allowing(mockServicesInjector).lookupService(TranslationService.class);
+            will(returnValue(mockTranslationService));
+        }});
+
         facetHolder = new AbstractFacetFactoryTest.IdentifiedHolderImpl(Identifier.propertyOrCollectionIdentifier(Customer.class, "firstName"));
         facetedMethod = FacetedMethod.createForProperty(AbstractFacetFactoryTest.Customer.class, "firstName");
         facetedMethodParameter = new FacetedMethodParameter(facetedMethod.getOwningType(), facetedMethod.getMethod(), String.class);

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
index 06ab3a6..d8ce122 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
@@ -19,18 +19,30 @@
 
 package org.apache.isis.core.metamodel.facets;
 
-import junit.framework.TestCase;
-
 import java.lang.reflect.Method;
 import java.util.List;
+
+import org.jmock.Expectations;
+import org.junit.Rule;
+
 import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+
+import junit.framework.TestCase;
 
 public abstract class AbstractFacetFactoryTest extends TestCase {
 
+    @Rule
+    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
+
     public static class Customer {
 
         private String firstName;
@@ -44,6 +56,10 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
         }
     }
 
+    protected ServicesInjector mockServicesInjector;
+    protected TranslationService mockTranslationService;
+    protected DeploymentCategoryProvider mockDeploymentCategoryProvider;
+
     protected ProgrammableReflector programmableReflector;
     protected ProgrammableMethodRemover methodRemover;
 
@@ -73,6 +89,22 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
         facetedMethod = FacetedMethod.createForProperty(Customer.class, "firstName");
         facetedMethodParameter = new FacetedMethodParameter(facetedMethod.getOwningType(), facetedMethod.getMethod(), String.class);
         methodRemover = new ProgrammableMethodRemover();
+
+        mockDeploymentCategoryProvider = context.mock(DeploymentCategoryProvider.class);
+        mockServicesInjector = context.mock(ServicesInjector.class);
+        mockTranslationService = context.mock(TranslationService.class);
+
+        context.checking(new Expectations() {{
+            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
+            will(returnValue(DeploymentCategory.PRODUCTION));
+        }});
+
+        context.checking(new Expectations() {{
+            allowing(mockServicesInjector).lookupService(TranslationService.class);
+            will(returnValue(mockTranslationService));
+        }});
+
+
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
index 78efd3b..86b11ca 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
@@ -23,12 +23,14 @@ import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
 import java.util.UUID;
+
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionInteraction;
@@ -125,6 +127,9 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
         facetFactory = new ActionAnnotationFacetFactory();
         facetFactory.setConfiguration(mockConfiguration);
         facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setServicesInjector(mockServicesInjector);
+        facetFactory.setDeploymentCategoryProvider(mockDeploymentCategoryProvider);
+
 
         actionMethod = findMethod(Customer.class, "someAction");
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
index b8f803d..6526cda 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
@@ -46,6 +46,9 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
         super.setUp();
         facetFactory = new ActionAnnotationFacetFactory();
         facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setServicesInjector(mockServicesInjector);
+        facetFactory.setDeploymentCategoryProvider(mockDeploymentCategoryProvider);
+
     }
 
     public void testActionInvocationFacetIsInstalledAndMethodRemoved() {
@@ -150,10 +153,13 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
         final ActionParameterChoicesFacetViaMethodFactory facetFactoryForChoices = new ActionParameterChoicesFacetViaMethodFactory();
         facetFactoryForChoices.setSpecificationLoader(programmableReflector);
         programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        facetFactoryForChoices.setDeploymentCategoryProvider(mockDeploymentCategoryProvider);
 
         final DisableForContextFacetViaMethodFactory facetFactoryForDisable = new DisableForContextFacetViaMethodFactory();
         facetFactoryForDisable.setSpecificationLoader(programmableReflector);
         programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        facetFactoryForDisable.setServicesInjector(mockServicesInjector);
+        facetFactoryForDisable.setDeploymentCategoryProvider(mockDeploymentCategoryProvider);
 
         class Customer {
             @SuppressWarnings("unused")

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index eb77681..532666e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -74,6 +74,9 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
     public void setUp() throws Exception {
         facetFactory = new DomainObjectAnnotationFacetFactory();
         facetFactory.setConfiguration(mockConfiguration);
+        facetFactory.setServicesInjector(mockServicesInjector);
+        facetFactory.setDeploymentCategoryProvider(mockDeploymentCategoryProvider);
+
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
index 933cdf2..4ebd7b1 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
@@ -76,6 +76,9 @@ public class ParameterAnnotationFacetFactoryTest extends AbstractFacetFactoryJUn
     public void setUp() throws Exception {
         facetFactory = new ParameterAnnotationFacetFactory();
         facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setServicesInjector(mockServicesInjector);
+        facetFactory.setDeploymentCategoryProvider(mockDeploymentCategoryProvider);
+
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index 72fd122..56a1a03 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -113,6 +113,8 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
     public void setUp() throws Exception {
         facetFactory = new PropertyAnnotationFacetFactory();
         facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setServicesInjector(mockServicesInjector);
+        facetFactory.setDeploymentCategoryProvider(mockDeploymentCategoryProvider);
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_validateServices.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_validateServices.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_validateServices.java
new file mode 100644
index 0000000..f2611d9
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_validateServices.java
@@ -0,0 +1,80 @@
+/*
+ *  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.services;
+
+import java.util.List;
+
+import com.google.common.collect.Lists;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class ServicesInjectorDefaultTest_validateServices {
+
+    ServicesInjectorDefault servicesInjector;
+
+    public static class DomainServiceWithSomeId {
+        public String getId() { return "someId"; }
+    }
+
+    public static class DomainServiceWithDuplicateId {
+        public String getId() { return "someId"; }
+    }
+
+    public static class DomainServiceWithDifferentId {
+        public String getId() { return "otherId"; }
+    }
+
+    public static class ValidateServicesTestValidateServices extends ServicesInjectorDefaultTest_validateServices {
+
+        List<Object> serviceList;
+
+        @Before
+        public void setUp() throws Exception {
+            serviceList = Lists.newArrayList();
+        }
+
+        @Test(expected=IllegalStateException.class)
+        public void validate_DomainServicesWithDuplicateIds() {
+
+            // given
+            serviceList.add(new DomainServiceWithSomeId());
+            serviceList.add(new DomainServiceWithDuplicateId());
+
+            servicesInjector = new ServicesInjectorDefault(serviceList, null);
+
+            // when
+            servicesInjector.validateServices();
+        }
+
+        public void validate_DomainServicesWithDifferentIds() {
+
+            // given
+            serviceList.add(new DomainServiceWithSomeId());
+            serviceList.add(new DomainServiceWithDifferentId());
+
+            servicesInjector = new ServicesInjectorDefault(serviceList, null);
+
+            // when
+            servicesInjector.validateServices();
+        }
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/runtime/pom.xml
----------------------------------------------------------------------
diff --git a/core/runtime/pom.xml b/core/runtime/pom.xml
index debeb8b..062bef4 100644
--- a/core/runtime/pom.xml
+++ b/core/runtime/pom.xml
@@ -68,7 +68,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <skipTests>true</skipTests>
+                    <skipTests>false</skipTests>
                 </configuration>
             </plugin>
         </plugins>

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
index 59a24d6..dc44b22 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
@@ -78,6 +78,9 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
             final Localization localization,
             final SpecificationLoader specificationLoader,
             final AdapterManager adapterManager) {
+
+        Ensure.ensureThatArg(specificationLoader, is(notNullValue()));
+
         this.specificationLoader = specificationLoader;
         this.adapterManager = adapterManager;
         this.localization = localization;
@@ -97,7 +100,8 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
 
     @Override
     protected ObjectSpecification loadSpecification() {
-        final ObjectSpecification specification = specificationLoader.loadSpecification(getObject().getClass());
+        final Class<?> aClass = getObject().getClass();
+        final ObjectSpecification specification = specificationLoader.loadSpecification(aClass);
         //String defaultTitle = "A" + (" " + specification.getSingularName()).toLowerCase();
         return specification;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoReader.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoReader.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoReader.java
index cc91ac4..97f3789 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoReader.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoReader.java
@@ -156,7 +156,7 @@ class PoReader extends PoAbstract {
         // 3. fallback
         // so this message is only ever displayed if the locale isn't using fallback (ie a translation is genuinely missing)
         final Boolean usesFallback = usesFallbackByLocale.get(targetLocale);
-        if(!usesFallback) {
+        if(usesFallback == null || !usesFallback) {
             LOG.warn("No translation found for: " + key);
         }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index d18bb7a..bfe8c19 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -84,12 +84,6 @@ public class PersistenceSessionFactory implements MetaModelRefiner,
             final ServicesInjectorSpi servicesInjector,
             final IsisConfiguration isisConfiguration,
             final RuntimeContextFromSession runtimeContext) {
-
-        ensureThatState(deploymentType, is(notNullValue()));
-        ensureThatState(servicesInjector, is(notNullValue()));
-        ensureThatState(isisConfiguration, is(not(nullValue())));
-        ensureThatState(runtimeContext, is(not(nullValue())));
-
         this.deploymentType = deploymentType;
         this.configuration = isisConfiguration;
         this.servicesInjector = servicesInjector;

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/runtime/src/test/java/org/apache/isis/core/runtime/context/IsisContextTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/context/IsisContextTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/context/IsisContextTest.java
index d90e2b8..0832126 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/context/IsisContextTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/context/IsisContextTest.java
@@ -64,9 +64,6 @@ public class IsisContextTest {
     protected AuthorizationManager mockAuthorizationManager;
 
     @Mock
-    private AuthenticationSession mockAuthenticationSession;
-
-    @Mock
     protected DomainObjectContainer mockContainer;
     
     protected OidMarshaller oidMarshaller;
@@ -89,20 +86,13 @@ public class IsisContextTest {
         
         oidMarshaller = new OidMarshaller();
         
-        context.checking(new Expectations() {
-            {
-                allowing(mockPersistenceSessionFactory).createPersistenceSession(mockSpecificationLoader,                         mockAuthenticationSession);
-                will(returnValue(mockPersistenceSession));
-                
-                ignoring(mockPersistenceSession);
-                ignoring(mockSpecificationLoader);
-                ignoring(mockPersistenceSessionFactory);
-                ignoring(mockAuthenticationManager);
-                ignoring(mockAuthorizationManager);
-
-                ignoring(mockContainer);
-            }
-        });
+        context.ignoring(
+                mockPersistenceSession,
+                mockSpecificationLoader,
+                mockAuthenticationManager,
+                mockAuthorizationManager,
+                mockContainer)
+        ;
 
         sessionFactory = new IsisSessionFactory(DeploymentType.UNIT_TESTING, configuration, mockSpecificationLoader, mockAuthenticationManager, mockAuthorizationManager, mockPersistenceSessionFactory);
         authSession = new SimpleSession("tester", Collections.<String>emptyList());
@@ -120,31 +110,27 @@ public class IsisContextTest {
     @Test
     public void getConfiguration() {
         IsisContextStatic.createRelaxedInstance(sessionFactory);
+
         Assert.assertEquals(configuration, IsisContext.getConfiguration());
     }
 
     @Test
     public void openSession_getSpecificationLoader() {
         IsisContextStatic.createRelaxedInstance(sessionFactory);
-        IsisContext.openSession(authSession);
 
-        Assert.assertEquals(mockSpecificationLoader, IsisContext.getSpecificationLoader());
-    }
+        // expecting
+        context.checking(new Expectations() {{
+            one(mockPersistenceSessionFactory)
+                    .createPersistenceSession(mockSpecificationLoader, authSession);
+            will(returnValue(mockPersistenceSession));
+        }});
 
-    @Test
-    public void openSession_getAuthenticationLoader() {
-        IsisContextStatic.createRelaxedInstance(sessionFactory);
         IsisContext.openSession(authSession);
 
+        Assert.assertEquals(mockSpecificationLoader, IsisContext.getSpecificationLoader());
         Assert.assertEquals(authSession, IsisContext.getAuthenticationSession());
-    }
-    
-    @Test
-    public void openSession_getPersistenceSession() {
-        IsisContextStatic.createRelaxedInstance(sessionFactory);
-        IsisContext.openSession(authSession);
-
-        Assert.assertSame(mockPersistenceSession, IsisContext.getPersistenceSession());
+        final PersistenceSession persistenceSession = IsisContext.getPersistenceSession();
+        Assert.assertNotNull(persistenceSession);
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
index 8f64054..22730e2 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
@@ -25,10 +25,8 @@ import org.hamcrest.Description;
 import org.hamcrest.Matcher;
 import org.hamcrest.TypeSafeMatcher;
 import org.jmock.Expectations;
-import org.jmock.Sequence;
 import org.jmock.auto.Mock;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 
@@ -56,7 +54,7 @@ public class ObjectStoreTransactionManager_EndTransactionTest {
     @Mock
     private MessageBroker mockMessageBroker;
     @Mock
-    private TransactionalResource mockObjectStore;
+    private TransactionalResource mockTransactionalResource;
 
     private IsisTransactionManager transactionManager;
 
@@ -96,7 +94,7 @@ public class ObjectStoreTransactionManager_EndTransactionTest {
     @Test
     public void endTransactionDecrementsTransactionLevel() throws Exception {
         // setup
-        context.ignoring(mockObjectStore, mockPersistenceSession);
+        context.ignoring(mockTransactionalResource, mockPersistenceSession);
         transactionManager.startTransaction();
         transactionManager.startTransaction();
 
@@ -108,7 +106,7 @@ public class ObjectStoreTransactionManager_EndTransactionTest {
     @Test
     public void endTransactionCommitsTransactionWhenLevelDecrementsDownToZero() throws Exception {
         // setup
-        context.ignoring(mockObjectStore);
+        context.ignoring(mockTransactionalResource, mockPersistenceSession);
         transactionManager.startTransaction();
 
         assertThat(transactionManager.getTransactionLevel(), is(1));
@@ -116,43 +114,6 @@ public class ObjectStoreTransactionManager_EndTransactionTest {
         assertThat(transactionManager.getTransactionLevel(), is(0));
     }
 
-    @Test
-    public void startTransactionInteractsWithObjectStore() throws Exception {
-        // setup
-        context.ignoring(mockPersistenceSession);
-
-        context.checking(new Expectations() {
-            {
-                one(mockObjectStore).startTransaction();
-            }
-        });
-        transactionManager.startTransaction();
 
-    }
-
-    @Ignore // ISIS-1194
-    @Test
-    public void endTransactionInteractsWithObjectStore() throws Exception {
-        // setup
-        context.ignoring(mockPersistenceSession);
-
-        context.checking(new Expectations() {
-            {
-                final Sequence transactionOrdering = context.sequence("transactionOrdering");
-                oneOf(mockObjectStore).startTransaction();
-                inSequence(transactionOrdering);
-
-//                // flushed twice, once before publishing, once after
-//                exactly(3).of(mockObjectStore).execute(with(equalTo(Collections.<PersistenceCommand>emptyList())));
-//                inSequence(transactionOrdering);
-
-                oneOf(mockObjectStore).endTransaction();
-                inSequence(transactionOrdering);
-            }
-        });
-
-        transactionManager.startTransaction();
-        transactionManager.endTransaction();
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_StartTransactionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_StartTransactionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_StartTransactionTest.java
index 17867c1..ff14fc4 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_StartTransactionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_StartTransactionTest.java
@@ -108,15 +108,5 @@ public class ObjectStoreTransactionManager_StartTransactionTest {
         assertThat(transactionManager.getTransactionLevel(), is(1));
     }
 
-    @Test
-    public void startTransactionCallsStartTransactionOnObjectStore() throws Exception {
-        context.checking(new Expectations() {
-            {
-                one(mockObjectStore).startTransaction();
-            }
-        });
-
-        transactionManager.startTransaction();
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
index 12ec59e..1145141 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
@@ -113,11 +113,6 @@ public class PojoAdapterBuilder {
         return new PojoAdapterBuilder();
     }
 
-    public PojoAdapterBuilder withAggregatedId(String aggregatedId) {
-        this.aggregatedId = aggregatedId;
-        return this;
-    }
-    
     public PojoAdapterBuilder withIdentifier(String identifier) {
         this.identifier = identifier;
         return this;

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/runtime/src/test/java/org/apache/isis/core/runtime/services/i18n/po/PoReaderTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/i18n/po/PoReaderTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/i18n/po/PoReaderTest.java
index a94aa24..52ae5af 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/i18n/po/PoReaderTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/i18n/po/PoReaderTest.java
@@ -27,6 +27,7 @@ import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.apache.isis.applib.services.i18n.LocaleProvider;
+import org.apache.isis.applib.services.i18n.TranslationsResolver;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import static org.hamcrest.CoreMatchers.equalTo;
@@ -40,7 +41,8 @@ public class PoReaderTest {
 
     @Mock
     TranslationServicePo mockTranslationServicePo;
-
+    @Mock
+    TranslationsResolver mockTranslationsResolver;
     @Mock
     LocaleProvider mockLocaleProvider;
 
@@ -52,6 +54,9 @@ public class PoReaderTest {
             allowing(mockTranslationServicePo).getLocaleProvider();
             will(returnValue(mockLocaleProvider));
 
+            allowing(mockTranslationServicePo).getTranslationsResolver();
+            will(returnValue(mockTranslationsResolver));
+
             allowing(mockLocaleProvider).getLocale();
             will(returnValue(Locale.UK));
         }});

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index e4446d4..1f40ec6 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -19,11 +19,13 @@
 
 package org.apache.isis.core.runtime.system;
 
+import org.datanucleus.enhancement.Persistable;
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
@@ -46,7 +48,9 @@ import org.apache.isis.core.metamodel.interactions.PropertyVisibilityContext;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder;
@@ -54,14 +58,14 @@ import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdap
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertThat;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.isEmptyString;
 import static org.hamcrest.Matchers.not;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
 
 public class ObjectMemberAbstractTest {
 
@@ -77,6 +81,13 @@ public class ObjectMemberAbstractTest {
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock
     private AuthenticationSession mockAuthenticationSession;
+    @Mock
+    private SpecificationLoader mockSpecificationLoader;
+    @Mock
+    private ObjectSpecification mockSpecForCustomer;
+
+    @Mock
+    private Persistable mockPersistable;
 
     @Before
     public void setUp() throws Exception {
@@ -86,10 +97,35 @@ public class ObjectMemberAbstractTest {
             allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
             will(returnValue(mockAuthenticationSession));
         }});
-        persistentAdapter = PojoAdapterBuilder.create().build();
-        transientAdapter = PojoAdapterBuilder.create().with(Persistence.TRANSIENT).build();
+        persistentAdapter = PojoAdapterBuilder.create()
+                                .with(mockSpecificationLoader)
+                                .withOid("CUS|1")
+                                .withPojo(mockPersistable)
+                                .build();
+        transientAdapter = PojoAdapterBuilder.create()
+                                .with(mockSpecificationLoader)
+                                .with(Persistence.TRANSIENT)
+                                .withPojo(mockPersistable)
+                                .build();
 
         testMember = new ObjectMemberAbstractImpl("id");
+
+        context.checking(new Expectations() {{
+            allowing(mockSpecificationLoader).lookupBySpecId(ObjectSpecId.of("CUS"));
+            will(returnValue(mockSpecForCustomer));
+            allowing(mockSpecificationLoader).loadSpecification(with(any(Class.class)));
+            will(returnValue(mockSpecForCustomer));
+
+            allowing(mockSpecForCustomer).isService();
+            will(returnValue(false));
+
+            allowing(mockSpecForCustomer).isViewModel();
+            will(returnValue(false));
+
+            allowing(mockSpecForCustomer).getShortIdentifier();
+            will(returnValue("Customer"));
+        }});
+
     }
 
     @Test
@@ -128,6 +164,15 @@ public class ObjectMemberAbstractTest {
     public void testVisibleWhenTargetPersistentAndHiddenFacetSetToOncePersisted() {
         testMember.addFacet(new HideForContextFacetNone(testMember));
         testMember.addFacet(new HiddenFacetAbstractImpl(When.ONCE_PERSISTED, Where.ANYWHERE, testMember){});
+
+        context.checking(new Expectations() {{
+            allowing(mockPersistable).dnIsPersistent();
+            will(returnValue(true));
+            allowing(mockPersistable).dnIsDeleted();
+            will(returnValue(false));
+        }});
+
+
         assertFalse(testMember.isVisible(persistentAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE).isAllowed());
     }
 
@@ -135,6 +180,15 @@ public class ObjectMemberAbstractTest {
     public void testVisibleWhenTargetPersistentAndHiddenFacetSetToUntilPersisted() {
         testMember.addFacet(new HideForContextFacetNone(testMember));
         testMember.addFacet(new HiddenFacetAbstractImpl(When.UNTIL_PERSISTED, Where.ANYWHERE, testMember){});
+
+        context.checking(new Expectations() {{
+            allowing(mockPersistable).dnIsPersistent();
+            will(returnValue(true));
+            allowing(mockPersistable).dnIsDeleted();
+            will(returnValue(false));
+        }});
+
+
         final Consent visible = testMember.isVisible(persistentAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE);
         assertTrue(visible.isAllowed());
     }
@@ -143,7 +197,14 @@ public class ObjectMemberAbstractTest {
     public void testVisibleWhenTargetTransientAndHiddenFacetSetToUntilPersisted() {
         testMember.addFacet(new HideForContextFacetNone(testMember));
         testMember.addFacet(new HiddenFacetAbstractImpl(When.UNTIL_PERSISTED, Where.ANYWHERE, testMember){});
-        
+
+        context.checking(new Expectations() {{
+            allowing(mockPersistable).dnIsPersistent();
+            will(returnValue(false));
+            allowing(mockPersistable).dnIsDeleted();
+            will(returnValue(false));
+        }});
+
         final Consent visible = testMember.isVisible(transientAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE);
         assertFalse(visible.isAllowed());
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/550b88d6/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java
deleted file mode 100644
index b2435aa..0000000
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java
+++ /dev/null
@@ -1,90 +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.system.session;
-
-import java.util.List;
-import com.google.common.collect.Lists;
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.apache.isis.applib.DomainObjectContainer;
-import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.runtime.authentication.AuthenticationManager;
-import org.apache.isis.core.runtime.authorization.AuthorizationManager;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-
-public class IsisSessionFactoryAbstractTest_init_and_shutdown {
-
-    public static class DomainServiceWithSomeId {
-        public String getId() { return "someId"; }
-    }
-
-    public static class DomainServiceWithDuplicateId {
-        public String getId() { return "someId"; }
-    }
-
-    @Rule
-    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-
-    @Mock
-    private DeploymentType mockDeploymentType;
-    @Mock
-    private SpecificationLoaderSpi mockSpecificationLoader;
-    @Mock
-    private AuthenticationManager mockAuthenticationManager;
-    @Mock
-    private AuthorizationManager mockAuthorizationManager;
-    @Mock
-    private PersistenceSessionFactory mockPersistenceSessionFactory;
-    @Mock
-    private OidMarshaller mockOidMarshaller;
-    
-    @Mock
-    private DomainObjectContainer mockContainer;
-    
-    private IsisConfigurationDefault configuration;
-    private List<Object> serviceList;
-
-    private IsisSessionFactory isf;
-    
-    @Before
-    public void setUp() throws Exception {
-        configuration = new IsisConfigurationDefault();
-        configuration.add("foo", "bar");
-        
-        serviceList = Lists.newArrayList();
-        context.ignoring(mockDeploymentType, mockSpecificationLoader, mockAuthenticationManager, mockAuthorizationManager, mockContainer, mockPersistenceSessionFactory, mockOidMarshaller);
-    }
-    
-
-    @Test(expected=IllegalStateException.class)
-    public void validate_DomainServicesWithDuplicateIds() {
-        serviceList.add(new DomainServiceWithSomeId());
-        serviceList.add(new DomainServiceWithDuplicateId());
-        isf = new IsisSessionFactory(mockDeploymentType, configuration, mockSpecificationLoader, mockAuthenticationManager, mockAuthorizationManager, mockPersistenceSessionFactory) {
-        };
-    }
-}


[37/50] isis git commit: ISIS-1194: inlining preDirtyProcessing from FrameworkSynchroizer to PersistenceSession

Posted by da...@apache.org.
ISIS-1194: inlining preDirtyProcessing from FrameworkSynchroizer to PersistenceSession


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

Branch: refs/heads/master
Commit: fe62380a2e818f42e69473eec8820b792621a747
Parents: 2fad991
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:41:25 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:41:25 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java      | 38 ----------
 .../system/persistence/PersistenceSession.java  | 75 +++++++++++++++++++-
 2 files changed, 74 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/fe62380a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 5a4e321..51aff7e 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -41,7 +41,6 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackF
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
 
 public class FrameworkSynchronizer {
@@ -223,43 +222,6 @@ public class FrameworkSynchronizer {
         }, calledFrom);
     }
 
-    public void preDirtyProcessingFor(final Persistable pojo, CalledFrom calledFrom) {
-        withLogging(pojo, new Runnable() {
-            @Override
-            public void run() {
-                ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
-                if (adapter == null) {
-                    // seen this happen in the case when a parent entity (LeaseItem) has a collection of children
-                    // objects (LeaseTerm) for which we haven't had a loaded callback fired and so are not yet
-                    // mapped.
-                    
-                    // it seems reasonable in this case to simply map into Isis here ("just-in-time"); presumably
-                    // DN would not be calling this callback if the pojo was not persistent.
-                    
-                    adapter = lazilyLoaded(pojo, CalledFrom.EVENT_PREDIRTY);
-                    if(adapter == null) {
-                        throw new RuntimeException("DN could not find objectId for pojo (unexpected) and so could not map into Isis; pojo=[" +  pojo + "]");
-                    }
-                }
-                if(adapter.isTransient()) {
-                    // seen this happen in the case when there's a 1<->m bidirectional collection, and we're
-                    // attaching the child object, which is being persisted by DN as a result of persistence-by-reachability,
-                    // and it "helpfully" sets up the parent attribute on the child, causing this callback to fire.
-                    // 
-                    // however, at the same time, Isis has only queued up a CreateObjectCommand for the transient object, but it
-                    // hasn't yet executed, so thinks that the adapter is still transient. 
-                    return;
-                }
-
-                CallbackFacet.Util.callCallback(adapter, UpdatingCallbackFacet.class);
-
-                final IsisTransaction transaction = persistenceSession.getCurrentTransaction();
-                transaction.enlistUpdating(adapter);
-
-                ensureRootObject(pojo);
-            }
-        }, calledFrom);
-    }
 
 
     public ObjectAdapter lazilyLoaded(final Persistable pojo, CalledFrom calledFrom) {

http://git-wip-us.apache.org/repos/asf/isis/blob/fe62380a/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 bc559fc..a4081a1 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
@@ -23,6 +23,7 @@ import java.lang.reflect.Modifier;
 import java.text.MessageFormat;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.Callable;
 
 import javax.jdo.FetchGroup;
 import javax.jdo.FetchPlan;
@@ -55,6 +56,7 @@ import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
@@ -1214,8 +1216,79 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     }
 
     public void preDirtyProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
-        frameworkSynchronizer.preDirtyProcessingFor(pojo, calledFrom);
+        withLogging(pojo, new Runnable() {
+            @Override
+            public void run() {
+                ObjectAdapter adapter = getAdapterFor(pojo);
+                if (adapter == null) {
+                    // seen this happen in the case when a parent entity (LeaseItem) has a collection of children
+                    // objects (LeaseTerm) for which we haven't had a loaded callback fired and so are not yet
+                    // mapped.
+
+                    // it seems reasonable in this case to simply map into Isis here ("just-in-time"); presumably
+                    // DN would not be calling this callback if the pojo was not persistent.
+
+                    adapter = frameworkSynchronizer.lazilyLoaded(pojo, FrameworkSynchronizer.CalledFrom.EVENT_PREDIRTY);
+                    if (adapter == null) {
+                        throw new RuntimeException(
+                                "DN could not find objectId for pojo (unexpected) and so could not map into Isis; pojo=["
+                                        + pojo + "]");
+                    }
+                }
+                if (adapter.isTransient()) {
+                    // seen this happen in the case when there's a 1<->m bidirectional collection, and we're
+                    // attaching the child object, which is being persisted by DN as a result of persistence-by-reachability,
+                    // and it "helpfully" sets up the parent attribute on the child, causing this callback to fire.
+                    //
+                    // however, at the same time, Isis has only queued up a CreateObjectCommand for the transient object, but it
+                    // hasn't yet executed, so thinks that the adapter is still transient.
+                    return;
+                }
+
+                CallbackFacet.Util.callCallback(adapter, UpdatingCallbackFacet.class);
+
+                final IsisTransaction transaction = getCurrentTransaction();
+                transaction.enlistUpdating(adapter);
+
+                ensureRootObject(pojo);
+            }
+        }, calledFrom);
+    }
+
+    private <T> T withLogging(Persistable pojo, Callable<T> runnable, FrameworkSynchronizer.CalledFrom calledFrom) {
+        if (LOG.isDebugEnabled()) {
+            LOG.debug(logString(calledFrom, LoggingLocation.ENTRY, pojo));
+        }
+        try {
+            return runnable.call();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        } finally {
+            if (LOG.isDebugEnabled()) {
+                LOG.debug(logString(calledFrom, LoggingLocation.EXIT, pojo));
+            }
+        }
     }
+
+    private void withLogging(Persistable pojo, final Runnable runnable, FrameworkSynchronizer.CalledFrom calledFrom) {
+        withLogging(pojo, new Callable<Void>() {
+
+            @Override
+            public Void call() throws Exception {
+                runnable.run();
+                return null;
+            }
+
+        }, calledFrom);
+    }
+
+    private String logString(FrameworkSynchronizer.CalledFrom calledFrom, LoggingLocation location, Persistable pojo) {
+        final ObjectAdapter adapter = getAdapterFor(pojo);
+        // initial spaces just to look better in log when wrapped by IsisLifecycleListener...
+        return calledFrom.name() + " " + location.prefix + " oid=" + (adapter !=null? adapter.getOid(): "(null)") + " ,pojo " + pojo;
+    }
+
+
     public void ensureRootObject(final Persistable pojo) {
         frameworkSynchronizer.ensureRootObject(pojo);
     }


[43/50] isis git commit: ISIS-1194: inlining postLoadProcessingFor from FrameworkSynchronizer to PersistenceSession

Posted by da...@apache.org.
ISIS-1194: inlining postLoadProcessingFor from FrameworkSynchronizer to PersistenceSession


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

Branch: refs/heads/master
Commit: be852c94d745e517fc9feedb80fcac9e5be257ee
Parents: 9a72f3a
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:55:36 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:55:36 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java      | 69 --------------------
 .../system/persistence/PersistenceSession.java  | 68 ++++++++++++++++++-
 ...rsistenceQueryFindAllInstancesProcessor.java |  2 +-
 ...tenceQueryFindUsingApplibQueryProcessor.java |  2 +-
 .../PersistenceQueryProcessorAbstract.java      |  7 +-
 5 files changed, 69 insertions(+), 79 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/be852c94/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index ec2ce96..026796f 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -71,75 +71,6 @@ public class FrameworkSynchronizer {
     }
 
 
-    public void postLoadProcessingFor(final Persistable pojo, CalledFrom calledFrom) {
-
-        withLogging(pojo, new Runnable() {
-            @Override
-            public void run() {
-                final Persistable pc = pojo;
-                
-                // need to do eagerly, because (if a viewModel then) a
-                // viewModel's #viewModelMemento might need to use services 
-                persistenceSession.injectServicesInto(pojo);
-                
-                final Version datastoreVersion = getVersionIfAny(pc);
-                
-                final RootOid originalOid ;
-                ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
-                if(adapter != null) {
-                    ensureRootObject(pojo);
-                    originalOid = (RootOid) adapter.getOid();
-
-                    final Version originalVersion = adapter.getVersion();
-
-                    // sync the pojo held by the adapter with that just loaded
-                    persistenceSession.remapRecreatedPojo(adapter, pojo);
-                    
-                    // since there was already an adapter, do concurrency check
-                    // (but don't set abort cause if checking is suppressed through thread-local)
-                    final RootOid thisOid = originalOid;
-                    final Version thisVersion = originalVersion;
-                    final Version otherVersion = datastoreVersion;
-                    
-                    if(thisVersion != null && 
-                       otherVersion != null && 
-                       thisVersion.different(otherVersion)) {
-
-                        if(ConcurrencyChecking.isCurrentlyEnabled()) {
-                            LOG.info("concurrency conflict detected on " + thisOid + " (" + otherVersion + ")");
-                            final String currentUser = authenticationSession.getUserName();
-                            final ConcurrencyException abortCause = new ConcurrencyException(currentUser, thisOid, thisVersion, otherVersion);
-                            persistenceSession.getCurrentTransaction().setAbortCause(abortCause);
-
-                        } else {
-                            LOG.warn("concurrency conflict detected but suppressed, on " + thisOid + " (" + otherVersion + ")");
-                        }
-                    }
-                } else {
-                    originalOid = persistenceSession.createPersistentOrViewModelOid(pojo);
-                    
-                    // it appears to be possible that there is already an adapter for this Oid, 
-                    // ie from ObjectStore#resolveImmediately()
-                    adapter = persistenceSession.getAdapterFor(originalOid);
-                    if(adapter != null) {
-                        persistenceSession.remapRecreatedPojo(adapter, pojo);
-                    } else {
-                        adapter = persistenceSession.mapRecreatedPojo(originalOid, pojo);
-                        CallbackFacet.Util.callCallback(adapter, LoadedCallbackFacet.class);
-                    }
-                }
-
-                adapter.setVersion(datastoreVersion);
-            }
-        }, calledFrom);
-    }
-
-
-
-
-
-
-
 
 
     // /////////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/be852c94/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 d458e7b..80795e7 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
@@ -55,9 +55,11 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
@@ -839,8 +841,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         // possibly redundant because also called in the post-load event
         // listener, but (with JPA impl) found it was required if we were ever to
         // get an eager left-outer-join as the result of a refresh (sounds possible).
-        frameworkSynchronizer.postLoadProcessingFor((Persistable) domainObject,
-                FrameworkSynchronizer.CalledFrom.OS_RESOLVE);
+        postLoadProcessingFor((Persistable) domainObject, FrameworkSynchronizer.CalledFrom.OS_RESOLVE);
     }
     //endregion
 
@@ -1254,7 +1255,68 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
 
     public void postLoadProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
-        frameworkSynchronizer.postLoadProcessingFor(pojo, calledFrom);
+
+        withLogging(pojo, new Runnable() {
+            @Override
+            public void run() {
+                final Persistable pc = pojo;
+
+                // need to do eagerly, because (if a viewModel then) a
+                // viewModel's #viewModelMemento might need to use services
+                injectServicesInto(pojo);
+
+                final Version datastoreVersion = getVersionIfAny(pc);
+
+                final RootOid originalOid;
+                ObjectAdapter adapter = getAdapterFor(pojo);
+                if (adapter != null) {
+                    ensureRootObject(pojo);
+                    originalOid = (RootOid) adapter.getOid();
+
+                    final Version originalVersion = adapter.getVersion();
+
+                    // sync the pojo held by the adapter with that just loaded
+                    remapRecreatedPojo(adapter, pojo);
+
+                    // since there was already an adapter, do concurrency check
+                    // (but don't set abort cause if checking is suppressed through thread-local)
+                    final RootOid thisOid = originalOid;
+                    final Version thisVersion = originalVersion;
+                    final Version otherVersion = datastoreVersion;
+
+                    if (thisVersion != null &&
+                            otherVersion != null &&
+                            thisVersion.different(otherVersion)) {
+
+                        if (AdapterManager.ConcurrencyChecking.isCurrentlyEnabled()) {
+                            LOG.info("concurrency conflict detected on " + thisOid + " (" + otherVersion + ")");
+                            final String currentUser = authenticationSession.getUserName();
+                            final ConcurrencyException abortCause = new ConcurrencyException(currentUser, thisOid,
+                                    thisVersion, otherVersion);
+                            getCurrentTransaction().setAbortCause(abortCause);
+
+                        } else {
+                            LOG.warn("concurrency conflict detected but suppressed, on " + thisOid + " (" + otherVersion
+                                    + ")");
+                        }
+                    }
+                } else {
+                    originalOid = createPersistentOrViewModelOid(pojo);
+
+                    // it appears to be possible that there is already an adapter for this Oid,
+                    // ie from ObjectStore#resolveImmediately()
+                    adapter = getAdapterFor(originalOid);
+                    if (adapter != null) {
+                        remapRecreatedPojo(adapter, pojo);
+                    } else {
+                        adapter = mapRecreatedPojo(originalOid, pojo);
+                        CallbackFacet.Util.callCallback(adapter, LoadedCallbackFacet.class);
+                    }
+                }
+
+                adapter.setVersion(datastoreVersion);
+            }
+        }, calledFrom);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/be852c94/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
index ec41444..1b59683 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
@@ -36,7 +36,7 @@ public class PersistenceQueryFindAllInstancesProcessor extends PersistenceQueryP
     private static final Logger LOG = LoggerFactory.getLogger(PersistenceQueryFindAllInstancesProcessor.class);
 
     public PersistenceQueryFindAllInstancesProcessor(final PersistenceManager persistenceManager, final FrameworkSynchronizer frameworkSynchronizer) {
-        super(persistenceManager, frameworkSynchronizer);
+        super(persistenceManager);
     }
 
     public List<ObjectAdapter> process(final PersistenceQueryFindAllInstances persistenceQuery) {

http://git-wip-us.apache.org/repos/asf/isis/blob/be852c94/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
index 1224afb..afd04a6 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
@@ -44,7 +44,7 @@ public class PersistenceQueryFindUsingApplibQueryProcessor extends PersistenceQu
     private static final Logger LOG = LoggerFactory.getLogger(PersistenceQueryFindUsingApplibQueryProcessor.class);
 
     public PersistenceQueryFindUsingApplibQueryProcessor(final PersistenceManager persistenceManager, final FrameworkSynchronizer frameworkSynchronizer) {
-        super(persistenceManager, frameworkSynchronizer);
+        super(persistenceManager);
     }
 
     public List<ObjectAdapter> process(final PersistenceQueryFindUsingApplibQueryDefault persistenceQuery) {

http://git-wip-us.apache.org/repos/asf/isis/blob/be852c94/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
index 00f68fb..05db979 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
@@ -34,7 +34,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer;
 import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer.CalledFrom;
 import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -44,11 +43,9 @@ public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQue
         implements PersistenceQueryProcessor<T> {
 
     private final PersistenceManager persistenceManager;
-    private final FrameworkSynchronizer frameworkSynchronizer;
 
-    protected PersistenceQueryProcessorAbstract(final PersistenceManager persistenceManager, final FrameworkSynchronizer frameworkSynchronizer) {
+    protected PersistenceQueryProcessorAbstract(final PersistenceManager persistenceManager) {
         this.persistenceManager = persistenceManager;
-        this.frameworkSynchronizer = frameworkSynchronizer;
     }
 
     protected PersistenceManager getPersistenceManager() {
@@ -82,7 +79,7 @@ public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQue
             ObjectAdapter adapter;
             if(pojo instanceof Persistable) {
                 // an entity
-                frameworkSynchronizer.postLoadProcessingFor((Persistable) pojo, CalledFrom.OS_QUERY);
+                getPersistenceSession().postLoadProcessingFor((Persistable) pojo, CalledFrom.OS_QUERY);
                 adapter = getAdapterManager().getAdapterFor(pojo);
             } else {
                 // a value type


[12/50] isis git commit: ISIS-1194: moving ObjectSpecification#createObject to PersistenceSession.

Posted by da...@apache.org.
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


[11/50] isis git commit: ISIS-1194: simplifying ObjectSpecificationDefault#createObject

Posted by da...@apache.org.
ISIS-1194: simplifying ObjectSpecificationDefault#createObject


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

Branch: refs/heads/master
Commit: 7da8aa53e4604b81c42137454fd4984a3245023e
Parents: 694e3b0
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 14:22:33 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 14:22:33 2015 +0100

----------------------------------------------------------------------
 .../dflt/ObjectSpecificationDefault.java        | 38 +++++++++-----------
 1 file changed, 17 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/7da8aa53/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 a9d5f43..5ff3e3b 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
@@ -418,32 +418,28 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
         }
         
         try {
-            return instantiate(getCorrespondingClass());
-        } catch (final ObjectInstantiationException e) {
-            throw new IsisException("Failed to create instance of type " + getFullIdentifier(), e);
-        }
-    }
+            final Class<?> cls = getCorrespondingClass();
 
-    private <T> T instantiate(final Class<T> cls) throws ObjectInstantiationException {
+            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);
+            }
 
-        if (Modifier.isAbstract(cls.getModifiers())) {
-            throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
-        }
-        final T 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);
         }
-
-        getDependencyInjector().injectServicesInto(newInstance);
-        return newInstance;
     }
 
-
     /**
      * REVIEW: does this behaviour live best here?  Not that sure that it does...
      */


[23/50] isis git commit: ISIS-1194: removing CreateObjectContext

Posted by da...@apache.org.
ISIS-1194: removing CreateObjectContext


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

Branch: refs/heads/master
Commit: 4a5a2eeadf997361789d9998f338da41008b010c
Parents: 3a5eb39
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:46:56 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:46:56 2015 +0100

----------------------------------------------------------------------
 .../specloader/ObjectReflectorDefault.java      |  3 +-
 .../specimpl/CreateObjectContext.java           | 38 --------------------
 .../dflt/ObjectSpecificationDefault.java        | 16 +--------
 3 files changed, 2 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/4a5a2eea/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 bc56df1..e34454f 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
@@ -463,12 +463,11 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
             return new ObjectSpecificationOnStandaloneList(specContext, objectMemberDependencies);
         } else {
             final SpecificationLoaderSpi specificationLoader = this;
-            final CreateObjectContext createObjectContext = new CreateObjectContext(adapterManager, servicesInjector);
             final FacetedMethodsBuilderContext facetedMethodsBuilderContext =
                     new FacetedMethodsBuilderContext(
                             specificationLoader, facetProcessor, layoutMetadataReaders);
             return new ObjectSpecificationDefault(cls, facetedMethodsBuilderContext, specContext,
-                    objectMemberDependencies, createObjectContext);
+                    objectMemberDependencies);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/4a5a2eea/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java
deleted file mode 100644
index dca42b1..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.isis.core.metamodel.specloader.specimpl;
-
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-
-public class CreateObjectContext {
-    private final AdapterManager adapterManager;
-    private final ServicesInjector dependencyInjector;
-
-    public CreateObjectContext(final AdapterManager adapterManager, final ServicesInjector dependencyInjector) {
-        this.adapterManager = adapterManager;
-        this.dependencyInjector = dependencyInjector;
-    }
-
-    public AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
-
-    public ServicesInjector getDependencyInjector() {
-        return dependencyInjector;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/4a5a2eea/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 3e87171..2e0512f 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
@@ -53,7 +53,6 @@ import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 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.object.wizard.WizardFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationDependencies;
@@ -64,7 +63,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
-import org.apache.isis.core.metamodel.specloader.specimpl.CreateObjectContext;
 import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder;
 import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilderContext;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionImpl;
@@ -94,8 +92,6 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
      */
     private Map<Method, ObjectMember> membersByMethod = null;
     
-    private final CreateObjectContext createObjectContext;
-
     private final FacetedMethodsBuilder facetedMethodsBuilder;
 
 
@@ -107,12 +103,10 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
             final Class<?> correspondingClass,
             final FacetedMethodsBuilderContext facetedMethodsBuilderContext,
             final ObjectSpecificationDependencies specContext,
-            final ObjectMemberDependencies objectMemberDependencies,
-            final CreateObjectContext createObjectContext) {
+            final ObjectMemberDependencies objectMemberDependencies) {
         super(correspondingClass, determineShortName(correspondingClass), specContext, objectMemberDependencies);
 
         this.facetedMethodsBuilder = new FacetedMethodsBuilder(this, facetedMethodsBuilderContext);
-        this.createObjectContext = createObjectContext;
     }
 
     @Override
@@ -482,13 +476,5 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
         return str.toString();
     }
 
-    // //////////////////////////////////////////////////////////////////
-    // Dependencies (from constructor)
-    // //////////////////////////////////////////////////////////////////
-
-    protected ServicesInjector getDependencyInjector() {
-        return createObjectContext.getDependencyInjector();
-    }
-
 
 }


[26/50] isis git commit: ISIS-1194: PersistenceSession now attaches the IsisLifecycleListener to the created PersistenceManager

Posted by da...@apache.org.
ISIS-1194: PersistenceSession now attaches the IsisLifecycleListener to the created PersistenceManager

... rather than have DataNucleusApplicationComponents do this.  Safe to do because IsisLifecycleListener/FrameworkSynchronizer (as of yet) have no state.


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

Branch: refs/heads/master
Commit: c2afada4940275915e813c4250d9f08dbe551665
Parents: cad8ca5
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:56:16 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:56:16 2015 +0100

----------------------------------------------------------------------
 .../system/persistence/DataNucleusApplicationComponents.java     | 2 --
 .../isis/core/runtime/system/persistence/PersistenceSession.java | 4 ++++
 2 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/c2afada4/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
index e2616b8..3988567 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
@@ -275,8 +275,6 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
     public PersistenceManager createPersistenceManager() {
         PersistenceManager persistenceManager = persistenceManagerFactory.getPersistenceManager();
 
-        final IsisLifecycleListener isisLifecycleListener = new IsisLifecycleListener(synchronizer);
-        persistenceManager.addInstanceLifecycleListener(isisLifecycleListener, (Class[])null);
         return persistenceManager;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/c2afada4/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 4da705d..7afc1dc 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
@@ -84,6 +84,7 @@ import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
 import org.apache.isis.core.runtime.system.transaction.TransactionalClosureWithReturn;
+import org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener;
 import org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusCreateObjectCommand;
 import org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusDeleteObjectCommand;
 import org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryFindAllInstancesProcessor;
@@ -223,6 +224,9 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
         persistenceManager = applicationComponents.createPersistenceManager();
 
+        final IsisLifecycleListener isisLifecycleListener = new IsisLifecycleListener(frameworkSynchronizer);
+        persistenceManager.addInstanceLifecycleListener(isisLifecycleListener, (Class[])null);
+
         persistenceQueryProcessorByClass.put(
                 PersistenceQueryFindAllInstances.class,
                 new PersistenceQueryFindAllInstancesProcessor(


[21/50] isis git commit: ISIS-1194: PersistenceSession, inlining createInstance.

Posted by da...@apache.org.
ISIS-1194: PersistenceSession, inlining createInstance.


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

Branch: refs/heads/master
Commit: 4776d59ec022d9626e9e5a4bcec4e7d0a50597c4
Parents: 16734b7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:31:49 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:31:49 2015 +0100

----------------------------------------------------------------------
 .../system/persistence/PersistenceSession.java      | 16 +---------------
 1 file changed, 1 insertion(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/4776d59e/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 38e45c2..08b45f0 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
@@ -387,7 +387,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
      * {@link org.apache.isis.applib.DomainObjectContainer}.
      */
     public ObjectAdapter createTransientInstance(final ObjectSpecification objectSpec) {
-        return createInstance(objectSpec, Variant.TRANSIENT);
+        return createInstance(objectSpec, Variant.TRANSIENT, null);
     }
 
     public ObjectAdapter createViewModelInstance(final ObjectSpecification objectSpec, final String memento) {
@@ -401,20 +401,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
     private ObjectAdapter createInstance(
             final ObjectSpecification objectSpec,
-            final Variant variant) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("creating " + variant + " instance of " + objectSpec);
-        }
-        final Object pojo = instantiateAndInjectServices(objectSpec);
-
-
-        final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
-        return initializePropertiesAndDoCallback(adapter);
-    }
-
-
-    private ObjectAdapter createInstance(
-            final ObjectSpecification objectSpec,
             final Variant variant,
             final String memento) {
         if (LOG.isDebugEnabled()) {


[34/50] isis git commit: ISIS-1194: removing IsisLifecycleListener2's dependency on IsisContext (by passing in PersistenceSession through constructor).

Posted by da...@apache.org.
ISIS-1194: removing IsisLifecycleListener2's dependency on IsisContext (by passing in PersistenceSession through constructor).


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

Branch: refs/heads/master
Commit: 1864641b147a3d9a3f5c277f4bdb5f94255fa41c
Parents: 17cd7bc
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:30:20 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:30:20 2015 +0100

----------------------------------------------------------------------
 .../runtime/system/persistence/IsisLifecycleListener2.java  | 9 ++++++---
 .../core/runtime/system/persistence/PersistenceSession.java | 2 +-
 .../jdo/datanucleus/persistence/IsisLifecycleListener.java  | 7 +++++--
 3 files changed, 12 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/1864641b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
index 5477e90..ffb4bcb 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
@@ -36,7 +36,6 @@ import org.datanucleus.enhancement.Persistable;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer.CalledFrom;
 import org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener;
 
@@ -45,9 +44,13 @@ public class IsisLifecycleListener2
         DetachLifecycleListener, DirtyLifecycleListener, LoadLifecycleListener, StoreLifecycleListener,
         SuspendableListener {
 
+    private final PersistenceSession persistenceSession;
     private final FrameworkSynchronizer synchronizer;
 
-    public IsisLifecycleListener2(FrameworkSynchronizer synchronizer) {
+    public IsisLifecycleListener2(
+            final PersistenceSession persistenceSession,
+            final FrameworkSynchronizer synchronizer) {
+        this.persistenceSession = persistenceSession;
         this.synchronizer = synchronizer;
     }
 
@@ -279,6 +282,6 @@ public class IsisLifecycleListener2
     // /////////////////////////////////////////////////////////
 
     protected AdapterManager getAdapterManager() {
-        return IsisContext.getPersistenceSession().getAdapterManager();
+        return persistenceSession.getAdapterManager();
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/1864641b/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 9e7baf1..f5aded2 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
@@ -224,7 +224,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
         persistenceManager = applicationComponents.getPersistenceManagerFactory().getPersistenceManager();
 
-        final IsisLifecycleListener isisLifecycleListener = new IsisLifecycleListener(frameworkSynchronizer);
+        final IsisLifecycleListener isisLifecycleListener = new IsisLifecycleListener(this, frameworkSynchronizer);
         persistenceManager.addInstanceLifecycleListener(isisLifecycleListener, (Class[])null);
 
         persistenceQueryProcessorByClass.put(

http://git-wip-us.apache.org/repos/asf/isis/blob/1864641b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
index fb442fd..f138725 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
@@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer;
 import org.apache.isis.core.runtime.system.persistence.IsisLifecycleListener2;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 
 /**
  * @deprecated - retained only for backward compatibility of logging (in logging.properties file).
@@ -32,7 +33,9 @@ public class IsisLifecycleListener extends IsisLifecycleListener2 {
 
     public static final Logger LOG = LoggerFactory.getLogger(IsisLifecycleListener.class);
 
-    public IsisLifecycleListener(final FrameworkSynchronizer synchronizer) {
-        super(synchronizer);
+    public IsisLifecycleListener(
+            final PersistenceSession persistenceSession,
+            final FrameworkSynchronizer synchronizer) {
+        super(persistenceSession, synchronizer);
     }
 }


[38/50] isis git commit: ISIS-1194: inlining lazilyLoaded from FrameworkSynchronizer to PersistenceSession

Posted by da...@apache.org.
ISIS-1194: inlining lazilyLoaded from FrameworkSynchronizer to PersistenceSession


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

Branch: refs/heads/master
Commit: 195de3d181a833f783d268f8a0b44fa5186ecdc1
Parents: fe62380
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:43:13 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:43:13 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java       | 14 --------------
 .../system/persistence/PersistenceSession.java   | 19 +++++++++++++++++--
 2 files changed, 17 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/195de3d1/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 51aff7e..0340ca0 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -224,21 +224,7 @@ public class FrameworkSynchronizer {
 
 
 
-    public ObjectAdapter lazilyLoaded(final Persistable pojo, CalledFrom calledFrom) {
-        return withLogging(pojo, new Callable<ObjectAdapter>() {
-            @Override
-            public ObjectAdapter call() {
-                if(persistenceSession.getJdoObjectId(pojo) == null) {
-                    return null;
-                }
-                final RootOid oid = persistenceSession.createPersistentOrViewModelOid(pojo);
-                final ObjectAdapter adapter = persistenceSession.mapRecreatedPojo(oid, pojo);
-                return adapter;
-            }
-        }, calledFrom);
-    }
 
-    
     public void preDeleteProcessingFor(final Persistable pojo, final CalledFrom calledFrom) {
         withLogging(pojo, new Runnable() {
             @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/195de3d1/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 a4081a1..24f2adb 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
@@ -762,9 +762,24 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
             return null;
         }
         final Persistable persistenceCapable = (Persistable) pojo;
-        return frameworkSynchronizer.lazilyLoaded(persistenceCapable, FrameworkSynchronizer.CalledFrom.OS_LAZILYLOADED);
+        return lazilyLoaded(persistenceCapable, FrameworkSynchronizer.CalledFrom.OS_LAZILYLOADED);
     }
 
+    public ObjectAdapter lazilyLoaded(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
+        return withLogging(pojo, new Callable<ObjectAdapter>() {
+            @Override
+            public ObjectAdapter call() {
+                if (getJdoObjectId(pojo) == null) {
+                    return null;
+                }
+                final RootOid oid = createPersistentOrViewModelOid(pojo);
+                final ObjectAdapter adapter = mapRecreatedPojo(oid, pojo);
+                return adapter;
+            }
+        }, calledFrom);
+    }
+
+
     //endregion
 
     //region > refreshRootInTransaction, refreshRoot
@@ -1228,7 +1243,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
                     // it seems reasonable in this case to simply map into Isis here ("just-in-time"); presumably
                     // DN would not be calling this callback if the pojo was not persistent.
 
-                    adapter = frameworkSynchronizer.lazilyLoaded(pojo, FrameworkSynchronizer.CalledFrom.EVENT_PREDIRTY);
+                    adapter = lazilyLoaded(pojo, FrameworkSynchronizer.CalledFrom.EVENT_PREDIRTY);
                     if (adapter == null) {
                         throw new RuntimeException(
                                 "DN could not find objectId for pojo (unexpected) and so could not map into Isis; pojo=["


[22/50] isis git commit: ISIS-1194: PersistenceSession: tiny refactor of instantiateAndInjectServices(...)

Posted by da...@apache.org.
ISIS-1194: PersistenceSession: tiny refactor of instantiateAndInjectServices(...)


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

Branch: refs/heads/master
Commit: 3a5eb39e844b421429354c702e9e4cdce45ad26e
Parents: 4776d59
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:39:47 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:39:47 2015 +0100

----------------------------------------------------------------------
 .../system/persistence/PersistenceSession.java  | 34 +++++++++-----------
 1 file changed, 15 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/3a5eb39e/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 08b45f0..9258a4c 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
@@ -60,7 +60,6 @@ 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;
@@ -424,27 +423,24 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
             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);
-            }
+        final Class<?> cls = correspondingClass;
+        if (Modifier.isAbstract(cls.getModifiers())) {
+            throw new IsisException("Cannot create an instance of an abstract class: " + cls);
+        }
+        final Object newInstance;
+        if (Modifier.isAbstract(cls.getModifiers())) {
+            throw new IsisException("Cannot create an instance of an abstract class: " + cls);
+        }
 
-            servicesInjector.injectServicesInto(newInstance);
-            return newInstance;
-        } catch (final ObjectInstantiationException e) {
+        try {
+            newInstance = cls.newInstance();
+        } catch (final IllegalAccessException | InstantiationException e) {
             throw new IsisException("Failed to create instance of type " + objectSpec.getFullIdentifier(), e);
         }
+
+        servicesInjector.injectServicesInto(newInstance);
+        return newInstance;
+
     }
 
     private ObjectAdapter initializePropertiesAndDoCallback(final ObjectAdapter adapter) {


[20/50] isis git commit: ISIS-1194: PersistenceSession put guard in createInstance overload per the variant param;

Posted by da...@apache.org.
ISIS-1194: PersistenceSession put guard in createInstance overload per the variant param;

update the log files to use variant


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

Branch: refs/heads/master
Commit: 16734b78cd6c5154d1f1d23fe27df8b97ae33806
Parents: 71dd91d
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:06:58 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:06:58 2015 +0100

----------------------------------------------------------------------
 .../runtime/system/persistence/PersistenceSession.java  | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/16734b78/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 419e6ae..38e45c2 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
@@ -403,9 +403,11 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
             final ObjectSpecification objectSpec,
             final Variant variant) {
         if (LOG.isDebugEnabled()) {
-            LOG.debug("creating transient instance of " + objectSpec);
+            LOG.debug("creating " + variant + " instance of " + objectSpec);
         }
         final Object pojo = instantiateAndInjectServices(objectSpec);
+
+
         final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
         return initializePropertiesAndDoCallback(adapter);
     }
@@ -416,12 +418,14 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
             final Variant variant,
             final String memento) {
         if (LOG.isDebugEnabled()) {
-            LOG.debug("creating view model instance of " + objectSpec);
+            LOG.debug("creating " + variant + " instance of " + objectSpec);
         }
         final Object pojo = instantiateAndInjectServices(objectSpec);
 
-        final ViewModelFacet facet = objectSpec.getFacet(ViewModelFacet.class);
-        facet.initialize(pojo, memento);
+        if(variant == Variant.VIEW_MODEL) {
+            final ViewModelFacet facet = objectSpec.getFacet(ViewModelFacet.class);
+            facet.initialize(pojo, memento);
+        }
 
         final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
         return initializePropertiesAndDoCallback(adapter);


[32/50] isis git commit: ISIS-1194: law of demeter for FrameworkSynchronizer and ServicesInjector - call PersistenceSession instead.

Posted by da...@apache.org.
ISIS-1194: law of demeter for FrameworkSynchronizer and ServicesInjector - call PersistenceSession instead.


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

Branch: refs/heads/master
Commit: b20883719c4a23bb24b44bf77ba2dcd853c7b0f3
Parents: 1933082
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:24:12 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:24:12 2015 +0100

----------------------------------------------------------------------
 .../runtime/system/persistence/FrameworkSynchronizer.java    | 6 +-----
 .../core/runtime/system/persistence/PersistenceSession.java  | 8 ++++++++
 2 files changed, 9 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/b2088371/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 06bcc04..ed51221 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -42,7 +42,6 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallback
 import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
 
 public class FrameworkSynchronizer {
@@ -51,7 +50,6 @@ public class FrameworkSynchronizer {
 
     private final PersistenceSession persistenceSession;
     private final AuthenticationSession authenticationSession;
-    private ServicesInjectorSpi servicesInjector;
 
     public FrameworkSynchronizer(
             final PersistenceSession persistenceSession,
@@ -59,8 +57,6 @@ public class FrameworkSynchronizer {
         this.persistenceSession = persistenceSession;
         this.authenticationSession = authenticationSession;
 
-        this.servicesInjector = getPersistenceSession().getServicesInjector();
-
     }
 
     /**
@@ -92,7 +88,7 @@ public class FrameworkSynchronizer {
                 
                 // need to do eagerly, because (if a viewModel then) a
                 // viewModel's #viewModelMemento might need to use services 
-                servicesInjector.injectServicesInto(pojo);
+                persistenceSession.injectServicesInto(pojo);
                 
                 final Version datastoreVersion = getVersionIfAny(pc);
                 

http://git-wip-us.apache.org/repos/asf/isis/blob/b2088371/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 dbd9696..0ba7341 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
@@ -1177,6 +1177,14 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
     // endregion
 
+    //region > ServicesInjector delegate methods
+
+    public void injectServicesInto(final Object domainObject) {
+        servicesInjector.injectInto(domainObject);
+    }
+
+    //endregion
+    
 }
 
 


[42/50] isis git commit: ISIS-1194: inlining preStoreProcessingFor from FrameworkSynchronizer to PersistenceSession

Posted by da...@apache.org.
ISIS-1194: inlining preStoreProcessingFor from FrameworkSynchronizer to PersistenceSession


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

Branch: refs/heads/master
Commit: 9a72f3aabe1724abe15a143cb3e8ca3de6911b7e
Parents: 819dc94
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:51:41 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:51:41 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java      | 37 --------------------
 .../system/persistence/PersistenceSession.java  | 34 +++++++++++++++++-
 2 files changed, 33 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/9a72f3aa/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 99d0888..ec2ce96 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -35,9 +35,6 @@ import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
-import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
 
 public class FrameworkSynchronizer {
 
@@ -138,40 +135,6 @@ public class FrameworkSynchronizer {
     }
 
 
-    /**
-     * Called either when an entity is initially persisted, or when an entity is updated; fires the appropriate
-     * lifecycle callback.
-     *
-     * <p>
-     * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
-     * to determine which callback to fire.
-     */
-    public void preStoreProcessingFor(final Persistable pojo, final CalledFrom calledFrom) {
-        withLogging(pojo, new Runnable() {
-            @Override
-            public void run() {
-                final ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
-                if(adapter == null) {
-                    // not expected.
-                    return;
-                }
-
-                final RootOid isisOid = (RootOid) adapter.getOid();
-                if (isisOid.isTransient()) {
-                    // persisting
-                    // previously this was performed in the DataNucleusSimplePersistAlgorithm.
-                    CallbackFacet.Util.callCallback(adapter, PersistingCallbackFacet.class);
-                } else {
-                    // updating
-
-                    // don't call here, already called in preDirty.
-
-                    // CallbackFacet.Util.callCallback(adapter, UpdatingCallbackFacet.class);
-                }
-
-            }
-        }, calledFrom);
-    }
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/9a72f3aa/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 599dce0..d458e7b 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
@@ -59,6 +59,7 @@ import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
@@ -1256,8 +1257,39 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         frameworkSynchronizer.postLoadProcessingFor(pojo, calledFrom);
     }
 
+    /**
+     * Called either when an entity is initially persisted, or when an entity is updated; fires the appropriate
+     * lifecycle callback.
+     *
+     * <p>
+     * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
+     * to determine which callback to fire.
+     */
     public void preStoreProcessingFor(final Persistable pojo, final FrameworkSynchronizer.CalledFrom calledFrom) {
-        frameworkSynchronizer.preStoreProcessingFor(pojo, calledFrom);
+        withLogging(pojo, new Runnable() {
+            @Override
+            public void run() {
+                final ObjectAdapter adapter = getAdapterFor(pojo);
+                if (adapter == null) {
+                    // not expected.
+                    return;
+                }
+
+                final RootOid isisOid = (RootOid) adapter.getOid();
+                if (isisOid.isTransient()) {
+                    // persisting
+                    // previously this was performed in the DataNucleusSimplePersistAlgorithm.
+                    CallbackFacet.Util.callCallback(adapter, PersistingCallbackFacet.class);
+                } else {
+                    // updating
+
+                    // don't call here, already called in preDirty.
+
+                    // CallbackFacet.Util.callCallback(adapter, UpdatingCallbackFacet.class);
+                }
+
+            }
+        }, calledFrom);
     }
 
     /**


[49/50] isis git commit: ISIS-1194: inlining PersistAlgorithm to PersistenceSession

Posted by da...@apache.org.
ISIS-1194: inlining PersistAlgorithm to PersistenceSession


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

Branch: refs/heads/master
Commit: 6f5b86b0257ca5d48c447d5a3be56bb0c8cf9baa
Parents: 97eed79
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 18:09:05 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 18:10:08 2015 +0100

----------------------------------------------------------------------
 .../objectstore/algorithm/PersistAlgorithm.java |  93 -------------
 .../objectstore/algorithm/package-info.java     |  39 ------
 .../system/persistence/PersistenceSession.java  |  38 +++++-
 .../adapterfactory/pojo/PojoAdapterTest.java    |   6 +-
 .../algorithm/PersistAlgorithmContractTest.java | 132 -------------------
 .../transaction/PojoAdapterBuilder.java         |  14 +-
 6 files changed, 42 insertions(+), 280 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/6f5b86b0/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithm.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithm.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithm.java
deleted file mode 100644
index a78dd7f..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithm.java
+++ /dev/null
@@ -1,93 +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.objectstore.algorithm;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-
-public class PersistAlgorithm {
-
-    private static final Logger LOG = LoggerFactory
-            .getLogger(PersistAlgorithm.class);
-
-
-    // ////////////////////////////////////////////////////////////////
-    // name
-    // ////////////////////////////////////////////////////////////////
-
-    public String name() {
-        return "PersistAlgorithm";
-    }
-
-
-    // ////////////////////////////////////////////////////////////////
-    // makePersistent
-    // ////////////////////////////////////////////////////////////////
-
-    public void makePersistent(final ObjectAdapter adapter,
-            final PersistenceSession persistenceSession) {
-        if (alreadyPersistedOrNotPersistable(adapter)) {
-            return;
-        }
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("persist " + adapter);
-        }
-
-        // previously we called the PersistingCallback here.
-        // this is now done in the JDO framework synchronizer.
-        //
-        // the guard below used to be because (apparently)
-        // the callback might have caused the adapter to become persistent.
-        // leaving it in as think it does no harm...
-        if (alreadyPersistedOrNotPersistable(adapter)) {
-            return;
-        }
-        persistenceSession.addCreateObjectCommand(adapter);
-    }
-
-
-    private static boolean alreadyPersistedOrNotPersistable(final ObjectAdapter adapter) {
-        return adapter.representsPersistent() || objectSpecNotPersistable(adapter);
-    }
-
-
-    private static boolean objectSpecNotPersistable(final ObjectAdapter adapter) {
-        return !adapter.getSpecification().persistability().isPersistable() || adapter.isParentedCollection();
-    }
-
-
-
-    // ////////////////////////////////////////////////////////////////
-    // toString
-    // ////////////////////////////////////////////////////////////////
-
-    @Override
-    public String toString() {
-        final ToString toString = new ToString(this);
-        return toString.toString();
-    }
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/6f5b86b0/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/package-info.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/package-info.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/package-info.java
deleted file mode 100644
index 50837aa..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/package-info.java
+++ /dev/null
@@ -1,39 +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.
- */
-
-/**
- * This interface is used by the {@link org.apache.isis.core.runtime.system.persistence.PersistenceSession} and
- * is generally not intended to be implemented directly.  
- * 
- * <p>
- * The {@link PersistAlgorithm} defines how persistence-by-reachability is enacted.  This only
- * applies to the <tt>ObjectStorePersistor</tt> implementation, but has been brought up into
- * <tt>architecture</tt> module because it is very much a peer of the other helper objects
- * that influence the {@link org.apache.isis.core.runtime.system.persistence.PersistenceSession}'s behaviour, such
- * as {@link ClassSubstitutor} and {@link org.apache.isis.core.runtime.system.persistence.OidGenerator}. 
- * 
- * <p>
- * Since there is a close dependency between the {@link org.apache.isis.core.runtime.system.persistence.PersistenceSession}
- * and the {@link PersistAlgorithm} implementation, it is the job of the {@link org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller} to
- * ensure that the correct {@link PersistAlgorithm} is setup.
- * 
- * @see org.apache.isis.metamodel.specloader.classsubstitutor.classsubstitor.ClassSubstitutor.ClassStrategy
- * @see org.apache.isis.core.runtime.system.persistence.OidGenerator
- */
-package org.apache.isis.core.runtime.persistence.objectstore.algorithm;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/6f5b86b0/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 9afba03..4d2e9bf 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
@@ -81,7 +81,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.objectstore.algorithm.PersistAlgorithm;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
@@ -134,8 +133,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     private final OidGenerator oidGenerator;
     private final AdapterManagerDefault adapterManager;
 
-    private final PersistAlgorithm persistAlgorithm ;
-
     private final PersistenceQueryFactory persistenceQueryFactory;
     private final IsisConfiguration configuration;
     private final SpecificationLoaderSpi specificationLoader;
@@ -191,7 +188,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
         this.adapterManager = new AdapterManagerDefault(this, specificationLoader, oidMarshaller,
                 oidGenerator, authenticationSession, servicesInjector, configuration);
-        this.persistAlgorithm = new PersistAlgorithm();
 
         this.persistenceQueryFactory = new PersistenceQueryFactory(getSpecificationLoader(), adapterManager);
         this.transactionManager = new IsisTransactionManager(this, servicesInjector);
@@ -872,7 +868,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
             @Override
             public void execute() {
-                persistAlgorithm.makePersistent(adapter, PersistenceSession.this);
+                makePersistent(adapter);
 
                 // clear out the map of transient -> persistent
                 PersistenceSession.this.persistentByTransient.clear();
@@ -881,6 +877,37 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         });
     }
 
+    private void makePersistent(final ObjectAdapter adapter) {
+        if (alreadyPersistedOrNotPersistable(adapter)) {
+            return;
+        }
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("persist " + adapter);
+        }
+
+        // previously we called the PersistingCallback here.
+        // this is now done in the JDO framework synchronizer.
+        //
+        // the guard below used to be because (apparently)
+        // the callback might have caused the adapter to become persistent.
+        // leaving it in as think it does no harm...
+        if (alreadyPersistedOrNotPersistable(adapter)) {
+            return;
+        }
+        addCreateObjectCommand(adapter);
+    }
+
+
+    private static boolean alreadyPersistedOrNotPersistable(final ObjectAdapter adapter) {
+        return adapter.representsPersistent() || objectSpecNotPersistable(adapter);
+    }
+
+
+    private static boolean objectSpecNotPersistable(final ObjectAdapter adapter) {
+        return !adapter.getSpecification().persistability().isPersistable() || adapter.isParentedCollection();
+    }
+
+
     //endregion
 
     //region > destroyObjectInTransaction
@@ -1071,7 +1098,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
         debug.appendTitle("Persistor");
         getTransactionManager().debugData(debug);
-        debug.appendln("Persist Algorithm", persistAlgorithm);
         debug.appendln();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6f5b86b0/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
index 04702b2..bbb3cb1 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
@@ -30,7 +30,6 @@ import org.junit.Test;
 import org.apache.isis.applib.profiles.Localization;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.adapter.version.Version;
@@ -38,6 +37,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
@@ -61,7 +61,7 @@ public class PojoAdapterTest {
     @Mock
     private AuthenticationSession mockAuthenticationSession;
     @Mock
-    private AdapterManager mockObjectAdapterLookup;
+    private PersistenceSession mockPersistenceSession;
     @Mock
     private Localization mockLocalization;
     
@@ -70,7 +70,7 @@ public class PojoAdapterTest {
         domainObject = new RuntimeTestPojo();
         
         adapter = new PojoAdapter(domainObject, RootOid.create(ObjectSpecId.of("CUS"), "1"), mockAuthenticationSession,
-                mockLocalization, mockSpecificationLoader, persistenceSession);
+                mockLocalization, mockSpecificationLoader, mockPersistenceSession);
         adapter.setVersion(mockVersion);
         
         allowUnimportantMethodCallsOn(mockVersion);

http://git-wip-us.apache.org/repos/asf/isis/blob/6f5b86b0/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmContractTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmContractTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmContractTest.java
deleted file mode 100644
index ece097c..0000000
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmContractTest.java
+++ /dev/null
@@ -1,132 +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.objectstore.algorithm;
-
-import org.jmock.Expectations;
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.Persistability;
-import org.apache.isis.core.runtime.persistence.NotPersistableException;
-import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder.Persistence;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder.Type;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-
-public abstract class PersistAlgorithmContractTest {
-
-    @Rule
-    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-
-    @Mock
-    private PersistenceSession mockAdder;
-
-    @Mock
-    private ObjectSpecification objectSpec;
-
-    @Mock
-    private AdapterManager mockObjectAdapterLookup;
-    
-    private PersistAlgorithm persistAlgorithm;
-
-    
-
-    @Before
-    public void setUp() throws Exception {
-        persistAlgorithm = createPersistAlgorithm();
-    }
-
-    /**
-     * Hook for any implementation to implement.
-     * 
-     * @return
-     */
-    protected abstract PersistAlgorithm createPersistAlgorithm();
-
-    @Test
-    public void makePersistent_skipsValueObjects() {
-        
-        context.checking(new Expectations() {
-            {
-                allowing(objectSpec).isParentedOrFreeCollection();
-                will(returnValue(false));
-
-                allowing(objectSpec).persistability();
-                will(returnValue(Persistability.USER_PERSISTABLE));
-                
-                never(mockAdder);
-            }
-        });
-
-        final PojoAdapter valueAdapter = PojoAdapterBuilder.create().with(Type.VALUE).with(objectSpec).build();
-        persistAlgorithm.makePersistent(valueAdapter, mockAdder);
-    }
-
-
-    @Test(expected=NotPersistableException.class)
-    public void makePersistent_failsIfObjectAlreadyPersistent() {
-        context.checking(new Expectations() {
-            {
-                allowing(objectSpec).isService();
-                will(returnValue(false));
-
-                allowing(objectSpec).isParentedOrFreeCollection();
-                will(returnValue(false));
-
-                allowing(objectSpec).persistability();
-                will(returnValue(Persistability.PROGRAM_PERSISTABLE));
-                
-                never(mockAdder);
-            }
-        });
-        
-        final PojoAdapter rootAdapter = PojoAdapterBuilder.create().with(Type.ROOT).with(Persistence.PERSISTENT).with(objectSpec).build();
-        persistAlgorithm.makePersistent(rootAdapter, mockAdder);
-    }
-    
-    
-    @Test(expected=NotPersistableException.class)
-    public void makePersistent_failsIfObjectMustBeTransient() {
-        context.checking(new Expectations() {
-            {
-                allowing(objectSpec).isService();
-                will(returnValue(false));
-
-                allowing(objectSpec).isParentedOrFreeCollection();
-                will(returnValue(false));
-
-                allowing(objectSpec).persistability();
-                will(returnValue(Persistability.TRANSIENT));
-                
-                never(mockAdder);
-            }
-        });
-        
-        final PojoAdapter rootAdapter = PojoAdapterBuilder.create().with(Type.ROOT).with(Persistence.TRANSIENT).with(objectSpec).build();
-        persistAlgorithm.makePersistent(rootAdapter, mockAdder);
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/6f5b86b0/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
index 68c5ec5..e496be2 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
@@ -25,18 +25,20 @@ import com.google.common.base.Splitter;
 
 import org.apache.isis.applib.profiles.Localization;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 
 public class PojoAdapterBuilder {
 
+    private PersistenceSession persistenceSession;
+
     private PojoAdapterBuilder(){
     }
     
@@ -47,8 +49,6 @@ public class PojoAdapterBuilder {
     
     private SpecificationLoader specificationLoader;
     
-    private AdapterManager objectAdapterLookup;
-    
     private ObjectSpecId objectSpecId = ObjectSpecId.of("CUS");
     private String identifier = "1";
     // only used if type is AGGREGATED
@@ -166,11 +166,11 @@ public class PojoAdapterBuilder {
         return this;
     }
 
-    public PojoAdapterBuilder with(AdapterManager objectAdapterLookup) {
-        this.objectAdapterLookup = objectAdapterLookup;
+    public PojoAdapterBuilder with(PersistenceSession persistenceSession) {
+        this.persistenceSession = persistenceSession;
         return this;
     }
-    
+
     public PojoAdapterBuilder with(SpecificationLoader specificationLoader) {
         this.specificationLoader = specificationLoader;
         return this;


[13/50] isis git commit: ISIS-1194: deleting ObjectInstantiator interface, no longer used.

Posted by da...@apache.org.
ISIS-1194: deleting ObjectInstantiator interface, no longer used.


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

Branch: refs/heads/master
Commit: 2887446d260beb7875c08167bb1ba073f02fc40e
Parents: 96abb17
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 14:37:40 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 14:37:40 2015 +0100

----------------------------------------------------------------------
 .../runtimecontext/RuntimeContext.java          |  3 --
 .../runtimecontext/RuntimeContextAbstract.java  |  1 -
 .../noruntime/RuntimeContextNoRuntime.java      | 16 ----------
 .../core/metamodel/spec/ObjectInstantiator.java | 32 --------------------
 .../spec/ObjectInstantiatorAbstract.java        | 29 ------------------
 .../metamodel/spec/ObjectInstantiatorAware.java | 26 ----------------
 .../spec/ObjectSpecificationDependencies.java   |  7 -----
 .../specloader/ObjectReflectorDefault.java      |  4 +--
 .../specimpl/ObjectSpecificationAbstract.java   |  7 -----
 .../metamodel/app/IsisMetaModelTest_init.java   |  9 ++----
 .../internal/RuntimeContextFromSession.java     | 16 ----------
 11 files changed, 4 insertions(+), 146 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/2887446d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContext.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContext.java
index 77593a7..223b42e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContext.java
@@ -29,7 +29,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiator;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
 
@@ -57,8 +56,6 @@ public interface RuntimeContext extends Injectable, ApplicationScopedComponent {
 
     public AdapterManager getAdapterManager();
 
-    public ObjectInstantiator getObjectInstantiator();
-
     public SpecificationLoader getSpecificationLoader();
 
     public ServicesInjector getServicesInjector();

http://git-wip-us.apache.org/repos/asf/isis/blob/2887446d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
index 23256ad..a14195b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
@@ -68,7 +68,6 @@ public abstract class RuntimeContextAbstract implements RuntimeContext, Specific
         getServicesInjector().injectInto(candidate);
         getDomainObjectServices().injectInto(candidate);
         getLocalizationProvider().injectInto(candidate);
-        getObjectInstantiator().injectInto(candidate);
         getObjectPersistor().injectInto(candidate);
         getQuerySubmitter().injectInto(candidate);
         getSpecificationLoader().injectInto(candidate);

http://git-wip-us.apache.org/repos/asf/isis/blob/2887446d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
index 08c4f60..d750448 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
@@ -46,9 +46,6 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProviderAbstract;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAbstract;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiator;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiatorAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.transactions.TransactionState;
@@ -61,7 +58,6 @@ public class RuntimeContextNoRuntime extends RuntimeContextAbstract {
     private final ServicesInjector servicesInjector;
     private final AuthenticationSessionProviderAbstract authenticationSessionProvider;
     private final AdapterManager adapterManager;
-    private final ObjectInstantiatorAbstract objectInstantiator;
     private final ObjectPersistorAbstract objectPersistor;
     private final DomainObjectServicesAbstract domainObjectServices;
     private final LocalizationProviderAbstract localizationProvider;
@@ -165,13 +161,6 @@ public class RuntimeContextNoRuntime extends RuntimeContextAbstract {
             }
 
         };
-        objectInstantiator = new ObjectInstantiatorAbstract() {
-
-            @Override
-            public Object instantiate(final Class<?> cls) throws ObjectInstantiationException {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-        };
         objectPersistor = new ObjectPersistorAbstract() {
 
             @Override
@@ -333,11 +322,6 @@ public class RuntimeContextNoRuntime extends RuntimeContextAbstract {
     }
 
     @Override
-    public ObjectInstantiator getObjectInstantiator() {
-        return objectInstantiator;
-    }
-
-    @Override
     public ObjectPersistor getObjectPersistor() {
         return objectPersistor;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/2887446d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiator.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiator.java
deleted file mode 100644
index 693e478..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiator.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.spec;
-
-import org.apache.isis.core.commons.components.Injectable;
-import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-
-public interface ObjectInstantiator extends Injectable {
-
-    /**
-     * Provided by the <tt>ObjectFactory</tt> when used by framework.
-     * 
-     * <p>
-     * Called by {@link ObjectSpecificationDefault}.
-     */
-    Object instantiate(Class<?> cls) throws ObjectInstantiationException;
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/2887446d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiatorAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiatorAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiatorAbstract.java
deleted file mode 100644
index 979c8d7..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiatorAbstract.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.metamodel.spec;
-
-public abstract class ObjectInstantiatorAbstract implements ObjectInstantiator {
-
-    @Override
-    public void injectInto(final Object candidate) {
-        if (ObjectInstantiatorAware.class.isAssignableFrom(candidate.getClass())) {
-            final ObjectInstantiatorAware cast = ObjectInstantiatorAware.class.cast(candidate);
-            cast.setObjectInstantiator(this);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/2887446d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiatorAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiatorAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiatorAware.java
deleted file mode 100644
index 798cce7..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectInstantiatorAware.java
+++ /dev/null
@@ -1,26 +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.spec;
-
-public interface ObjectInstantiatorAware {
-
-    public void setObjectInstantiator(final ObjectInstantiator objectInstantiator);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/2887446d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
index d9503fd..40a140f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
@@ -25,7 +25,6 @@ public class ObjectSpecificationDependencies {
 
     private final DeploymentCategory deploymentCategory;
     private final ServicesInjector servicesInjector;
-    private final ObjectInstantiator objectInstantiator;
     private final SpecificationLoader specificationLoader;
     private final FacetProcessor facetProcessor;
     private final AdapterManager adapterManager;
@@ -33,13 +32,11 @@ public class ObjectSpecificationDependencies {
     public ObjectSpecificationDependencies(
             final DeploymentCategory deploymentCategory,
             final ServicesInjector servicesInjector,
-            final ObjectInstantiator objectInstantiator,
             final SpecificationLoader specificationLoader,
             final FacetProcessor facetProcessor,
             final AdapterManager adapterManager) {
         this.deploymentCategory = deploymentCategory;
         this.servicesInjector = servicesInjector;
-        this.objectInstantiator = objectInstantiator;
         this.specificationLoader = specificationLoader;
         this.facetProcessor = facetProcessor;
         this.adapterManager = adapterManager;
@@ -53,10 +50,6 @@ public class ObjectSpecificationDependencies {
         return servicesInjector;
     }
 
-    public ObjectInstantiator getObjectInstantiator() {
-        return objectInstantiator;
-    }
-
     public SpecificationLoader getSpecificationLoader() {
         return specificationLoader;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/2887446d/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 760837c..bc56df1 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
@@ -58,7 +58,6 @@ import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoR
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
 import org.apache.isis.core.metamodel.spec.InjectorMethodEvaluator;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiator;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationDependencies;
@@ -449,12 +448,11 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
 
         final SpecificationLoader specificationLookup = getRuntimeContext().getSpecificationLoader();
         final ServicesInjector servicesInjector = getRuntimeContext().getServicesInjector();
-        final ObjectInstantiator objectInstantiator = getRuntimeContext().getObjectInstantiator();
         final AdapterManager adapterManager = getRuntimeContext().getAdapterManager();
 
         final ObjectSpecificationDependencies specContext =
                 new ObjectSpecificationDependencies(
-                        getDeploymentCategory(), servicesInjector, objectInstantiator, specificationLookup,
+                        getDeploymentCategory(), servicesInjector, specificationLookup,
                         facetProcessor, adapterManager);
 
         final ObjectMemberDependencies objectMemberDependencies = new ObjectMemberDependencies(

http://git-wip-us.apache.org/repos/asf/isis/blob/2887446d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 24f4c68..c980252 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -82,7 +82,6 @@ import org.apache.isis.core.metamodel.layout.DeweyOrderSet;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.Instance;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiator;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationDependencies;
@@ -123,7 +122,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
     private final DeploymentCategory deploymentCategory;
     private final ServicesInjector servicesInjector;
-    private final ObjectInstantiator objectInstantiator;
     private final SpecificationLoader specificationLoader;
     private final FacetProcessor facetProcessor;
     private final AdapterManager adapterManager;
@@ -193,7 +191,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
         this.deploymentCategory = objectSpecificationDependencies.getDeploymentCategory();
         this.servicesInjector = objectSpecificationDependencies.getServicesInjector();
-        this.objectInstantiator = objectSpecificationDependencies.getObjectInstantiator();
         this.specificationLoader = objectSpecificationDependencies.getSpecificationLoader();
         this.facetProcessor = objectSpecificationDependencies.getFacetProcessor();
         this.adapterManager = objectSpecificationDependencies.getAdapterManager();
@@ -1174,10 +1171,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         return servicesInjector;
     }
 
-    protected ObjectInstantiator getObjectInstantiator() {
-        return objectInstantiator;
-    }
-
     protected SpecificationLoader getSpecificationLoader() {
         return specificationLoader;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/2887446d/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 7abd870..87baaa5 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
@@ -20,7 +20,9 @@
 package org.apache.isis.core.metamodel.app;
 
 import java.util.TreeSet;
+
 import com.google.common.collect.Lists;
+
 import org.jmock.Expectations;
 import org.jmock.Sequence;
 import org.jmock.auto.Mock;
@@ -28,6 +30,7 @@ import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
+
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
@@ -38,7 +41,6 @@ import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiator;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.IsisActions;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -58,8 +60,6 @@ public class IsisMetaModelTest_init {
     @Mock
     private SpecificationLoader mockSpecificationLoader;
     @Mock
-    private ObjectInstantiator mockObjectInstantiator;
-    @Mock
     private AdapterManager mockAdapterManager;
     @Mock
     private QuerySubmitter mockQuerySubmitter;
@@ -100,9 +100,6 @@ public class IsisMetaModelTest_init {
                 allowing(mockRuntimeContext).getServicesInjector();
                 will(returnValue(mockDependencyInjector));
 
-                allowing(mockRuntimeContext).getObjectInstantiator();
-                will(returnValue(mockObjectInstantiator));
-
                 allowing(mockRuntimeContext).getDeploymentCategoryProvider();
                 will(returnValue(new DeploymentCategoryProviderAbstract() {
                     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/2887446d/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
index bde63e7..c9e852b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
@@ -50,9 +50,6 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetU
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAbstract;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiator;
-import org.apache.isis.core.metamodel.spec.ObjectInstantiatorAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.transactions.TransactionState;
@@ -73,7 +70,6 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
 
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final AdapterManager adapterManager;
-    private final ObjectInstantiator objectInstantiator;
     private final ObjectPersistor objectPersistor;
     private final QuerySubmitter querySubmitter;
     private final DomainObjectServices domainObjectServices;
@@ -153,13 +149,6 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
 
 
         };
-        this.objectInstantiator = new ObjectInstantiatorAbstract() {
-
-            @Override
-            public Object instantiate(final Class<?> cls) throws ObjectInstantiationException {
-                return getPersistenceSession().getObjectFactory().instantiate(cls);
-            }
-        };
 
         this.objectPersistor = new ObjectPersistorAbstract() {
             @Override
@@ -315,11 +304,6 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
     }
 
     @Override
-    public ObjectInstantiator getObjectInstantiator() {
-        return objectInstantiator;
-    }
-
-    @Override
     public DomainObjectServices getDomainObjectServices() {
         return domainObjectServices;
     }


[07/50] isis git commit: ISIS-1194: inlined getters for injected components.

Posted by da...@apache.org.
ISIS-1194: inlined getters for injected components.


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

Branch: refs/heads/master
Commit: dbd6b4995d218186f111d12feddd6c591ac92d22
Parents: 5813e47
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 11:23:53 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 11:23:53 2015 +0100

----------------------------------------------------------------------
 .../adaptermanager/AdapterManagerDefault.java   | 69 +++++---------------
 1 file changed, 17 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/dbd6b499/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 6f1460b..756db86 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
@@ -97,6 +97,7 @@ public class AdapterManagerDefault implements AdapterManager,
     private final AuthenticationSession authenticationSession;
     private final ServicesInjector servicesInjector;
     private final IsisConfiguration configuration;
+    private boolean concurrencyCheckingGloballyEnabled;
 
     // //////////////////////////////////////////////////////////////////
     // constructor
@@ -123,6 +124,10 @@ public class AdapterManagerDefault implements AdapterManager,
         this.authenticationSession = authenticationSession;
         this.servicesInjector = servicesInjector;
         this.configuration = configuration;
+
+        final boolean concurrencyCheckingGloballyDisabled =
+                configuration.getBoolean("isis.persistor.disableConcurrencyChecking", false);
+        this.concurrencyCheckingGloballyEnabled = !concurrencyCheckingGloballyDisabled;
     }
     //endregion
 
@@ -148,9 +153,6 @@ public class AdapterManagerDefault implements AdapterManager,
     }
     //endregion
 
-
-
-
     //region > getAdapterFor
     @Override
     public ObjectAdapter getAdapterFor(final Object pojo) {
@@ -198,13 +200,13 @@ public class AdapterManagerDefault implements AdapterManager,
         }
         
         // pojo may have been lazily loaded by object store, but we haven't yet seen it
-        final ObjectAdapter lazilyLoadedAdapter = getPersistenceSession().lazilyLoaded(pojo);
+        final ObjectAdapter lazilyLoadedAdapter = persistenceSession.lazilyLoaded(pojo);
         if(lazilyLoadedAdapter != null) {
             return lazilyLoadedAdapter;
         }
 
         // need to create (and possibly map) the adapter.
-        final ObjectSpecification objSpec = getSpecificationLoader().loadSpecification(pojo.getClass());
+        final ObjectSpecification objSpec = specificationLoader.loadSpecification(pojo.getClass());
         
         // we create value facets as standalone (so not added to maps)
         if (objSpec.containsFacet(ValueFacet.class)) {
@@ -319,7 +321,7 @@ public class AdapterManagerDefault implements AdapterManager,
         Oid adapterOid = adapter.getOid();
         if(adapterOid instanceof RootOid) {
             final RootOid recreatedOid = (RootOid) adapterOid;
-            final RootOid originalOid = (RootOid) rootOid;
+            final RootOid originalOid = rootOid;
             
             try {
                 if(concurrencyChecking.isChecking()) {
@@ -330,10 +332,10 @@ public class AdapterManagerDefault implements AdapterManager,
                     if(thisVersion != null && 
                        otherVersion != null && 
                        thisVersion.different(otherVersion)) {
-                        
-                        if(isConcurrencyCheckingGloballyEnabled() && AdapterManager.ConcurrencyChecking.isCurrentlyEnabled()) {
+
+                        if(concurrencyCheckingGloballyEnabled && AdapterManager.ConcurrencyChecking.isCurrentlyEnabled()) {
                             LOG.info("concurrency conflict detected on " + recreatedOid + " (" + otherVersion + ")");
-                            final String currentUser = getAuthenticationSession().getUserName();
+                            final String currentUser = authenticationSession.getUserName();
                             throw new ConcurrencyException(currentUser, recreatedOid, thisVersion, otherVersion);
                         } else {
                             LOG.warn("concurrency conflict detected but suppressed, on " + recreatedOid + " (" + otherVersion + ")");
@@ -443,12 +445,6 @@ public class AdapterManagerDefault implements AdapterManager,
     }
     //endregion
 
-    private boolean isConcurrencyCheckingGloballyEnabled() {
-        final boolean disabled = getConfiguration().getBoolean("isis.persistor.disableConcurrencyChecking", false);
-        return !disabled;
-    }
-
-
     //region > removeAdapter
     /**
      * Removes the specified object from both the identity-adapter map, and the
@@ -547,12 +543,13 @@ public class AdapterManagerDefault implements AdapterManager,
             persistedRootOid = hintRootOid;
         } else {
             // normal flow - delegate to OidGenerator to obtain a persistent root oid
-            persistedRootOid = getOidGenerator().createPersistentOrViewModelOid(adapter.getObject());
+            persistedRootOid = oidGenerator.createPersistentOrViewModelOid(adapter.getObject());
         }
         
         // associate root adapter with the new Oid, and remap
         if (LOG.isDebugEnabled()) {
-            LOG.debug("replacing Oid for root adapter and re-adding into maps; oid is now: " + persistedRootOid.enString(getOidMarshaller()) + " (was: " + transientRootOid.enString(getOidMarshaller()) + ")");
+            LOG.debug("replacing Oid for root adapter and re-adding into maps; oid is now: " + persistedRootOid.enString(
+                    oidMarshaller) + " (was: " + transientRootOid.enString(oidMarshaller) + ")");
         }
         adapter.replaceOid(persistedRootOid);
         oidAdapterMap.add(persistedRootOid, adapter);
@@ -604,7 +601,7 @@ public class AdapterManagerDefault implements AdapterManager,
      * object.
      */
     private ObjectAdapter createTransientOrViewModelRootAdapter(final Object pojo) {
-        final RootOid rootOid = getOidGenerator().createTransientOrViewModelOid(pojo);
+        final RootOid rootOid = oidGenerator.createTransientOrViewModelOid(pojo);
         return createRootAdapter(pojo, rootOid);
     }
 
@@ -676,7 +673,7 @@ public class AdapterManagerDefault implements AdapterManager,
             if (LOG.isDebugEnabled()) {
                 LOG.debug("not mapping value adapter");
             }
-            getServicesInjector().injectServicesInto(pojo);
+            servicesInjector.injectServicesInto(pojo);
             return adapter;
         }
 
@@ -690,7 +687,7 @@ public class AdapterManagerDefault implements AdapterManager,
         oidAdapterMap.add(adapter.getOid(), adapter);
 
         // must inject after mapping, otherwise infinite loop
-        getServicesInjector().injectServicesInto(pojo);
+        servicesInjector.injectServicesInto(pojo);
 
         return adapter;
     }
@@ -784,38 +781,6 @@ public class AdapterManagerDefault implements AdapterManager,
     }
     //endregion
 
-    //region > Dependencies (from constructor)
-    // only used for debugging
-    protected OidMarshaller getOidMarshaller() {
-		return oidMarshaller;
-	}
-
-    public OidGenerator getOidGenerator() {
-        return oidGenerator;
-    }
-
-    protected SpecificationLoaderSpi getSpecificationLoader() {
-        return specificationLoader;
-    }
-
-    protected PersistenceSession getPersistenceSession() {
-        return persistenceSession;
-    }
-
-    protected ServicesInjector getServicesInjector() {
-        return servicesInjector;
-    }
-
-    protected AuthenticationSession getAuthenticationSession() {
-        return authenticationSession;
-    }
-    
-    protected IsisConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    //endregion
-
     //region > dependencies (from context)
     protected Localization getLocalization() {
         return IsisContext.getLocalization();


[17/50] isis git commit: ISIS-1194: factor out createInstance (overloads) from createTransientInstance and createViewModelInstance in PersistenceSession.

Posted by da...@apache.org.
ISIS-1194: factor out createInstance (overloads) from createTransientInstance and createViewModelInstance in PersistenceSession.


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

Branch: refs/heads/master
Commit: d85822fe9cabed3b682251323d9c6e411ab0582a
Parents: d108c80
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:02:56 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:02:56 2015 +0100

----------------------------------------------------------------------
 .../runtime/system/persistence/PersistenceSession.java | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/d85822fe/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 4250d00..2a9f0ce 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
@@ -387,6 +387,10 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
      * {@link org.apache.isis.applib.DomainObjectContainer}.
      */
     public ObjectAdapter createTransientInstance(final ObjectSpecification objectSpec) {
+        return createInstance(objectSpec);
+    }
+
+    private ObjectAdapter createInstance(final ObjectSpecification objectSpec) {
         if (LOG.isDebugEnabled()) {
             LOG.debug("creating transient instance of " + objectSpec);
         }
@@ -395,20 +399,23 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         return initializePropertiesAndDoCallback(adapter);
     }
 
-
-
     public ObjectAdapter createViewModelInstance(final ObjectSpecification objectSpec, final String memento) {
+        return createInstance(objectSpec, memento);
+    }
+
+    private ObjectAdapter createInstance(final ObjectSpecification objectSpec, final String memento) {
         if (LOG.isDebugEnabled()) {
             LOG.debug("creating view model instance of " + objectSpec);
         }
         final Object pojo = instantiateAndInjectServices(objectSpec);
+
         final ViewModelFacet facet = objectSpec.getFacet(ViewModelFacet.class);
         facet.initialize(pojo, memento);
+
         final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
         return initializePropertiesAndDoCallback(adapter);
     }
 
-
     public Object instantiateAndInjectServices(final ObjectSpecification objectSpec) {
 
         final Class<?> correspondingClass = objectSpec.getCorrespondingClass();


[25/50] isis git commit: ISIS-1194: DataNucleusApplicationComponents creates new IsisLifecycleListener for each PersistenceManager

Posted by da...@apache.org.
ISIS-1194: DataNucleusApplicationComponents creates new IsisLifecycleListener for each PersistenceManager

... safe to do because IsisLifecycleListener has no state other than the FrameworkSynchronizer.


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

Branch: refs/heads/master
Commit: cad8ca5cbf8c6b06e0f686dc72b1079b2fda9aeb
Parents: 51fc96f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:54:09 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:54:09 2015 +0100

----------------------------------------------------------------------
 .../system/persistence/DataNucleusApplicationComponents.java  | 7 +++----
 .../runtime/system/persistence/IsisLifecycleListener2.java    | 5 ++++-
 2 files changed, 7 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/cad8ca5c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
index 8ade4f4..e2616b8 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
@@ -85,7 +85,6 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
     private final IsisConfiguration jdoObjectstoreConfig;
     private final Map<String, String> datanucleusProps;
     
-    private final IsisLifecycleListener lifecycleListener;
     private final FrameworkSynchronizer synchronizer;
     
     private Map<String, JdoNamedQuery> namedQueryByName;
@@ -101,7 +100,6 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
         this.jdoObjectstoreConfig = jdoObjectstoreConfig;
 
         this.synchronizer = new FrameworkSynchronizer();
-        this.lifecycleListener = new IsisLifecycleListener(synchronizer);
 
         initialize();
         
@@ -276,8 +274,9 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
     
     public PersistenceManager createPersistenceManager() {
         PersistenceManager persistenceManager = persistenceManagerFactory.getPersistenceManager();
-        
-        persistenceManager.addInstanceLifecycleListener(lifecycleListener, (Class[])null);
+
+        final IsisLifecycleListener isisLifecycleListener = new IsisLifecycleListener(synchronizer);
+        persistenceManager.addInstanceLifecycleListener(isisLifecycleListener, (Class[])null);
         return persistenceManager;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/cad8ca5c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
index 47e8383..5477e90 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
@@ -40,7 +40,10 @@ import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer.CalledFrom;
 import org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener;
 
-public class IsisLifecycleListener2 implements AttachLifecycleListener, ClearLifecycleListener, CreateLifecycleListener, DeleteLifecycleListener, DetachLifecycleListener, DirtyLifecycleListener, LoadLifecycleListener, StoreLifecycleListener, SuspendableListener {
+public class IsisLifecycleListener2
+        implements AttachLifecycleListener, ClearLifecycleListener, CreateLifecycleListener, DeleteLifecycleListener,
+        DetachLifecycleListener, DirtyLifecycleListener, LoadLifecycleListener, StoreLifecycleListener,
+        SuspendableListener {
 
     private final FrameworkSynchronizer synchronizer;
 


[30/50] isis git commit: ISIS-1194: law of demeter for FrameworkSynchronizer and (JDO) PersistenceManager - call PersistenceSession instead.

Posted by da...@apache.org.
ISIS-1194: law of demeter for FrameworkSynchronizer and (JDO) PersistenceManager - call PersistenceSession instead.


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

Branch: refs/heads/master
Commit: b4f35e50f9ac44862bdf142afc8bfdd9cd50d3f8
Parents: fa8d2de
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:11:13 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:11:13 2015 +0100

----------------------------------------------------------------------
 .../core/runtime/system/persistence/FrameworkSynchronizer.java | 6 +-----
 .../core/runtime/system/persistence/PersistenceSession.java    | 6 ++++++
 2 files changed, 7 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/b4f35e50/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 1c28b71..d7559ee 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -273,7 +273,7 @@ public class FrameworkSynchronizer {
         return withLogging(pojo, new Callable<ObjectAdapter>() {
             @Override
             public ObjectAdapter call() {
-                if(getJdoPersistenceManager().getObjectId(pojo) == null) {
+                if(getPersistenceSession().getJdoObjectId(pojo) == null) {
                     return null;
                 }
                 final RootOid oid = getPersistenceSession().getOidGenerator().createPersistentOrViewModelOid(pojo);
@@ -403,10 +403,6 @@ public class FrameworkSynchronizer {
         return getPersistenceSession().getAdapterManager();
     }
 
-    protected PersistenceManager getJdoPersistenceManager() {
-        return getPersistenceSession().getPersistenceManager();
-    }
-
     protected IsisTransaction getCurrentTransaction() {
         return persistenceSession.getTransactionManager().getTransaction();
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/b4f35e50/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 22a54a3..e91f201 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
@@ -1146,6 +1146,12 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     }
     //endregion
 
+    //region > jdoPersistenceManager delegate methods
+
+    public Object getJdoObjectId(Object pojo) {
+        return persistenceManager.getObjectId(pojo);
+    }
+    // endregion
 
 }
 


[41/50] isis git commit: ISIS-1194: inlining preDeleteProcessingFor from FrameworkSynchronizer to PersistenceSession

Posted by da...@apache.org.
ISIS-1194: inlining preDeleteProcessingFor from FrameworkSynchronizer to PersistenceSession


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

Branch: refs/heads/master
Commit: 819dc9429e98961c124265fe5a17c8a91819b279
Parents: 5d69af1
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:50:30 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:50:30 2015 +0100

----------------------------------------------------------------------
 .../system/persistence/FrameworkSynchronizer.java    | 14 --------------
 .../system/persistence/PersistenceSession.java       | 15 ++++++++++++++-
 2 files changed, 14 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/819dc942/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index b49a556..99d0888 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -177,20 +177,6 @@ public class FrameworkSynchronizer {
 
 
 
-    public void preDeleteProcessingFor(final Persistable pojo, final CalledFrom calledFrom) {
-        withLogging(pojo, new Runnable() {
-            @Override
-            public void run() {
-                ObjectAdapter adapter = persistenceSession.adapterFor(pojo);
-                
-                final IsisTransaction transaction = persistenceSession.getCurrentTransaction();
-                transaction.enlistDeleting(adapter);
-
-                CallbackFacet.Util.callCallback(adapter, RemovingCallbackFacet.class);
-            }
-        }, calledFrom);
-        
-    }
 
 
     // /////////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/819dc942/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 d408fb9..599dce0 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
@@ -59,6 +59,7 @@ import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
@@ -1236,9 +1237,21 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
 
     public void preDeleteProcessingFor(final Persistable pojo, final FrameworkSynchronizer.CalledFrom calledFrom) {
-        frameworkSynchronizer.preDeleteProcessingFor(pojo, calledFrom);
+        withLogging(pojo, new Runnable() {
+            @Override
+            public void run() {
+                ObjectAdapter adapter = adapterFor(pojo);
+
+                final IsisTransaction transaction = getCurrentTransaction();
+                transaction.enlistDeleting(adapter);
+
+                CallbackFacet.Util.callCallback(adapter, RemovingCallbackFacet.class);
+            }
+        }, calledFrom);
+
     }
 
+
     public void postLoadProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
         frameworkSynchronizer.postLoadProcessingFor(pojo, calledFrom);
     }


[28/50] isis git commit: ISIS-1194: passing dependencies through to FrameworkSynchronizer, so that it no longer needs to use IsisContext.

Posted by da...@apache.org.
ISIS-1194: passing dependencies through to FrameworkSynchronizer, so that it no longer needs to use IsisContext.


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

Branch: refs/heads/master
Commit: 06d685c466d1e9053e304d22432a0af513bccd7b
Parents: ecd2b75
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:05:41 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:05:41 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java      | 41 +++++++++++++-------
 .../system/persistence/OidGenerator.java        |  6 +--
 .../system/persistence/PersistenceSession.java  |  2 +-
 3 files changed, 30 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/06d685c4/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 8c1695d..65cfb68 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -44,17 +44,28 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallback
 import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
+import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
-import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
 
 public class FrameworkSynchronizer {
 
     private static final Logger LOG = LoggerFactory.getLogger(FrameworkSynchronizer.class);
 
-    public FrameworkSynchronizer() {
+    private final PersistenceSession persistenceSession;
+    private final AuthenticationSession authenticationSession;
+    private ServicesInjectorSpi servicesInjector;
+
+    public FrameworkSynchronizer(
+            final PersistenceSession persistenceSession,
+            final AuthenticationSession authenticationSession) {
+        this.persistenceSession = persistenceSession;
+        this.authenticationSession = authenticationSession;
+
+        this.servicesInjector = getPersistenceSession().getServicesInjector();
+
     }
-    
+
     /**
      * Categorises where called from.
      * 
@@ -84,7 +95,7 @@ public class FrameworkSynchronizer {
                 
                 // need to do eagerly, because (if a viewModel then) a
                 // viewModel's #viewModelMemento might need to use services 
-                getPersistenceSession().getServicesInjector().injectServicesInto(pojo);
+                servicesInjector.injectServicesInto(pojo);
                 
                 final Version datastoreVersion = getVersionIfAny(pc);
                 
@@ -381,28 +392,28 @@ public class FrameworkSynchronizer {
     // Dependencies (from context)
     // /////////////////////////////////////////////////////////
 
-    protected AdapterManagerDefault getAdapterManager() {
-        return getPersistenceSession().getAdapterManager();
-    }
-
-    protected OidGenerator getOidGenerator() {
-        return getPersistenceSession().getOidGenerator();
+    protected AuthenticationSession getAuthenticationSession() {
+        return authenticationSession;
     }
 
     protected PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
+        return persistenceSession;
     }
 
-    protected AuthenticationSession getAuthenticationSession() {
-        return IsisContext.getAuthenticationSession();
+    protected AdapterManagerDefault getAdapterManager() {
+        return getPersistenceSession().getAdapterManager();
     }
 
-    protected IsisTransaction getCurrentTransaction() {
-        return IsisContext.getCurrentTransaction();
+    protected OidGenerator getOidGenerator() {
+        return getPersistenceSession().getOidGenerator();
     }
 
     protected PersistenceManager getJdoPersistenceManager() {
         return getPersistenceSession().getPersistenceManager();
     }
 
+    protected IsisTransaction getCurrentTransaction() {
+        return persistenceSession.getTransactionManager().getTransaction();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/06d685c4/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
index 936b8f3..fb92048 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
@@ -81,10 +81,11 @@ public class OidGenerator implements DebuggableWithTitle {
 
     //endregion
 
-    //region > helpers
+    //region > helpers: newIdentifier
 
     enum Type {
-        TRANSIENT, PERSISTENT
+        TRANSIENT,
+        PERSISTENT
     }
 
     private RootOid newIdentifier(final Object pojo, final OidGenerator.Type type) {
@@ -140,7 +141,6 @@ public class OidGenerator implements DebuggableWithTitle {
     public void debugData(final DebugBuilder debug) {
     }
 
-
     @Override
     public String debugTitle() {
         return "OidGenerator";

http://git-wip-us.apache.org/repos/asf/isis/blob/06d685c4/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 2fe4b3b..e9ec445 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
@@ -177,7 +177,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         // sub-components
 
         this.oidMarshaller = new OidMarshaller();
-        this.frameworkSynchronizer = new FrameworkSynchronizer();
+        this.frameworkSynchronizer = new FrameworkSynchronizer(this, authenticationSession);
 
         this.objectFactory = new ObjectFactory(this, servicesInjector);
         this.oidGenerator = new OidGenerator(this, specificationLoader);


[03/50] isis git commit: ISIS-1194: pass dependencies to AdapterManager through constructor, rather than using IsisContext. Also remove PojoAdapterFactory, inlining its functionality into AdapterManagerDefault.

Posted by da...@apache.org.
ISIS-1194: pass dependencies to AdapterManager through constructor, rather than using IsisContext.  Also remove PojoAdapterFactory, inlining its functionality into AdapterManagerDefault.


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

Branch: refs/heads/master
Commit: 52eb2ab04c74505bf88de460156782ec0c7166ff
Parents: 74c75e4
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 10:59:16 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 11:01:37 2015 +0100

----------------------------------------------------------------------
 .../persistence/adapter/PojoAdapterFactory.java | 58 ---------------
 .../adaptermanager/AdapterManagerDefault.java   | 74 ++++++++++++++------
 .../runtime/system/context/IsisContext.java     |  2 +-
 .../system/persistence/PersistenceSession.java  | 16 +----
 .../persistence/PersistenceSessionTest.java     | 17 +++--
 5 files changed, 64 insertions(+), 103 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/52eb2ab0/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java
deleted file mode 100644
index 3e4fe7e..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java
+++ /dev/null
@@ -1,58 +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.adapter;
-
-import org.apache.isis.applib.profiles.Localization;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-
-public class PojoAdapterFactory  {
-
-    private final AdapterManagerDefault adapterManager;
-    private final SpecificationLoaderSpi specificationLoader;
-    private final AuthenticationSession authenticationSession;
-
-    public PojoAdapterFactory(
-            final AdapterManagerDefault adapterManager,
-            final SpecificationLoaderSpi specificationLoader,
-            final AuthenticationSession authenticationSession) {
-
-        this.adapterManager = adapterManager;
-        this.specificationLoader = specificationLoader;
-        this.authenticationSession = authenticationSession;
-    }
-
-    public PojoAdapter createAdapter(
-            final Object pojo,
-            final Oid oid) {
-        return new PojoAdapter(
-                pojo, oid,
-                authenticationSession, getLocalization(),
-                specificationLoader, adapterManager);
-    }
-
-    protected Localization getLocalization() {
-        return IsisContext.getLocalization();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/52eb2ab0/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 f772674..13f821f 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
@@ -24,6 +24,7 @@ import java.util.Iterator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.isis.applib.profiles.Localization;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.components.Resettable;
 import org.apache.isis.core.commons.components.SessionScopedComponent;
@@ -55,7 +56,7 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.persistence.PojoRecreationException;
-import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
+import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.OidGenerator;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -90,8 +91,14 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
     protected final PojoAdapterHashMap pojoAdapterMap = new PojoAdapterHashMap();
     protected final OidAdapterHashMap oidAdapterMap = new OidAdapterHashMap();
 
+    private final PersistenceSession persistenceSession;
+    private final SpecificationLoaderSpi specificationLoader;
     private final PojoRecreator pojoRecreator;
-
+    private final OidMarshaller oidMarshaller;
+    private final OidGenerator oidGenerator;
+    private final AuthenticationSession authenticationSession;
+    private final ServicesInjector servicesInjector;
+    private final IsisConfiguration configuration;
 
     // //////////////////////////////////////////////////////////////////
     // constructor
@@ -104,8 +111,23 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
      * 
      * @see <a href="http://www.datanucleus.org/servlet/forum/viewthread_thread,7238_lastpage,yes#35976">this thread</a>
      */
-    public AdapterManagerDefault(PojoRecreator pojoRecreator) {
+    public AdapterManagerDefault(
+            final PersistenceSession persistenceSession,
+            final SpecificationLoaderSpi specificationLoader,
+            final PojoRecreator pojoRecreator,
+            final OidMarshaller oidMarshaller,
+            final OidGenerator oidGenerator,
+            final AuthenticationSession authenticationSession,
+            final ServicesInjector servicesInjector,
+            final IsisConfiguration configuration) {
+        this.persistenceSession = persistenceSession;
+        this.specificationLoader = specificationLoader;
         this.pojoRecreator = pojoRecreator;
+        this.oidMarshaller = oidMarshaller;
+        this.oidGenerator = oidGenerator;
+        this.authenticationSession = authenticationSession;
+        this.servicesInjector = servicesInjector;
+        this.configuration = configuration;
     }
 
     // //////////////////////////////////////////////////////////////////
@@ -606,9 +628,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
      * referenced.
      */
     private ObjectAdapter createStandaloneAdapterAndSetResolveState(final Object pojo) {
-        final ObjectAdapter adapter = getObjectAdapterFactory().createAdapter(pojo, null
-        );
-        return adapter;
+        return createAdapter(pojo, null);
     }
 
     /**
@@ -620,7 +640,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
      */
     private ObjectAdapter createRootAdapter(final Object pojo, RootOid rootOid) {
         Ensure.ensureThatArg(rootOid, is(not(nullValue())));
-        final ObjectAdapter rootAdapter = getObjectAdapterFactory().createAdapter(pojo, rootOid
+        final ObjectAdapter rootAdapter = createAdapter(pojo, rootOid
         );
         return rootAdapter;
     }
@@ -628,11 +648,25 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
 
     private ObjectAdapter createCollectionAdapter(final Object pojo, ParentedCollectionOid collectionOid) {
         Ensure.ensureThatArg(collectionOid, is(not(nullValue())));
-        final ObjectAdapter collectionAdapter = getObjectAdapterFactory().createAdapter(pojo, collectionOid
+        final ObjectAdapter collectionAdapter = createAdapter(pojo, collectionOid
         );
         return collectionAdapter;
     }
 
+    private PojoAdapter createAdapter(
+            final Object pojo,
+            final Oid oid) {
+        return new PojoAdapter(
+                pojo, oid,
+                authenticationSession, getLocalization(),
+                specificationLoader, this);
+    }
+
+    protected Localization getLocalization() {
+        return IsisContext.getLocalization();
+    }
+
+
 
     // //////////////////////////////////////////////////////////////////////////
     // Helpers: map & unmap
@@ -771,43 +805,37 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         }
     }
 
-    
-    // /////////////////////////////////////////////////////////////////
-    // Dependencies (from context)
-    // /////////////////////////////////////////////////////////////////
 
+    //region > Dependencies (from constructor)
     protected OidMarshaller getOidMarshaller() {
-		return IsisContext.getOidMarshaller();
+		return oidMarshaller;
 	}
 
     public OidGenerator getOidGenerator() {
-        return IsisContext.getPersistenceSession().getOidGenerator();
+        return oidGenerator;
     }
 
     protected SpecificationLoaderSpi getSpecificationLoader() {
-        return IsisContext.getSpecificationLoader();
-    }
-
-    protected PojoAdapterFactory getObjectAdapterFactory() {
-        return getPersistenceSession().getObjectAdapterFactory();
+        return specificationLoader;
     }
 
     protected PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
+        return persistenceSession;
     }
 
     protected ServicesInjector getServicesInjector() {
-        return IsisContext.getPersistenceSession().getServicesInjector();
+        return servicesInjector;
     }
 
     protected AuthenticationSession getAuthenticationSession() {
-        return IsisContext.getAuthenticationSession();
+        return authenticationSession;
     }
     
     protected IsisConfiguration getConfiguration() {
-        return IsisContext.getConfiguration();
+        return configuration;
     }
 
+    //endregion
 
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/52eb2ab0/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index 287c282..7414c0d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -500,6 +500,7 @@ public abstract class IsisContext implements DebuggableWithTitle {
         return debugList.debug();
     }
 
+    // TODO: looks to be unused..
     public static DebuggableWithTitle[] debugSession() {
         final DebugList debugList = new DebugList("Apache Isis Session");
         debugList.add("Apache Isis session", getSession());
@@ -509,7 +510,6 @@ public abstract class IsisContext implements DebuggableWithTitle {
         debugList.add("Transaction Manager", getTransactionManager());
 
         debugList.add("Service injector", getPersistenceSession().getServicesInjector());
-        debugList.add("Adapter factory", getPersistenceSession().getObjectAdapterFactory());
         debugList.add("Object factory", getPersistenceSession().getObjectFactory());
         debugList.add("OID generator", getPersistenceSession().getOidGenerator());
         debugList.add("Adapter manager", getPersistenceSession().getAdapterManager());

http://git-wip-us.apache.org/repos/asf/isis/blob/52eb2ab0/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 e3bc7f4..4cbd135 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
@@ -63,7 +63,6 @@ import org.apache.isis.core.runtime.persistence.NotPersistableException;
 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.adapter.PojoAdapterFactory;
 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;
@@ -116,7 +115,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     private final ObjectFactory objectFactory;
 
     private final PersistenceSessionFactory persistenceSessionFactory;
-    private final PojoAdapterFactory objectAdapterFactory;
     private final OidGenerator oidGenerator;
     private final AdapterManagerDefault adapterManager;
 
@@ -178,9 +176,9 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         this.oidGenerator = new OidGenerator(this, specificationLoader);
 
         final PojoRecreator pojoRecreator = new PojoRecreator(this, specificationLoader);
-        this.adapterManager = new AdapterManagerDefault(pojoRecreator);
+        this.adapterManager = new AdapterManagerDefault(this, specificationLoader, pojoRecreator, oidMarshaller,
+                oidGenerator, authenticationSession, servicesInjector, configuration);
         this.persistAlgorithm = new PersistAlgorithm();
-        this.objectAdapterFactory = new PojoAdapterFactory(adapterManager, specificationLoader, authenticationSession);
 
         this.persistenceQueryFactory = new PersistenceQueryFactory(getSpecificationLoader(), adapterManager);
         this.transactionManager = new IsisTransactionManager(this, servicesInjector);
@@ -1020,16 +1018,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     }
 
     /**
-     * The configured {@link PojoAdapterFactory}.
-     * 
-     * <p>
-     * Injected in constructor.
-     */
-    public final PojoAdapterFactory getObjectAdapterFactory() {
-        return objectAdapterFactory;
-    }
-
-    /**
      * The configured {@link OidGenerator}.
      * 
      * <p>

http://git-wip-us.apache.org/repos/asf/isis/blob/52eb2ab0/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 1419013..daf9997 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
@@ -34,6 +34,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.MessageBroker;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.app.IsisMetaModel;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
@@ -42,7 +43,6 @@ import org.apache.isis.core.metamodel.services.container.DomainObjectContainerDe
 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.adapter.PojoAdapterFactory;
 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;
@@ -63,8 +63,7 @@ public class PersistenceSessionTest {
 
     private ServicesInjectorDefault servicesInjector;
     private AdapterManagerDefault adapterManager;
-    private PojoAdapterFactory adapterFactory;
-    
+
     
     private PersistenceSession persistenceSession;
     private IsisTransactionManager transactionManager;
@@ -102,7 +101,10 @@ public class PersistenceSessionTest {
     @Mock
     private MessageBroker mockMessageBroker;
     
-    
+    @Mock
+    private OidGenerator mockOidGenerator;
+
+
     private IsisMetaModel isisMetaModel;
 
 
@@ -146,8 +148,6 @@ public class PersistenceSessionTest {
         servicesInjector = new ServicesInjectorDefault(
                 Collections.<Object>singletonList(container),new InjectorMethodEvaluatorDefault());
 
-        adapterManager = new AdapterManagerDefault(new PojoRecreator(persistenceSession, mockSpecificationLoader));
-        adapterFactory = new PojoAdapterFactory(adapterManager, mockSpecificationLoader, mockAuthenticationSession);
         persistenceSession = new PersistenceSession(mockPersistenceSessionFactory, mockConfiguration,
                 mockSpecificationLoader, mockAuthenticationSession) {
             @Override
@@ -156,7 +156,10 @@ public class PersistenceSessionTest {
             }
             
         };
-        
+        adapterManager = new AdapterManagerDefault(persistenceSession, mockSpecificationLoader, new PojoRecreator(persistenceSession, mockSpecificationLoader),
+                new OidMarshaller(), mockOidGenerator, mockAuthenticationSession, servicesInjector,
+                mockConfiguration);
+
         context.checking(new Expectations(){{
             allowing(mockAuthenticationSession).getUserName();
             will(returnValue("sven"));


[06/50] isis git commit: ISIS-1194: AdapterManagerDefault no longer implement Iterator (was unused)

Posted by da...@apache.org.
ISIS-1194: AdapterManagerDefault no longer implement Iterator (was unused)


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

Branch: refs/heads/master
Commit: 5813e474dbc2929c041b1b4815cf613e936227e3
Parents: fce6ed7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 11:18:44 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 11:18:44 2015 +0100

----------------------------------------------------------------------
 .../adaptermanager/AdapterManagerDefault.java            | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/5813e474/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 b556fa0..6f1460b 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
@@ -19,8 +19,6 @@
 
 package org.apache.isis.core.runtime.persistence.adaptermanager;
 
-import java.util.Iterator;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -81,7 +79,7 @@ import static org.hamcrest.CoreMatchers.nullValue;
  * work with the POJOs even though it does not understand their types. Each POJO
  * maps to an {@link ObjectAdapter adapter} and these are reused.
  */
-public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAdapter>,
+public class AdapterManagerDefault implements AdapterManager,
         SessionScopedComponent,
         DebuggableWithTitle,
         Resettable {
@@ -150,13 +148,6 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
     }
     //endregion
 
-    //region > iterable
-
-    @Override
-    public Iterator<ObjectAdapter> iterator() {
-        return pojoAdapterMap.iterator();
-    }
-    //endregion
 
 
 


[16/50] isis git commit: ISIS-1194: deleting stale method from ObjectSpecificationStub (belongs to the change done commit before last)

Posted by da...@apache.org.
ISIS-1194: deleting stale method from ObjectSpecificationStub (belongs to the change done commit before last)


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

Branch: refs/heads/master
Commit: d108c801ede97c2441a9b2c2a5318d33fffe2aca
Parents: a05561e
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:00:14 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:00:14 2015 +0100

----------------------------------------------------------------------
 .../isis/core/metamodel/testspec/ObjectSpecificationStub.java   | 5 -----
 1 file changed, 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/d108c801/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 4f0eb63..8abeac7 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
@@ -323,11 +323,6 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
         return Identifier.classIdentifier(name);
     }
 
-    @Override
-    public ObjectAdapter initialize(final ObjectAdapter objectAdapter) {
-        return objectAdapter;
-    }
-
     // TODO: not used
     public void setupPersistable(final Persistability persistable) {
         this.persistable = persistable;


[47/50] isis git commit: ISIS-1194: removed FrameworkSynchronizer

Posted by da...@apache.org.
ISIS-1194: removed FrameworkSynchronizer


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

Branch: refs/heads/master
Commit: 775871c22f61003044376eb4ad66f64d87fcab50
Parents: 1c2c625
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 17:29:55 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 17:29:55 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java      | 63 --------------------
 .../persistence/IsisLifecycleListener2.java     | 13 ++--
 .../system/persistence/PersistenceSession.java  | 47 ++++++++++-----
 .../PersistenceQueryProcessorAbstract.java      |  3 +-
 4 files changed, 39 insertions(+), 87 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/775871c2/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
deleted file mode 100644
index 33027f4..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ /dev/null
@@ -1,63 +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.system.persistence;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-
-public class FrameworkSynchronizer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(FrameworkSynchronizer.class);
-
-    private final PersistenceSession persistenceSession;
-    private final AuthenticationSession authenticationSession;
-
-    public FrameworkSynchronizer(
-            final PersistenceSession persistenceSession,
-            final AuthenticationSession authenticationSession) {
-        this.persistenceSession = persistenceSession;
-        this.authenticationSession = authenticationSession;
-
-    }
-
-    /**
-     * Categorises where called from.
-     * 
-     * <p>
-     * Just used for logging.
-     */
-    public enum CalledFrom {
-        EVENT_LOAD,
-        EVENT_PRESTORE,
-        EVENT_POSTSTORE,
-        EVENT_PREDIRTY,
-        EVENT_POSTDIRTY,
-        OS_QUERY,
-        OS_RESOLVE,
-        OS_LAZILYLOADED,
-        EVENT_PREDELETE,
-        EVENT_POSTDELETE
-    }
-
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/775871c2/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
index 57defda..2cdde35 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
@@ -35,7 +35,6 @@ import com.google.common.collect.Maps;
 import org.datanucleus.enhancement.Persistable;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer.CalledFrom;
 import org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener;
 
 public class IsisLifecycleListener2
@@ -76,7 +75,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                persistenceSession.postLoadProcessingFor(pojo, CalledFrom.EVENT_LOAD);
+                persistenceSession.postLoadProcessingFor(pojo, PersistenceSession.CalledFrom.EVENT_LOAD);
             }});
     }
 
@@ -86,7 +85,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                persistenceSession.preStoreProcessingFor(pojo, CalledFrom.EVENT_PRESTORE);
+                persistenceSession.preStoreProcessingFor(pojo, PersistenceSession.CalledFrom.EVENT_PRESTORE);
 
             }});
     }
@@ -97,7 +96,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                persistenceSession.postStoreProcessingFor(pojo, CalledFrom.EVENT_POSTSTORE);
+                persistenceSession.postStoreProcessingFor(pojo, PersistenceSession.CalledFrom.EVENT_POSTSTORE);
             }});
     }
 
@@ -107,7 +106,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                persistenceSession.preDirtyProcessingFor(pojo, CalledFrom.EVENT_PREDIRTY);
+                persistenceSession.preDirtyProcessingFor(pojo, PersistenceSession.CalledFrom.EVENT_PREDIRTY);
             }});
     }
 
@@ -129,7 +128,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                persistenceSession.preDeleteProcessingFor(pojo, CalledFrom.EVENT_PREDELETE);
+                persistenceSession.preDeleteProcessingFor(pojo, PersistenceSession.CalledFrom.EVENT_PREDELETE);
             }
         });
     }
@@ -140,7 +139,7 @@ public class IsisLifecycleListener2
             @Override
             protected void doRun() {
                 final Persistable pojo = Utils.persistenceCapableFor(event);
-                persistenceSession.postDeleteProcessingFor(pojo, CalledFrom.EVENT_POSTDELETE);
+                persistenceSession.postDeleteProcessingFor(pojo, PersistenceSession.CalledFrom.EVENT_POSTDELETE);
             }
         });
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/775871c2/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 19096f3..53ecf94 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
@@ -146,7 +146,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     // not final only for testing purposes
     private IsisTransactionManager transactionManager;
 
-    private final FrameworkSynchronizer frameworkSynchronizer;
     private final OidMarshaller oidMarshaller;
 
     /**
@@ -186,7 +185,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         // sub-components
 
         this.oidMarshaller = new OidMarshaller();
-        this.frameworkSynchronizer = new FrameworkSynchronizer(this, authenticationSession);
 
         this.objectFactory = new ObjectFactory(this, servicesInjector);
         this.oidGenerator = new OidGenerator(this, specificationLoader);
@@ -767,10 +765,10 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
             return null;
         }
         final Persistable persistenceCapable = (Persistable) pojo;
-        return lazilyLoaded(persistenceCapable, FrameworkSynchronizer.CalledFrom.OS_LAZILYLOADED);
+        return lazilyLoaded(persistenceCapable, CalledFrom.OS_LAZILYLOADED);
     }
 
-    private ObjectAdapter lazilyLoaded(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
+    private ObjectAdapter lazilyLoaded(final Persistable pojo, CalledFrom calledFrom) {
         return withLogging(pojo, new Callable<ObjectAdapter>() {
             @Override
             public ObjectAdapter call() {
@@ -838,7 +836,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         // possibly redundant because also called in the post-load event
         // listener, but (with JPA impl) found it was required if we were ever to
         // get an eager left-outer-join as the result of a refresh (sounds possible).
-        postLoadProcessingFor((Persistable) domainObject, FrameworkSynchronizer.CalledFrom.OS_RESOLVE);
+        postLoadProcessingFor((Persistable) domainObject, CalledFrom.OS_RESOLVE);
     }
     //endregion
 
@@ -1226,7 +1224,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
     //region > FrameworkSynchronizer delegate methods
 
-    public void postDeleteProcessingFor(final Persistable pojo, final FrameworkSynchronizer.CalledFrom calledFrom) {
+    public void postDeleteProcessingFor(final Persistable pojo, final CalledFrom calledFrom) {
         withLogging(pojo, new Runnable() {
             @Override
             public void run() {
@@ -1247,7 +1245,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     }
 
 
-    public void preDeleteProcessingFor(final Persistable pojo, final FrameworkSynchronizer.CalledFrom calledFrom) {
+    public void preDeleteProcessingFor(final Persistable pojo, final CalledFrom calledFrom) {
         withLogging(pojo, new Runnable() {
             @Override
             public void run() {
@@ -1263,7 +1261,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     }
 
 
-    public void postLoadProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
+    public void postLoadProcessingFor(final Persistable pojo, CalledFrom calledFrom) {
 
         withLogging(pojo, new Runnable() {
             @Override
@@ -1336,7 +1334,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
      * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
      * to determine which callback to fire.
      */
-    public void preStoreProcessingFor(final Persistable pojo, final FrameworkSynchronizer.CalledFrom calledFrom) {
+    public void preStoreProcessingFor(final Persistable pojo, final CalledFrom calledFrom) {
         withLogging(pojo, new Runnable() {
             @Override
             public void run() {
@@ -1371,7 +1369,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
      * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
      * to determine which callback to fire.
      */
-    public void postStoreProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
+    public void postStoreProcessingFor(final Persistable pojo, CalledFrom calledFrom) {
         withLogging(pojo, new Runnable() {
             @Override
             public void run() {
@@ -1414,7 +1412,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     }
 
 
-    public void preDirtyProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
+    public void preDirtyProcessingFor(final Persistable pojo, CalledFrom calledFrom) {
         withLogging(pojo, new Runnable() {
             @Override
             public void run() {
@@ -1427,7 +1425,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
                     // it seems reasonable in this case to simply map into Isis here ("just-in-time"); presumably
                     // DN would not be calling this callback if the pojo was not persistent.
 
-                    adapter = lazilyLoaded(pojo, FrameworkSynchronizer.CalledFrom.EVENT_PREDIRTY);
+                    adapter = lazilyLoaded(pojo, CalledFrom.EVENT_PREDIRTY);
                     if (adapter == null) {
                         throw new RuntimeException(
                                 "DN could not find objectId for pojo (unexpected) and so could not map into Isis; pojo=["
@@ -1454,7 +1452,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         }, calledFrom);
     }
 
-    private <T> T withLogging(Persistable pojo, Callable<T> runnable, FrameworkSynchronizer.CalledFrom calledFrom) {
+    private <T> T withLogging(Persistable pojo, Callable<T> runnable, CalledFrom calledFrom) {
         if (LOG.isDebugEnabled()) {
             LOG.debug(logString(calledFrom, LoggingLocation.ENTRY, pojo));
         }
@@ -1469,7 +1467,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         }
     }
 
-    private void withLogging(Persistable pojo, final Runnable runnable, FrameworkSynchronizer.CalledFrom calledFrom) {
+    private void withLogging(Persistable pojo, final Runnable runnable, CalledFrom calledFrom) {
         withLogging(pojo, new Callable<Void>() {
 
             @Override
@@ -1481,7 +1479,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         }, calledFrom);
     }
 
-    private String logString(FrameworkSynchronizer.CalledFrom calledFrom, LoggingLocation location, Persistable pojo) {
+    private String logString(CalledFrom calledFrom, LoggingLocation location, Persistable pojo) {
         final ObjectAdapter adapter = getAdapterFor(pojo);
         // initial spaces just to look better in log when wrapped by IsisLifecycleListener...
         return calledFrom.name() + " " + location.prefix + " oid=" + (adapter !=null? adapter.getOid(): "(null)") + " ,pojo " + pojo;
@@ -1498,6 +1496,25 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         }
     }
 
+    /**
+     * Categorises where called from.
+     *
+     * <p>
+     * Just used for logging.
+     */
+    public enum CalledFrom {
+        EVENT_LOAD,
+        EVENT_PRESTORE,
+        EVENT_POSTSTORE,
+        EVENT_PREDIRTY,
+        EVENT_POSTDIRTY,
+        OS_QUERY,
+        OS_RESOLVE,
+        OS_LAZILYLOADED,
+        EVENT_PREDELETE,
+        EVENT_POSTDELETE
+    }
+
     //endregion
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/775871c2/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
index c144e11..9e6c01c 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
@@ -28,7 +28,6 @@ import org.datanucleus.enhancement.Persistable;
 
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer.CalledFrom;
 import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener;
@@ -60,7 +59,7 @@ public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQue
             ObjectAdapter adapter;
             if(pojo instanceof Persistable) {
                 // an entity
-                persistenceSession.postLoadProcessingFor((Persistable) pojo, CalledFrom.OS_QUERY);
+                persistenceSession.postLoadProcessingFor((Persistable) pojo, PersistenceSession.CalledFrom.OS_QUERY);
                 adapter = persistenceSession.getAdapterFor(pojo);
             } else {
                 // a value type


[33/50] isis git commit: ISIS-1194: law of demeter for FrameworkSynchronizer and TransactionManager - call PersistenceSession instead.

Posted by da...@apache.org.
ISIS-1194: law of demeter for FrameworkSynchronizer and TransactionManager - call PersistenceSession instead.


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

Branch: refs/heads/master
Commit: 17cd7bc2aa6eac117c0d38f771d22db832cc3c19
Parents: b208837
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:27:42 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:27:42 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java      | 29 ++++----------------
 .../system/persistence/PersistenceSession.java  |  9 +++++-
 2 files changed, 14 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/17cd7bc2/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index ed51221..5a4e321 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -115,9 +115,9 @@ public class FrameworkSynchronizer {
 
                         if(ConcurrencyChecking.isCurrentlyEnabled()) {
                             LOG.info("concurrency conflict detected on " + thisOid + " (" + otherVersion + ")");
-                            final String currentUser = getAuthenticationSession().getUserName();
+                            final String currentUser = authenticationSession.getUserName();
                             final ConcurrencyException abortCause = new ConcurrencyException(currentUser, thisOid, thisVersion, otherVersion);
-                            getCurrentTransaction().setAbortCause(abortCause);
+                            persistenceSession.getCurrentTransaction().setAbortCause(abortCause);
 
                         } else {
                             LOG.warn("concurrency conflict detected but suppressed, on " + thisOid + " (" + otherVersion + ")");
@@ -208,7 +208,7 @@ public class FrameworkSynchronizer {
 
                     CallbackFacet.Util.callCallback(adapter, PersistedCallbackFacet.class);
 
-                    final IsisTransaction transaction = getCurrentTransaction();
+                    final IsisTransaction transaction = persistenceSession.getCurrentTransaction();
                     transaction.enlistCreated(adapter);
                 } else {
                     // updating;
@@ -253,7 +253,7 @@ public class FrameworkSynchronizer {
 
                 CallbackFacet.Util.callCallback(adapter, UpdatingCallbackFacet.class);
 
-                final IsisTransaction transaction = getCurrentTransaction();
+                final IsisTransaction transaction = persistenceSession.getCurrentTransaction();
                 transaction.enlistUpdating(adapter);
 
                 ensureRootObject(pojo);
@@ -283,7 +283,7 @@ public class FrameworkSynchronizer {
             public void run() {
                 ObjectAdapter adapter = persistenceSession.adapterFor(pojo);
                 
-                final IsisTransaction transaction = getCurrentTransaction();
+                final IsisTransaction transaction = persistenceSession.getCurrentTransaction();
                 transaction.enlistDeleting(adapter);
 
                 CallbackFacet.Util.callCallback(adapter, RemovingCallbackFacet.class);
@@ -365,7 +365,7 @@ public class FrameworkSynchronizer {
     }
 
     private Version getVersionIfAny(final Persistable pojo) {
-        return Utils.getVersionIfAny(pojo, getAuthenticationSession());
+        return Utils.getVersionIfAny(pojo, authenticationSession);
     }
 
     @SuppressWarnings("unused")
@@ -378,21 +378,4 @@ public class FrameworkSynchronizer {
     }
 
 
-    
-    // /////////////////////////////////////////////////////////
-    // Dependencies (from context)
-    // /////////////////////////////////////////////////////////
-
-    protected AuthenticationSession getAuthenticationSession() {
-        return authenticationSession;
-    }
-
-    protected PersistenceSession getPersistenceSession() {
-        return persistenceSession;
-    }
-
-    protected IsisTransaction getCurrentTransaction() {
-        return persistenceSession.getTransactionManager().getTransaction();
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/17cd7bc2/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 0ba7341..9e7baf1 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
@@ -1184,7 +1184,14 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     }
 
     //endregion
-    
+
+    //region > TransactionManager delegate methods
+    protected IsisTransaction getCurrentTransaction() {
+        return transactionManager.getTransaction();
+    }
+    //endregion
+
+
 }
 
 


[35/50] isis git commit: ISIS-1194: law of demeter for IsisLifecycleListener2 and AdapterManager ... use PersistenceSession instead.

Posted by da...@apache.org.
ISIS-1194: law of demeter for IsisLifecycleListener2 and AdapterManager ... use PersistenceSession instead.


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

Branch: refs/heads/master
Commit: ada327f96ec4154f8cf0f831ff005dc020d8fb9f
Parents: 1864641
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:31:28 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:31:28 2015 +0100

----------------------------------------------------------------------
 .../system/persistence/IsisLifecycleListener2.java       | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/ada327f9/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
index ffb4bcb..ae96f87 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IsisLifecycleListener2.java
@@ -35,7 +35,6 @@ import com.google.common.collect.Maps;
 import org.datanucleus.enhancement.Persistable;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer.CalledFrom;
 import org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener;
 
@@ -271,17 +270,9 @@ public class IsisLifecycleListener2
 
     private String logString(Phase phase, LoggingLocation location, InstanceLifecycleEvent event) {
         final Persistable pojo = Utils.persistenceCapableFor(event);
-        final AdapterManager adapterManager = getAdapterManager();
-        final ObjectAdapter adapter = adapterManager.getAdapterFor(pojo);
+        final ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
         return phase + " " + location.prefix + " " + LifecycleEventType.lookup(event.getEventType()) + ": oid=" + (adapter !=null? adapter.getOid(): "(null)") + " ,pojo " + pojo;
     }
 
     
-    // /////////////////////////////////////////////////////////
-    // Dependencies (from context)
-    // /////////////////////////////////////////////////////////
-
-    protected AdapterManager getAdapterManager() {
-        return persistenceSession.getAdapterManager();
-    }
 }


[02/50] isis git commit: ISIS-1194: removing PojoRecreator#lazilyLoaded(...) ... AdapterManagerDefault can just call PersistenceSession#lazilyLoaded(..) instead.

Posted by da...@apache.org.
ISIS-1194: removing PojoRecreator#lazilyLoaded(...) ... AdapterManagerDefault can just call PersistenceSession#lazilyLoaded(..) instead.

also reordered some methods in PersistenceSession, fixed some comments/regions


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

Branch: refs/heads/master
Commit: 74c75e491d950f6c6e92a3d32b086aa158c1cbc5
Parents: 241b67f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 10:35:19 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 10:35:19 2015 +0100

----------------------------------------------------------------------
 .../adaptermanager/AdapterManagerDefault.java   |  2 +-
 .../adaptermanager/PojoRecreator.java           | 13 -------
 .../system/persistence/PersistenceSession.java  | 41 ++++++++++----------
 3 files changed, 22 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/74c75e49/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 ae2a3f5..f772674 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
@@ -198,7 +198,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         }
         
         // pojo may have been lazily loaded by object store, but we haven't yet seen it
-        final ObjectAdapter lazilyLoadedAdapter = pojoRecreator.lazilyLoaded(pojo);
+        final ObjectAdapter lazilyLoadedAdapter = getPersistenceSession().lazilyLoaded(pojo);
         if(lazilyLoadedAdapter != null) {
             return lazilyLoadedAdapter;
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/74c75e49/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
index e3f17ce..c23505c 100644
--- 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
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.core.runtime.persistence.adaptermanager;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 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;
@@ -66,18 +65,6 @@ public class PojoRecreator {
 
 
 
-    /**
-     * Return an adapter, if possible, for a pojo that was instantiated by the
-     * object store as a result of lazily loading, but which hasn't yet been seen
-     * by the Isis framework.
-     *
-     * <p>
-     * In the case of JDO object store, downcast to <tt>Persistence</tt>
-     * and 'look inside' its state.
-     */
-    public ObjectAdapter lazilyLoaded(Object pojo) {
-        return persistenceSession.lazilyLoaded(pojo);
-    }
 
     ///////////////////////////////
 

http://git-wip-us.apache.org/repos/asf/isis/blob/74c75e49/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 4d33b49..e3bc7f4 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
@@ -387,7 +387,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
             LOG.debug("creating transient instance of " + objectSpec);
         }
         final Object pojo = objectSpec.createObject();
-        final ObjectAdapter adapter = getAdapterManager().adapterFor(pojo);
+        final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
         return objectSpec.initialize(adapter);
     }
 
@@ -398,12 +398,12 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         final Object pojo = objectSpec.createObject();
         final ViewModelFacet facet = objectSpec.getFacet(ViewModelFacet.class);
         facet.initialize(pojo, memento);
-        final ObjectAdapter adapter = getAdapterManager().adapterFor(pojo);
+        final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
         return objectSpec.initialize(adapter);
     }
     //endregion
 
-    //region > findInstances, getInstances
+    //region > findInstancesInTransaction
 
     /**
      * Finds and returns instances that match the specified query.
@@ -420,9 +420,10 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
             LOG.debug("findInstances using (applib) Query: " + query);
         }
 
+        // TODO: unify PersistenceQuery and PersistenceQueryProcessor
         final PersistenceQuery persistenceQuery = createPersistenceQueryFor(query, cardinality);
         if (LOG.isDebugEnabled()) {
-            LOG.debug("findInstances using (core runtime) PersistenceQuery: " + persistenceQuery);
+            LOG.debug("maps to (core runtime) PersistenceQuery: " + persistenceQuery);
         }
 
         final PersistenceQueryProcessor<? extends PersistenceQuery> processor = lookupProcessorFor(persistenceQuery);
@@ -439,22 +440,11 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         return getAdapterManager().adapterFor(results);
     }
 
-    private PersistenceQueryProcessor<? extends PersistenceQuery> lookupProcessorFor(final PersistenceQuery persistenceQuery) {
-        final Class<? extends PersistenceQuery> persistenceQueryClass = persistenceQuery.getClass();
-        final PersistenceQueryProcessor<? extends PersistenceQuery> processor =
-                persistenceQueryProcessorByClass.get(persistenceQueryClass);
-        if (processor == null) {
-            throw new UnsupportedFindException(MessageFormat.format(
-                    "Unsupported PersistenceQuery class: {0}", persistenceQueryClass.getName()));
-        }
-        return processor;
-    }
-
     /**
      * Converts the {@link Query applib representation of a query} into the
      * {@link PersistenceQuery NOF-internal representation}.
      */
-    protected final PersistenceQuery createPersistenceQueryFor(
+    private final PersistenceQuery createPersistenceQueryFor(
             final Query<?> query,
             final QueryCardinality cardinality) {
 
@@ -467,13 +457,25 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         return persistenceQuery;
     }
 
-    //endregion
-
+    private PersistenceQueryProcessor<? extends PersistenceQuery> lookupProcessorFor(final PersistenceQuery persistenceQuery) {
+        final Class<? extends PersistenceQuery> persistenceQueryClass = persistenceQuery.getClass();
+        final PersistenceQueryProcessor<? extends PersistenceQuery> processor =
+                persistenceQueryProcessorByClass.get(persistenceQueryClass);
+        if (processor == null) {
+            throw new UnsupportedFindException(MessageFormat.format(
+                    "Unsupported PersistenceQuery class: {0}", persistenceQueryClass.getName()));
+        }
+        return processor;
+    }
     @SuppressWarnings("unchecked")
-    private <Q extends PersistenceQuery> List<ObjectAdapter> processPersistenceQuery(final PersistenceQueryProcessor<Q> persistenceQueryProcessor, final PersistenceQuery persistenceQuery) {
+    private <Q extends PersistenceQuery> List<ObjectAdapter> processPersistenceQuery(
+            final PersistenceQueryProcessor<Q> persistenceQueryProcessor,
+            final PersistenceQuery persistenceQuery) {
         return persistenceQueryProcessor.process((Q) persistenceQuery);
     }
 
+
+
     //endregion
 
     //region > Services
@@ -690,7 +692,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
     //endregion
 
-
     //region > lazilyLoaded
 
     public ObjectAdapter lazilyLoaded(Object pojo) {


[45/50] isis git commit: ISIS-1194: law of demeter for PersistenceQueryProcessor impls and JDO PersistenceManager ... moved to PersistenceSession

Posted by da...@apache.org.
ISIS-1194: law of demeter for PersistenceQueryProcessor impls and JDO PersistenceManager ... moved to PersistenceSession


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

Branch: refs/heads/master
Commit: 4616a3739db4e30a7cc9f746dae14e2cbfd18877
Parents: 75dc630
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 17:11:49 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 17:11:49 2015 +0100

----------------------------------------------------------------------
 .../system/persistence/PersistenceSession.java  | 20 ++++++++++++----
 .../persistence/IsisLifecycleListener.java      |  5 +---
 ...rsistenceQueryFindAllInstancesProcessor.java |  9 +++-----
 ...tenceQueryFindUsingApplibQueryProcessor.java | 15 +++++-------
 .../PersistenceQueryProcessorAbstract.java      | 24 ++------------------
 5 files changed, 27 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/4616a373/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 112bc3f..b093812 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
@@ -234,17 +234,15 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
         persistenceManager = applicationComponents.getPersistenceManagerFactory().getPersistenceManager();
 
-        final IsisLifecycleListener isisLifecycleListener = new IsisLifecycleListener(this, frameworkSynchronizer);
+        final IsisLifecycleListener2 isisLifecycleListener = new IsisLifecycleListener2(this);
         persistenceManager.addInstanceLifecycleListener(isisLifecycleListener, (Class[])null);
 
         persistenceQueryProcessorByClass.put(
                 PersistenceQueryFindAllInstances.class,
-                new PersistenceQueryFindAllInstancesProcessor(this,
-                        persistenceManager));
+                new PersistenceQueryFindAllInstancesProcessor(this));
         persistenceQueryProcessorByClass.put(
                 PersistenceQueryFindUsingApplibQueryDefault.class,
-                new PersistenceQueryFindUsingApplibQueryProcessor(this,
-                        persistenceManager));
+                new PersistenceQueryFindUsingApplibQueryProcessor(this));
 
         initServices();
 
@@ -1175,6 +1173,18 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     public Object getJdoObjectId(Object pojo) {
         return persistenceManager.getObjectId(pojo);
     }
+
+    public javax.jdo.Query newJdoQuery(Class<?> cls) {
+        return persistenceManager.newQuery(cls);
+    }
+
+    public javax.jdo.Query newJdoNamedQuery (Class<?> cls, String queryName) {
+        return persistenceManager.newNamedQuery(cls, queryName);
+    }
+
+    public javax.jdo.Query newJdoQuery (Class<?> cls, String filter) {
+        return persistenceManager.newQuery(cls, filter);
+    }
     // endregion
 
     //region > AdapterManager delegate methods

http://git-wip-us.apache.org/repos/asf/isis/blob/4616a373/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
index e25ecf5..3d71527 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
@@ -21,7 +21,6 @@ package org.apache.isis.objectstore.jdo.datanucleus.persistence;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer;
 import org.apache.isis.core.runtime.system.persistence.IsisLifecycleListener2;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 
@@ -33,9 +32,7 @@ public class IsisLifecycleListener extends IsisLifecycleListener2 {
 
     public static final Logger LOG = LoggerFactory.getLogger(IsisLifecycleListener.class);
 
-    public IsisLifecycleListener(
-            final PersistenceSession persistenceSession,
-            final FrameworkSynchronizer synchronizer) {
+    public IsisLifecycleListener(final PersistenceSession persistenceSession) {
         super(persistenceSession);
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/4616a373/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
index bf10feb..c9830e6 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
@@ -20,7 +20,6 @@ package org.apache.isis.objectstore.jdo.datanucleus.persistence.queries;
 
 import java.util.List;
 
-import javax.jdo.PersistenceManager;
 import javax.jdo.Query;
 
 import org.slf4j.Logger;
@@ -35,10 +34,8 @@ public class PersistenceQueryFindAllInstancesProcessor extends PersistenceQueryP
 
     private static final Logger LOG = LoggerFactory.getLogger(PersistenceQueryFindAllInstancesProcessor.class);
 
-    public PersistenceQueryFindAllInstancesProcessor(
-            final PersistenceSession persistenceSession,
-            final PersistenceManager persistenceManager) {
-        super(persistenceSession, persistenceManager);
+    public PersistenceQueryFindAllInstancesProcessor(final PersistenceSession persistenceSession) {
+        super(persistenceSession);
     }
 
     public List<ObjectAdapter> process(final PersistenceQueryFindAllInstances persistenceQuery) {
@@ -46,7 +43,7 @@ public class PersistenceQueryFindAllInstancesProcessor extends PersistenceQueryP
         final ObjectSpecification specification = persistenceQuery.getSpecification();
         
         Class<?> cls = specification.getCorrespondingClass();
-        final Query jdoQuery = getPersistenceManager().newQuery(cls);
+        final Query jdoQuery = persistenceSession.newJdoQuery(cls);
         
         // http://www.datanucleus.org/servlet/jira/browse/NUCCORE-1103
         jdoQuery.addExtension("datanucleus.multivaluedFetch", "none");

http://git-wip-us.apache.org/repos/asf/isis/blob/4616a373/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
index 65e7e1a..d5a65b7 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
@@ -22,7 +22,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import javax.jdo.PersistenceManager;
 import javax.jdo.Query;
 
 import com.google.common.collect.Lists;
@@ -43,10 +42,8 @@ public class PersistenceQueryFindUsingApplibQueryProcessor extends PersistenceQu
     
     private static final Logger LOG = LoggerFactory.getLogger(PersistenceQueryFindUsingApplibQueryProcessor.class);
 
-    public PersistenceQueryFindUsingApplibQueryProcessor(
-            final PersistenceSession persistenceSession,
-            final PersistenceManager persistenceManager) {
-        super(persistenceSession, persistenceManager);
+    public PersistenceQueryFindUsingApplibQueryProcessor(final PersistenceSession persistenceSession) {
+        super(persistenceSession);
     }
 
     public List<ObjectAdapter> process(final PersistenceQueryFindUsingApplibQueryDefault persistenceQuery) {
@@ -77,7 +74,7 @@ public class PersistenceQueryFindUsingApplibQueryProcessor extends PersistenceQu
         final OneToOneAssociation pkOtoa = JdoPropertyUtils.getPrimaryKeyPropertyFor(objectSpec);
         final String pkOtoaId = pkOtoa.getId();
         final String filter = pkOtoaId + "==" + map.get(pkOtoaId);
-        final Query jdoQuery = getPersistenceManager().newQuery(cls, filter);
+        final Query jdoQuery = persistenceSession.newJdoQuery(cls, filter);
 
         // http://www.datanucleus.org/servlet/jira/browse/NUCCORE-1103
         jdoQuery.addExtension("datanucleus.multivaluedFetch", "none");
@@ -97,13 +94,13 @@ public class PersistenceQueryFindUsingApplibQueryProcessor extends PersistenceQu
     private List<?> getResults(final PersistenceQueryFindUsingApplibQueryDefault persistenceQuery) {
         
         final String queryName = persistenceQuery.getQueryName();
-        final Map<String, Object> argumentsByParameterName = unwrap(persistenceQuery.getArgumentsAdaptersByParameterName());
+        final Map<String, Object> argumentsByParameterName = unwrap(
+                persistenceQuery.getArgumentsAdaptersByParameterName());
         final QueryCardinality cardinality = persistenceQuery.getCardinality();
         final ObjectSpecification objectSpec = persistenceQuery.getSpecification();
 
-        final PersistenceManager persistenceManager = persistenceSession.getPersistenceManager();
         final Class<?> cls = objectSpec.getCorrespondingClass();
-        final Query jdoQuery = persistenceManager.newNamedQuery(cls, queryName);
+        final Query jdoQuery = persistenceSession.newJdoNamedQuery(cls, queryName);
         
         // http://www.datanucleus.org/servlet/jira/browse/NUCCORE-1103
         jdoQuery.addExtension("datanucleus.multivaluedFetch", "none");

http://git-wip-us.apache.org/repos/asf/isis/blob/4616a373/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
index f169a6b..c144e11 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
@@ -20,10 +20,7 @@ package org.apache.isis.objectstore.jdo.datanucleus.persistence.queries;
 
 import java.util.List;
 
-import javax.jdo.PersistenceManager;
-import javax.jdo.PersistenceManagerFactory;
 import javax.jdo.listener.InstanceLifecycleEvent;
-import javax.jdo.metadata.TypeMetadata;
 
 import com.google.common.collect.Lists;
 
@@ -40,33 +37,16 @@ public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQue
         implements PersistenceQueryProcessor<T> {
 
     final PersistenceSession persistenceSession;
-    private final PersistenceManager persistenceManager;
 
-    protected PersistenceQueryProcessorAbstract(
-            final PersistenceSession persistenceSession,
-            final PersistenceManager persistenceManager) {
+    protected PersistenceQueryProcessorAbstract(final PersistenceSession persistenceSession) {
         this.persistenceSession = persistenceSession;
-        this.persistenceManager = persistenceManager;
     }
 
-    protected PersistenceManager getPersistenceManager() {
-        return persistenceManager;
-    }
-    
-    
+
     // /////////////////////////////////////////////////////////////
     // helpers for subclasses
     // /////////////////////////////////////////////////////////////
 
-    protected PersistenceManagerFactory getPersistenceManagerFactory() {
-        return getPersistenceManager().getPersistenceManagerFactory();
-    }
-
-    // TODO: unused?
-    protected TypeMetadata getTypeMetadata(final String classFullName) {
-        return getPersistenceManagerFactory().getMetadata(classFullName);
-    }
-    
     /**
      * Traversing the provided list causes (or should cause) the
      * {@link IsisLifecycleListener#postLoad(InstanceLifecycleEvent) {


[15/50] isis git commit: ISIS-1194: renamed PersistenceSession#initialize to initializePropertiesAndDoCallback(), renamed #createObject to #instantiateAndInjectServices

Posted by da...@apache.org.
ISIS-1194: renamed PersistenceSession#initialize to initializePropertiesAndDoCallback(), renamed #createObject to #instantiateAndInjectServices


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

Branch: refs/heads/master
Commit: a05561ed961386eebf24b6ebae09a3c39a4f09f1
Parents: 604acc3
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 14:45:30 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 14:45:30 2015 +0100

----------------------------------------------------------------------
 .../org/apache/isis/core/runtime/memento/Memento.java   |  2 +-
 .../adaptermanager/AdapterManagerDefault.java           |  2 +-
 .../PublishingServiceWithDefaultPayloadFactories.java   |  2 +-
 .../runtime/system/persistence/PersistenceSession.java  | 12 ++++++------
 4 files changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a05561ed/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 91cb87a..69d391f 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
@@ -204,7 +204,7 @@ public class Memento implements Serializable {
         final Oid oid = getOid();
 		if (spec.isParentedOrFreeCollection()) {
 
-            final Object recreatedPojo = getPersistenceSession().createObject(spec);
+            final Object recreatedPojo = getPersistenceSession().instantiateAndInjectServices(spec);
         	adapter = getPersistenceSession().getAdapterManager() .mapRecreatedPojo(oid, recreatedPojo);
             populateCollection(adapter, (CollectionData) data);
             

http://git-wip-us.apache.org/repos/asf/isis/blob/a05561ed/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 d04366c..954bdc9 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 = persistenceSession.createObject(spec);
+        final Object pojo = persistenceSession.instantiateAndInjectServices(spec);
         if(rootOid.isViewModel()) {
             // initialize the view model pojo from the oid's identifier
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a05561ed/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 9f00b33..d08c6fe 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
@@ -58,7 +58,7 @@ 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 = getPersistenceSession().createObject(adapter.getSpecification());
+            Object replacementObject = getPersistenceSession().instantiateAndInjectServices(adapter.getSpecification());
             getPersistenceSession().getAdapterManager().remapRecreatedPojo(adapter, replacementObject);
             return adapter;
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/a05561ed/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 a942e54..4250d00 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
@@ -390,9 +390,9 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         if (LOG.isDebugEnabled()) {
             LOG.debug("creating transient instance of " + objectSpec);
         }
-        final Object pojo = createObject(objectSpec);
+        final Object pojo = instantiateAndInjectServices(objectSpec);
         final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
-        return initialize(adapter);
+        return initializePropertiesAndDoCallback(adapter);
     }
 
 
@@ -401,15 +401,15 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         if (LOG.isDebugEnabled()) {
             LOG.debug("creating view model instance of " + objectSpec);
         }
-        final Object pojo = createObject(objectSpec);
+        final Object pojo = instantiateAndInjectServices(objectSpec);
         final ViewModelFacet facet = objectSpec.getFacet(ViewModelFacet.class);
         facet.initialize(pojo, memento);
         final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
-        return initialize(adapter);
+        return initializePropertiesAndDoCallback(adapter);
     }
 
 
-    public Object createObject(final ObjectSpecification objectSpec) {
+    public Object instantiateAndInjectServices(final ObjectSpecification objectSpec) {
 
         final Class<?> correspondingClass = objectSpec.getCorrespondingClass();
         if (correspondingClass.isArray()) {
@@ -439,7 +439,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         }
     }
 
-    public ObjectAdapter initialize(final ObjectAdapter adapter) {
+    private ObjectAdapter initializePropertiesAndDoCallback(final ObjectAdapter adapter) {
 
         // initialize new object
         final List<ObjectAssociation> fields = adapter.getSpecification().getAssociations(Contributed.EXCLUDED);


[46/50] isis git commit: ISIS-1194: inlined ensureRootObject from FrameworkSynchronizer to PersistenceSession.

Posted by da...@apache.org.
ISIS-1194: inlined ensureRootObject from FrameworkSynchronizer to PersistenceSession.

... also deleted unused methods in FrameworkSynchronizer.


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

Branch: refs/heads/master
Commit: 1c2c6256bde9112de1bbfe1d544037185e2acbff
Parents: 4616a37
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 17:15:04 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 17:15:04 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java      | 78 --------------------
 .../system/persistence/PersistenceSession.java  | 12 ++-
 2 files changed, 9 insertions(+), 81 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/1c2c6256/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 026796f..33027f4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -18,23 +18,10 @@
  */
 package org.apache.isis.core.runtime.system.persistence;
 
-import java.text.MessageFormat;
-import java.util.concurrent.Callable;
-
-import org.datanucleus.enhancement.Persistable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
-import org.apache.isis.core.metamodel.adapter.version.Version;
-import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacet;
 
 public class FrameworkSynchronizer {
 
@@ -73,69 +60,4 @@ public class FrameworkSynchronizer {
 
 
 
-    // /////////////////////////////////////////////////////////
-    // Helpers
-    // /////////////////////////////////////////////////////////
-    
-    private <T> T withLogging(Persistable pojo, Callable<T> runnable, CalledFrom calledFrom) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug(logString(calledFrom, LoggingLocation.ENTRY, pojo));
-        }
-        try {
-            return runnable.call();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug(logString(calledFrom, LoggingLocation.EXIT, pojo));
-            }
-        }
-    }
-    
-    private void withLogging(Persistable pojo, final Runnable runnable, CalledFrom calledFrom) {
-        withLogging(pojo, new Callable<Void>() {
-
-            @Override
-            public Void call() throws Exception {
-                runnable.run();
-                return null;
-            }
-            
-        }, calledFrom);
-    }
-    
-    private String logString(CalledFrom calledFrom, LoggingLocation location, Persistable pojo) {
-        final ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
-        // initial spaces just to look better in log when wrapped by IsisLifecycleListener...
-        return calledFrom.name() + " " + location.prefix + " oid=" + (adapter !=null? adapter.getOid(): "(null)") + " ,pojo " + pojo;
-    }
-
-
-    // /////////////////////////////////////////////////////////
-    // More Helpers...
-    // /////////////////////////////////////////////////////////
-
-
-    // make sure the entity is known to Isis and is a root
-    void ensureRootObject(final Persistable pojo) {
-        final Oid oid = persistenceSession.adapterFor(pojo).getOid();
-        if (!(oid instanceof RootOid)) {
-            throw new IsisException(MessageFormat.format("Not a RootOid: oid={0}, for {1}", oid, pojo));
-        }
-    }
-
-    private Version getVersionIfAny(final Persistable pojo) {
-        return Utils.getVersionIfAny(pojo, authenticationSession);
-    }
-
-    @SuppressWarnings("unused")
-    private void ensureObjectNotLoaded(final Persistable pojo) {
-        final ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
-        if(adapter != null) {
-            final Oid oid = adapter.getOid();
-            throw new IsisException(MessageFormat.format("Object is already mapped in Isis: oid={0}, for {1}", oid, pojo));
-        }
-    }
-
-
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/1c2c6256/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 b093812..19096f3 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
@@ -94,7 +94,6 @@ import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
 import org.apache.isis.core.runtime.system.transaction.TransactionalClosureWithReturn;
-import org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener;
 import org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusCreateObjectCommand;
 import org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusDeleteObjectCommand;
 import org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryFindAllInstancesProcessor;
@@ -1488,10 +1487,17 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         return calledFrom.name() + " " + location.prefix + " oid=" + (adapter !=null? adapter.getOid(): "(null)") + " ,pojo " + pojo;
     }
 
-
+    /**
+     * makes sure the entity is known to Isis and is a root
+     * @param pojo
+     */
     public void ensureRootObject(final Persistable pojo) {
-        frameworkSynchronizer.ensureRootObject(pojo);
+        final Oid oid = adapterFor(pojo).getOid();
+        if (!(oid instanceof RootOid)) {
+            throw new IsisException(MessageFormat.format("Not a RootOid: oid={0}, for {1}", oid, pojo));
+        }
     }
+
     //endregion
 
 }


[31/50] isis git commit: ISIS-1194: ISIS-1194: law of demeter for FrameworkSynchronizer and AdapterManager - call PersistenceSession instead.

Posted by da...@apache.org.
ISIS-1194: ISIS-1194: law of demeter for FrameworkSynchronizer and AdapterManager - call PersistenceSession instead.


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

Branch: refs/heads/master
Commit: 19330823d5202c20a05aa25794cf2922e9af7504
Parents: b4f35e5
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:22:35 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:22:35 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java      | 48 ++++++++------------
 .../system/persistence/PersistenceSession.java  | 24 ++++++++++
 2 files changed, 44 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/19330823/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index d7559ee..06bcc04 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -22,7 +22,6 @@ import java.text.MessageFormat;
 import java.util.concurrent.Callable;
 
 import javax.jdo.JDOHelper;
-import javax.jdo.PersistenceManager;
 
 import org.datanucleus.enhancement.Persistable;
 import org.slf4j.Logger;
@@ -31,7 +30,6 @@ import org.slf4j.LoggerFactory;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
@@ -45,7 +43,6 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFa
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
 
 public class FrameworkSynchronizer {
@@ -100,7 +97,7 @@ public class FrameworkSynchronizer {
                 final Version datastoreVersion = getVersionIfAny(pc);
                 
                 final RootOid originalOid ;
-                ObjectAdapter adapter = getAdapterManager().getAdapterFor(pojo);
+                ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
                 if(adapter != null) {
                     ensureRootObject(pojo);
                     originalOid = (RootOid) adapter.getOid();
@@ -108,7 +105,7 @@ public class FrameworkSynchronizer {
                     final Version originalVersion = adapter.getVersion();
 
                     // sync the pojo held by the adapter with that just loaded
-                    getPersistenceSession().getAdapterManager() .remapRecreatedPojo(adapter, pojo);
+                    persistenceSession.remapRecreatedPojo(adapter, pojo);
                     
                     // since there was already an adapter, do concurrency check
                     // (but don't set abort cause if checking is suppressed through thread-local)
@@ -131,15 +128,15 @@ public class FrameworkSynchronizer {
                         }
                     }
                 } else {
-                    originalOid = getPersistenceSession().createPersistentOrViewModelOid(pojo);
+                    originalOid = persistenceSession.createPersistentOrViewModelOid(pojo);
                     
                     // it appears to be possible that there is already an adapter for this Oid, 
                     // ie from ObjectStore#resolveImmediately()
-                    adapter = getAdapterManager().getAdapterFor(originalOid);
+                    adapter = persistenceSession.getAdapterFor(originalOid);
                     if(adapter != null) {
-                        getPersistenceSession().getAdapterManager() .remapRecreatedPojo(adapter, pojo);
+                        persistenceSession.remapRecreatedPojo(adapter, pojo);
                     } else {
-                        adapter = getPersistenceSession().getAdapterManager().mapRecreatedPojo(originalOid, pojo);
+                        adapter = persistenceSession.mapRecreatedPojo(originalOid, pojo);
                         CallbackFacet.Util.callCallback(adapter, LoadedCallbackFacet.class);
                     }
                 }
@@ -162,7 +159,7 @@ public class FrameworkSynchronizer {
         withLogging(pojo, new Runnable() {
             @Override
             public void run() {
-                final ObjectAdapter adapter = getAdapterManager().getAdapterFor(pojo);
+                final ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
                 if(adapter == null) {
                     // not expected.
                     return;
@@ -203,15 +200,15 @@ public class FrameworkSynchronizer {
                     throw new IllegalStateException("Pojo JDO state is not persistent! pojo dnOid: " + JDOHelper.getObjectId(pojo));
                 }
 
-                final ObjectAdapter adapter = getAdapterManager().getAdapterFor(pojo);
+                final ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
                 final RootOid isisOid = (RootOid) adapter.getOid();
 
 
                 if (isisOid.isTransient()) {
                     // persisting
-                    final RootOid persistentOid = getPersistenceSession().createPersistentOrViewModelOid(pojo);
+                    final RootOid persistentOid = persistenceSession.createPersistentOrViewModelOid(pojo);
 
-                    getPersistenceSession().getAdapterManager().remapAsPersistent(adapter, persistentOid);
+                    persistenceSession.remapAsPersistent(adapter, persistentOid);
 
                     CallbackFacet.Util.callCallback(adapter, PersistedCallbackFacet.class);
 
@@ -234,7 +231,7 @@ public class FrameworkSynchronizer {
         withLogging(pojo, new Runnable() {
             @Override
             public void run() {
-                ObjectAdapter adapter = getAdapterManager().getAdapterFor(pojo);
+                ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
                 if (adapter == null) {
                     // seen this happen in the case when a parent entity (LeaseItem) has a collection of children
                     // objects (LeaseTerm) for which we haven't had a loaded callback fired and so are not yet
@@ -273,11 +270,11 @@ public class FrameworkSynchronizer {
         return withLogging(pojo, new Callable<ObjectAdapter>() {
             @Override
             public ObjectAdapter call() {
-                if(getPersistenceSession().getJdoObjectId(pojo) == null) {
+                if(persistenceSession.getJdoObjectId(pojo) == null) {
                     return null;
                 }
-                final RootOid oid = getPersistenceSession().getOidGenerator().createPersistentOrViewModelOid(pojo);
-                final ObjectAdapter adapter = getPersistenceSession().getAdapterManager().mapRecreatedPojo(oid, pojo);
+                final RootOid oid = persistenceSession.createPersistentOrViewModelOid(pojo);
+                final ObjectAdapter adapter = persistenceSession.mapRecreatedPojo(oid, pojo);
                 return adapter;
             }
         }, calledFrom);
@@ -288,7 +285,7 @@ public class FrameworkSynchronizer {
         withLogging(pojo, new Runnable() {
             @Override
             public void run() {
-                ObjectAdapter adapter = getAdapterManager().adapterFor(pojo);
+                ObjectAdapter adapter = persistenceSession.adapterFor(pojo);
                 
                 final IsisTransaction transaction = getCurrentTransaction();
                 transaction.enlistDeleting(adapter);
@@ -303,8 +300,8 @@ public class FrameworkSynchronizer {
         withLogging(pojo, new Runnable() {
             @Override
             public void run() {
-                ObjectAdapter adapter = getAdapterManager().getAdapterFor(pojo);
-                if(adapter == null) {
+                ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
+                if (adapter == null) {
                     return;
                 }
 
@@ -352,8 +349,7 @@ public class FrameworkSynchronizer {
     }
     
     private String logString(CalledFrom calledFrom, LoggingLocation location, Persistable pojo) {
-        final AdapterManager adapterManager = getAdapterManager();
-        final ObjectAdapter adapter = adapterManager.getAdapterFor(pojo);
+        final ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
         // initial spaces just to look better in log when wrapped by IsisLifecycleListener...
         return calledFrom.name() + " " + location.prefix + " oid=" + (adapter !=null? adapter.getOid(): "(null)") + " ,pojo " + pojo;
     }
@@ -366,7 +362,7 @@ public class FrameworkSynchronizer {
 
     // make sure the entity is known to Isis and is a root
     void ensureRootObject(final Persistable pojo) {
-        final Oid oid = getAdapterManager().adapterFor(pojo).getOid();
+        final Oid oid = persistenceSession.adapterFor(pojo).getOid();
         if (!(oid instanceof RootOid)) {
             throw new IsisException(MessageFormat.format("Not a RootOid: oid={0}, for {1}", oid, pojo));
         }
@@ -378,7 +374,7 @@ public class FrameworkSynchronizer {
 
     @SuppressWarnings("unused")
     private void ensureObjectNotLoaded(final Persistable pojo) {
-        final ObjectAdapter adapter = getAdapterManager().getAdapterFor(pojo);
+        final ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
         if(adapter != null) {
             final Oid oid = adapter.getOid();
             throw new IsisException(MessageFormat.format("Object is already mapped in Isis: oid={0}, for {1}", oid, pojo));
@@ -399,10 +395,6 @@ public class FrameworkSynchronizer {
         return persistenceSession;
     }
 
-    protected AdapterManagerDefault getAdapterManager() {
-        return getPersistenceSession().getAdapterManager();
-    }
-
     protected IsisTransaction getCurrentTransaction() {
         return persistenceSession.getTransactionManager().getTransaction();
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/19330823/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 e91f201..dbd9696 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
@@ -1153,6 +1153,30 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     }
     // endregion
 
+    //region > AdapterManager delegate methods
+
+    public ObjectAdapter getAdapterFor(final Object pojo) {
+        return adapterManager.getAdapterFor(pojo);
+    }
+
+    public ObjectAdapter adapterFor(final Object pojo) {
+        return adapterManager.adapterFor(pojo);
+    }
+
+    public void remapAsPersistent(final ObjectAdapter adapter, RootOid hintRootOid) {
+        adapterManager.remapAsPersistent(adapter, hintRootOid);
+    }
+
+    public ObjectAdapter mapRecreatedPojo(final Oid oid, final Object recreatedPojo) {
+        return adapterManager.mapRecreatedPojo(oid, recreatedPojo);
+    }
+
+    public void remapRecreatedPojo(ObjectAdapter adapter, final Object pojo) {
+        adapterManager.remapRecreatedPojo(adapter, pojo);
+    }
+
+    // endregion
+
 }
 
 


[50/50] isis git commit: ISIS-1194: removing stale import in ObjectReflectorDefault (should've been removed 20 or so commits ago...)

Posted by da...@apache.org.
ISIS-1194: removing stale import in ObjectReflectorDefault (should've been removed 20 or so commits ago...)


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

Branch: refs/heads/master
Commit: 02e41b3ddd8dd7d5c681dc1362c3e2952b08d038
Parents: 6f5b86b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 22:57:09 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 22:57:09 2015 +0100

----------------------------------------------------------------------
 .../isis/core/metamodel/specloader/ObjectReflectorDefault.java      | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/02e41b3d/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 e34454f..cc3139e 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
@@ -68,7 +68,6 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpiAware;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
-import org.apache.isis.core.metamodel.specloader.specimpl.CreateObjectContext;
 import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilderContext;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract.IntrospectionState;


[44/50] isis git commit: ISIS-1194: passing PersistenceSession through to PersistenceQueryProcessor implementations

Posted by da...@apache.org.
ISIS-1194: passing PersistenceSession through to PersistenceQueryProcessor implementations


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

Branch: refs/heads/master
Commit: 75dc6301aef2e8a11a1f7be8c44548a0feb195bc
Parents: be852c9
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 17:00:45 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 17:00:45 2015 +0100

----------------------------------------------------------------------
 .../system/persistence/PersistenceSession.java  |  8 ++---
 ...rsistenceQueryFindAllInstancesProcessor.java | 10 +++---
 ...tenceQueryFindUsingApplibQueryProcessor.java | 12 +++++---
 .../PersistenceQueryProcessorAbstract.java      | 32 +++++++-------------
 4 files changed, 28 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/75dc6301/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 80795e7..112bc3f 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
@@ -239,12 +239,12 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
         persistenceQueryProcessorByClass.put(
                 PersistenceQueryFindAllInstances.class,
-                new PersistenceQueryFindAllInstancesProcessor(
-                        persistenceManager, frameworkSynchronizer));
+                new PersistenceQueryFindAllInstancesProcessor(this,
+                        persistenceManager));
         persistenceQueryProcessorByClass.put(
                 PersistenceQueryFindUsingApplibQueryDefault.class,
-                new PersistenceQueryFindUsingApplibQueryProcessor(
-                        persistenceManager, frameworkSynchronizer));
+                new PersistenceQueryFindUsingApplibQueryProcessor(this,
+                        persistenceManager));
 
         initServices();
 

http://git-wip-us.apache.org/repos/asf/isis/blob/75dc6301/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
index 1b59683..bf10feb 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindAllInstancesProcessor.java
@@ -29,14 +29,16 @@ import org.slf4j.LoggerFactory;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.runtime.persistence.query.PersistenceQueryFindAllInstances;
-import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 
 public class PersistenceQueryFindAllInstancesProcessor extends PersistenceQueryProcessorAbstract<PersistenceQueryFindAllInstances> {
 
     private static final Logger LOG = LoggerFactory.getLogger(PersistenceQueryFindAllInstancesProcessor.class);
 
-    public PersistenceQueryFindAllInstancesProcessor(final PersistenceManager persistenceManager, final FrameworkSynchronizer frameworkSynchronizer) {
-        super(persistenceManager);
+    public PersistenceQueryFindAllInstancesProcessor(
+            final PersistenceSession persistenceSession,
+            final PersistenceManager persistenceManager) {
+        super(persistenceSession, persistenceManager);
     }
 
     public List<ObjectAdapter> process(final PersistenceQueryFindAllInstances persistenceQuery) {
@@ -55,7 +57,7 @@ public class PersistenceQueryFindAllInstancesProcessor extends PersistenceQueryP
 
         try {
             final List<?> pojos = (List<?>) jdoQuery.execute();
-            return loadAdapters(specification, pojos);
+            return loadAdapters(pojos);
         } finally {
             jdoQuery.closeAll();
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/75dc6301/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
index afd04a6..65e7e1a 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
@@ -36,15 +36,17 @@ import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.runtime.persistence.query.PersistenceQueryFindUsingApplibQueryDefault;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.objectstore.jdo.datanucleus.metamodel.JdoPropertyUtils;
-import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer;
 
 public class PersistenceQueryFindUsingApplibQueryProcessor extends PersistenceQueryProcessorAbstract<PersistenceQueryFindUsingApplibQueryDefault> {
     
     private static final Logger LOG = LoggerFactory.getLogger(PersistenceQueryFindUsingApplibQueryProcessor.class);
 
-    public PersistenceQueryFindUsingApplibQueryProcessor(final PersistenceManager persistenceManager, final FrameworkSynchronizer frameworkSynchronizer) {
-        super(persistenceManager);
+    public PersistenceQueryFindUsingApplibQueryProcessor(
+            final PersistenceSession persistenceSession,
+            final PersistenceManager persistenceManager) {
+        super(persistenceSession, persistenceManager);
     }
 
     public List<ObjectAdapter> process(final PersistenceQueryFindUsingApplibQueryDefault persistenceQuery) {
@@ -58,7 +60,7 @@ public class PersistenceQueryFindUsingApplibQueryProcessor extends PersistenceQu
             results = getResults(persistenceQuery);
         }
         
-        return loadAdapters(objectSpec, results);
+        return loadAdapters(results);
     }
 
     // special case handling
@@ -99,7 +101,7 @@ public class PersistenceQueryFindUsingApplibQueryProcessor extends PersistenceQu
         final QueryCardinality cardinality = persistenceQuery.getCardinality();
         final ObjectSpecification objectSpec = persistenceQuery.getSpecification();
 
-        final PersistenceManager persistenceManager = getPersistenceSession().getPersistenceManager();
+        final PersistenceManager persistenceManager = persistenceSession.getPersistenceManager();
         final Class<?> cls = objectSpec.getCorrespondingClass();
         final Query jdoQuery = persistenceManager.newNamedQuery(cls, queryName);
         

http://git-wip-us.apache.org/repos/asf/isis/blob/75dc6301/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
index 05db979..f169a6b 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
@@ -31,9 +31,6 @@ import org.datanucleus.enhancement.Persistable;
 
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.FrameworkSynchronizer.CalledFrom;
 import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -42,9 +39,13 @@ import org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleList
 public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQuery>
         implements PersistenceQueryProcessor<T> {
 
+    final PersistenceSession persistenceSession;
     private final PersistenceManager persistenceManager;
 
-    protected PersistenceQueryProcessorAbstract(final PersistenceManager persistenceManager) {
+    protected PersistenceQueryProcessorAbstract(
+            final PersistenceSession persistenceSession,
+            final PersistenceManager persistenceManager) {
+        this.persistenceSession = persistenceSession;
         this.persistenceManager = persistenceManager;
     }
 
@@ -60,7 +61,8 @@ public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQue
     protected PersistenceManagerFactory getPersistenceManagerFactory() {
         return getPersistenceManager().getPersistenceManagerFactory();
     }
-    
+
+    // TODO: unused?
     protected TypeMetadata getTypeMetadata(final String classFullName) {
         return getPersistenceManagerFactory().getMetadata(classFullName);
     }
@@ -70,8 +72,7 @@ public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQue
      * {@link IsisLifecycleListener#postLoad(InstanceLifecycleEvent) {
      * to be called.
      */
-    protected List<ObjectAdapter> loadAdapters(
-            final ObjectSpecification specification, final List<?> pojos) {
+    protected List<ObjectAdapter> loadAdapters(final List<?> pojos) {
         final List<ObjectAdapter> adapters = Lists.newArrayList();
         for (final Object pojo : pojos) {
         	// ought not to be necessary, however for some queries it seems that the 
@@ -79,11 +80,11 @@ public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQue
             ObjectAdapter adapter;
             if(pojo instanceof Persistable) {
                 // an entity
-                getPersistenceSession().postLoadProcessingFor((Persistable) pojo, CalledFrom.OS_QUERY);
-                adapter = getAdapterManager().getAdapterFor(pojo);
+                persistenceSession.postLoadProcessingFor((Persistable) pojo, CalledFrom.OS_QUERY);
+                adapter = persistenceSession.getAdapterFor(pojo);
             } else {
                 // a value type
-                adapter = getAdapterManager().adapterFor(pojo);
+                adapter = persistenceSession.adapterFor(pojo);
             }
             Assert.assertNotNull(adapter);
             adapters.add(adapter);
@@ -91,16 +92,5 @@ public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQue
         return adapters;
     }
 
-    // /////////////////////////////////////////////////////////////
-    // Dependencies (from context)
-    // /////////////////////////////////////////////////////////////
-
-    protected PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
-    }
-
-    protected AdapterManager getAdapterManager() {
-        return IsisContext.getPersistenceSession().getAdapterManager();
-    }
 
 }


[19/50] isis git commit: ISIS-1194: PersistenceSession: pass in Variant param to the createInstance overloads (unused as of yet)

Posted by da...@apache.org.
ISIS-1194: PersistenceSession: pass in Variant param to the createInstance overloads (unused as of yet)


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

Branch: refs/heads/master
Commit: 71dd91da6955f21c0a9e8a1cfd6cfd3bba1680ac
Parents: c7424d5
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:05:26 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:05:26 2015 +0100

----------------------------------------------------------------------
 .../runtime/system/persistence/PersistenceSession.java | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/71dd91da/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 ca3de0d..419e6ae 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
@@ -387,11 +387,11 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
      * {@link org.apache.isis.applib.DomainObjectContainer}.
      */
     public ObjectAdapter createTransientInstance(final ObjectSpecification objectSpec) {
-        return createInstance(objectSpec);
+        return createInstance(objectSpec, Variant.TRANSIENT);
     }
 
     public ObjectAdapter createViewModelInstance(final ObjectSpecification objectSpec, final String memento) {
-        return createInstance(objectSpec, memento);
+        return createInstance(objectSpec, Variant.VIEW_MODEL, memento);
     }
 
     private enum Variant {
@@ -399,7 +399,9 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         VIEW_MODEL
     }
 
-    private ObjectAdapter createInstance(final ObjectSpecification objectSpec) {
+    private ObjectAdapter createInstance(
+            final ObjectSpecification objectSpec,
+            final Variant variant) {
         if (LOG.isDebugEnabled()) {
             LOG.debug("creating transient instance of " + objectSpec);
         }
@@ -409,7 +411,10 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     }
 
 
-    private ObjectAdapter createInstance(final ObjectSpecification objectSpec, final String memento) {
+    private ObjectAdapter createInstance(
+            final ObjectSpecification objectSpec,
+            final Variant variant,
+            final String memento) {
         if (LOG.isDebugEnabled()) {
             LOG.debug("creating view model instance of " + objectSpec);
         }


[24/50] isis git commit: ISIS-1194: PersistenceSession instantiates its own FrameworkSynchronizer rather than obtain from DataNucleusApplicationComponents

Posted by da...@apache.org.
ISIS-1194: PersistenceSession instantiates its own FrameworkSynchronizer rather than obtain from DataNucleusApplicationComponents

... safe to do because the FrameworkSynchronizer (currently) has no state.


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

Branch: refs/heads/master
Commit: 51fc96f1c484c4d52a3b24bd0f5da850de3c2dfc
Parents: 4a5a2ee
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:51:19 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:51:19 2015 +0100

----------------------------------------------------------------------
 .../system/persistence/DataNucleusApplicationComponents.java | 8 --------
 .../runtime/system/persistence/FrameworkSynchronizer.java    | 3 +++
 .../core/runtime/system/persistence/PersistenceSession.java  | 4 ++--
 3 files changed, 5 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/51fc96f1/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
index 95e5c8c..8ade4f4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
@@ -269,14 +269,6 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
     }
 
 
-    ///////////////////////////////////////////////////////////////////////////
-    // FrameworkSynchronizer
-    ///////////////////////////////////////////////////////////////////////////
-
-    public FrameworkSynchronizer getFrameworkSynchronizer() {
-        return synchronizer;
-    }
-
 
     ///////////////////////////////////////////////////////////////////////////
     //

http://git-wip-us.apache.org/repos/asf/isis/blob/51fc96f1/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 196b6b5..242dc94 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -52,6 +52,9 @@ public class FrameworkSynchronizer {
 
     private static final Logger LOG = LoggerFactory.getLogger(FrameworkSynchronizer.class);
 
+    public FrameworkSynchronizer() {
+
+    }
     /**
      * Categorises where called from.
      * 

http://git-wip-us.apache.org/repos/asf/isis/blob/51fc96f1/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 9258a4c..4da705d 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
@@ -172,11 +172,11 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
         this.servicesInjector = persistenceSessionFactory.getServicesInjector();
         this.applicationComponents = persistenceSessionFactory.getApplicationComponents();
-        this.frameworkSynchronizer = applicationComponents.getFrameworkSynchronizer();
 
         // sub-components
 
-        oidMarshaller = new OidMarshaller();
+        this.oidMarshaller = new OidMarshaller();
+        this.frameworkSynchronizer = new FrameworkSynchronizer();
 
         this.objectFactory = new ObjectFactory(this, servicesInjector);
         this.oidGenerator = new OidGenerator(this, specificationLoader);


[29/50] isis git commit: ISIS-1194: law of demeter for FrameworkSynchronizer and OidGenerator - call PersistenceSession instead.

Posted by da...@apache.org.
ISIS-1194: law of demeter for FrameworkSynchronizer and OidGenerator - call PersistenceSession instead.


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

Branch: refs/heads/master
Commit: fa8d2de1d661b06818bcf3b0f907a355047ce0eb
Parents: 06d685c
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:08:06 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:08:06 2015 +0100

----------------------------------------------------------------------
 .../system/persistence/FrameworkSynchronizer.java        |  9 ++-------
 .../runtime/system/persistence/PersistenceSession.java   | 11 +++++++++++
 2 files changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/fa8d2de1/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 65cfb68..1c28b71 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -131,8 +131,7 @@ public class FrameworkSynchronizer {
                         }
                     }
                 } else {
-                    final OidGenerator oidGenerator = getOidGenerator();
-                    originalOid = oidGenerator.createPersistentOrViewModelOid(pojo);
+                    originalOid = getPersistenceSession().createPersistentOrViewModelOid(pojo);
                     
                     // it appears to be possible that there is already an adapter for this Oid, 
                     // ie from ObjectStore#resolveImmediately()
@@ -210,7 +209,7 @@ public class FrameworkSynchronizer {
 
                 if (isisOid.isTransient()) {
                     // persisting
-                    final RootOid persistentOid = getOidGenerator().createPersistentOrViewModelOid(pojo);
+                    final RootOid persistentOid = getPersistenceSession().createPersistentOrViewModelOid(pojo);
 
                     getPersistenceSession().getAdapterManager().remapAsPersistent(adapter, persistentOid);
 
@@ -404,10 +403,6 @@ public class FrameworkSynchronizer {
         return getPersistenceSession().getAdapterManager();
     }
 
-    protected OidGenerator getOidGenerator() {
-        return getPersistenceSession().getOidGenerator();
-    }
-
     protected PersistenceManager getJdoPersistenceManager() {
         return getPersistenceSession().getPersistenceManager();
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/fa8d2de1/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 e9ec445..22a54a3 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
@@ -1139,4 +1139,15 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
     //endregion
 
+    //region > oidGenerator delegate methods
+
+    public final RootOid createPersistentOrViewModelOid(Object pojo) {
+        return oidGenerator.createPersistentOrViewModelOid(pojo);
+    }
+    //endregion
+
+
 }
+
+
+


[10/50] isis git commit: ISIS-1194: inlining ObjectFactory's createObject into ObjectSpecificationDefault (its only caller).

Posted by da...@apache.org.
ISIS-1194: inlining ObjectFactory's createObject into ObjectSpecificationDefault (its only caller).


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

Branch: refs/heads/master
Commit: 694e3b005ab6c1ae1a5cb96ea0f35df14306a456
Parents: 6af9178
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 14:21:08 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 14:21:08 2015 +0100

----------------------------------------------------------------------
 .../specimpl/ObjectSpecificationAbstract.java   |  5 ---
 .../dflt/ObjectSpecificationDefault.java        | 23 ++++++++++++-
 .../ObjectSpecificationOnStandaloneList.java    |  7 ++++
 .../system/persistence/ObjectFactory.java       | 34 +++-----------------
 4 files changed, 34 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/694e3b00/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index a5ce07b..24f4c68 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -1151,11 +1151,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
     // //////////////////////////////////////////////////////////////////////
 
     @Override
-    public Object createObject() {
-        throw new UnsupportedOperationException(getFullIdentifier());
-    }
-
-    @Override
     public ObjectAdapter initialize(ObjectAdapter objectAdapter) {
         return objectAdapter;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/694e3b00/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 395497a..a9d5f43 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
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.specloader.specimpl.dflt;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -417,12 +418,32 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
         }
         
         try {
-            return getObjectInstantiator().instantiate(getCorrespondingClass());
+            return instantiate(getCorrespondingClass());
         } catch (final ObjectInstantiationException e) {
             throw new IsisException("Failed to create instance of type " + getFullIdentifier(), e);
         }
     }
 
+    private <T> T instantiate(final Class<T> cls) throws ObjectInstantiationException {
+
+        if (Modifier.isAbstract(cls.getModifiers())) {
+            throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
+        }
+        final T 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;
+    }
+
+
     /**
      * REVIEW: does this behaviour live best here?  Not that sure that it does...
      */

http://git-wip-us.apache.org/repos/asf/isis/blob/694e3b00/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 c2ba620..18ce582 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,4 +182,11 @@ public class ObjectSpecificationOnStandaloneList extends ObjectSpecificationAbst
     }
 
 
+    @Override
+    public Object createObject() {
+        throw new UnsupportedOperationException(getFullIdentifier());
+    }
+
+
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/694e3b00/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 ba12543..34b9848 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
@@ -38,48 +38,24 @@ public class ObjectFactory {
 
     public <T> T instantiate(final Class<T> cls) throws ObjectInstantiationException {
 
-        if (getServicesInjector() == null) {
+        if (servicesInjector == 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
-
-    /**
-     * Simply instantiates reflectively.
-     */
-    protected <T> T doInstantiate(final Class<T> cls) throws ObjectInstantiationException {
+        final T newInstance;
         if (Modifier.isAbstract(cls.getModifiers())) {
             throw new ObjectInstantiationException("Cannot create an instance of an abstract class: " + cls);
         }
         try {
-            return cls.newInstance();
+            newInstance = cls.newInstance();
         } catch (final IllegalAccessException | InstantiationException e) {
             throw new ObjectInstantiationException(e);
         }
-    }
-    //endregion
-
-    //region > dependencies (from constructor)
-
-    private PersistenceSession getPersistenceSession() {
-        return persistenceSession;
-    }
 
-    protected ServicesInjectorSpi getServicesInjector() {
-        return servicesInjector;
+        servicesInjector.injectServicesInto(newInstance);
+        return newInstance;
     }
 
-    //endregion
-
 }


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

Posted by da...@apache.org.
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);
 


[09/50] isis git commit: ISIS-1194: reinstating deleted classes, for backward compatibility. Also removing stale javadoc references to deleted ObjectStore class.

Posted by da...@apache.org.
ISIS-1194: reinstating deleted classes, for backward compatibility.  Also removing stale javadoc references to deleted ObjectStore class.


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

Branch: refs/heads/master
Commit: 6af91784cf242419e74e428f393ae5728e5223c4
Parents: 550b88d
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 13:27:16 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 13:27:16 2015 +0100

----------------------------------------------------------------------
 .../transaction/TransactionalResource.java      |  9 +++---
 .../TransactionalClosureAbstract.java           | 30 ++++++++++++++++++++
 .../TransactionalClosureWithReturnAbstract.java | 30 ++++++++++++++++++++
 3 files changed, 64 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/6af91784/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java
index 94781e4..a04517d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java
@@ -19,30 +19,29 @@
 
 package org.apache.isis.core.runtime.persistence.objectstore.transaction;
 
-import org.apache.isis.core.runtime.system.persistence.ObjectStore;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 
 /**
  * Interface for the {@link IsisTransactionManager} to interact with some
- * transactional resource (ie a {@link ObjectStore}).
+ * transactional resource.
  */
 public interface TransactionalResource {
 
     /**
      * Used by the {@link IsisTransactionManager} to tell the underlying
-     * {@link ObjectStore} to start a transaction.
+     * object store to start a transaction.
      */
     void startTransaction();
 
     /**
      * Used by the {@link IsisTransactionManager} to tell the underlying
-     * {@link ObjectStore} to commit a transaction.
+     * object store to commit a transaction.
      */
     void endTransaction();
 
     /**
      * Used by the {@link IsisTransactionManager} to tell the underlying
-     * {@link ObjectStore} to abort a transaction.
+     * object store to abort a transaction.
      */
     void abortTransaction();
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6af91784/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/TransactionalClosureAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/TransactionalClosureAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/TransactionalClosureAbstract.java
new file mode 100644
index 0000000..cace0c3
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/TransactionalClosureAbstract.java
@@ -0,0 +1,30 @@
+/*
+ *  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.system.transaction;
+
+/**
+ * Not used by the framework, but provided for backward compatibility.
+ *
+ * @deprecated - implement {@link TransactionalClosure} instead
+ */
+@Deprecated
+public abstract class TransactionalClosureAbstract implements TransactionalClosure {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/6af91784/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/TransactionalClosureWithReturnAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/TransactionalClosureWithReturnAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/TransactionalClosureWithReturnAbstract.java
new file mode 100644
index 0000000..78849b8
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/TransactionalClosureWithReturnAbstract.java
@@ -0,0 +1,30 @@
+/*
+ *  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.system.transaction;
+
+/**
+ * Not used by the framework, but provided for backward compatibility.
+ *
+ * @deprecated - implement {@link TransactionalClosureWithReturn} instead
+ */
+@Deprecated
+public abstract class TransactionalClosureWithReturnAbstract<T> implements TransactionalClosureWithReturn<T> {
+
+}


[39/50] isis git commit: ISIS-1194: inlining postStoreProcessingFor from FrameworkSynchronizer to PersistenceSession

Posted by da...@apache.org.
ISIS-1194: inlining postStoreProcessingFor from FrameworkSynchronizer to PersistenceSession


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

Branch: refs/heads/master
Commit: 6748065c0ad89c518285881c5c3b84ad36b4b945
Parents: 195de3d
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:47:28 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:47:28 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java      | 48 -----------------
 .../system/persistence/PersistenceSession.java  | 55 +++++++++++++++++++-
 2 files changed, 53 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/6748065c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 0340ca0..12ce154 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -21,8 +21,6 @@ package org.apache.isis.core.runtime.system.persistence;
 import java.text.MessageFormat;
 import java.util.concurrent.Callable;
 
-import javax.jdo.JDOHelper;
-
 import org.datanucleus.enhancement.Persistable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,10 +35,8 @@ import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
 
 public class FrameworkSynchronizer {
@@ -177,50 +173,6 @@ public class FrameworkSynchronizer {
         }, calledFrom);
     }
 
-    /**
-     * Called either when an entity is initially persisted, or when an entity is updated; fires the appropriate lifecycle callback
-     *
-     * <p>
-     * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
-     * to determine which callback to fire.
-     */
-    public void postStoreProcessingFor(final Persistable pojo, CalledFrom calledFrom) {
-        withLogging(pojo, new Runnable() {
-            @Override
-            public void run() {
-                ensureRootObject(pojo);
-
-                // assert is persistent
-                if(!pojo.dnIsPersistent()) {
-                    throw new IllegalStateException("Pojo JDO state is not persistent! pojo dnOid: " + JDOHelper.getObjectId(pojo));
-                }
-
-                final ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
-                final RootOid isisOid = (RootOid) adapter.getOid();
-
-
-                if (isisOid.isTransient()) {
-                    // persisting
-                    final RootOid persistentOid = persistenceSession.createPersistentOrViewModelOid(pojo);
-
-                    persistenceSession.remapAsPersistent(adapter, persistentOid);
-
-                    CallbackFacet.Util.callCallback(adapter, PersistedCallbackFacet.class);
-
-                    final IsisTransaction transaction = persistenceSession.getCurrentTransaction();
-                    transaction.enlistCreated(adapter);
-                } else {
-                    // updating;
-                    // the callback and transaction.enlist are done in the preDirty callback
-                    // (can't be done here, as the enlist requires to capture the 'before' values)
-                    CallbackFacet.Util.callCallback(adapter, UpdatedCallbackFacet.class);
-                }
-
-                Version versionIfAny = getVersionIfAny(pojo);
-                adapter.setVersion(versionIfAny);
-            }
-        }, calledFrom);
-    }
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6748065c/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 24f2adb..d1f3b31 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
@@ -27,6 +27,7 @@ import java.util.concurrent.Callable;
 
 import javax.jdo.FetchGroup;
 import javax.jdo.FetchPlan;
+import javax.jdo.JDOHelper;
 import javax.jdo.PersistenceManager;
 
 import com.google.common.collect.Lists;
@@ -54,8 +55,11 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
@@ -765,7 +769,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         return lazilyLoaded(persistenceCapable, FrameworkSynchronizer.CalledFrom.OS_LAZILYLOADED);
     }
 
-    public ObjectAdapter lazilyLoaded(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
+    private ObjectAdapter lazilyLoaded(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
         return withLogging(pojo, new Callable<ObjectAdapter>() {
             @Override
             public ObjectAdapter call() {
@@ -1226,10 +1230,57 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         frameworkSynchronizer.preStoreProcessingFor(pojo, calledFrom);
     }
 
+    /**
+     * Called either when an entity is initially persisted, or when an entity is updated;
+     * fires the appropriate lifecycle callback
+     *
+     * <p>
+     * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
+     * to determine which callback to fire.
+     */
     public void postStoreProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
-        frameworkSynchronizer.postStoreProcessingFor(pojo, calledFrom);
+        withLogging(pojo, new Runnable() {
+            @Override
+            public void run() {
+                ensureRootObject(pojo);
+
+                // assert is persistent
+                if (!pojo.dnIsPersistent()) {
+                    throw new IllegalStateException(
+                            "Pojo JDO state is not persistent! pojo dnOid: " + JDOHelper.getObjectId(pojo));
+                }
+
+                final ObjectAdapter adapter = getAdapterFor(pojo);
+                final RootOid isisOid = (RootOid) adapter.getOid();
+
+                if (isisOid.isTransient()) {
+                    // persisting
+                    final RootOid persistentOid = createPersistentOrViewModelOid(pojo);
+
+                    remapAsPersistent(adapter, persistentOid);
+
+                    CallbackFacet.Util.callCallback(adapter, PersistedCallbackFacet.class);
+
+                    final IsisTransaction transaction = getCurrentTransaction();
+                    transaction.enlistCreated(adapter);
+                } else {
+                    // updating;
+                    // the callback and transaction.enlist are done in the preDirty callback
+                    // (can't be done here, as the enlist requires to capture the 'before' values)
+                    CallbackFacet.Util.callCallback(adapter, UpdatedCallbackFacet.class);
+                }
+
+                Version versionIfAny = getVersionIfAny(pojo);
+                adapter.setVersion(versionIfAny);
+            }
+        }, calledFrom);
     }
 
+    private Version getVersionIfAny(final Persistable pojo) {
+        return Utils.getVersionIfAny(pojo, authenticationSession);
+    }
+
+
     public void preDirtyProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
         withLogging(pojo, new Runnable() {
             @Override


[40/50] isis git commit: ISIS-1194: inlining postDeleteProcessingFor from FrameworkSynchronizer to PersistenceSession

Posted by da...@apache.org.
ISIS-1194: inlining postDeleteProcessingFor from FrameworkSynchronizer to PersistenceSession


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

Branch: refs/heads/master
Commit: 5d69af1b1bd26961c78b03658b3403871f71b926
Parents: 6748065
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:49:03 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:49:03 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java      | 20 --------------------
 .../system/persistence/PersistenceSession.java  | 19 ++++++++++++++++++-
 2 files changed, 18 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/5d69af1b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 12ce154..b49a556 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -192,27 +192,7 @@ public class FrameworkSynchronizer {
         
     }
 
-    public void postDeleteProcessingFor(final Persistable pojo, final CalledFrom calledFrom) {
-        withLogging(pojo, new Runnable() {
-            @Override
-            public void run() {
-                ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
-                if (adapter == null) {
-                    return;
-                }
-
-                // previously we called the removed callback (if any).
-                // however, this is almost certainly incorrect, because DN will not allow us
-                // to "touch" the pojo once deleted.
-                //
-                // CallbackFacet.Util.callCallback(adapter, RemovedCallbackFacet.class);
 
-
-            }
-        }, calledFrom);
-        
-    }
-    
     // /////////////////////////////////////////////////////////
     // Helpers
     // /////////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/5d69af1b/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 d1f3b31..d408fb9 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
@@ -1215,9 +1215,26 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     //region > FrameworkSynchronizer delegate methods
 
     public void postDeleteProcessingFor(final Persistable pojo, final FrameworkSynchronizer.CalledFrom calledFrom) {
-        frameworkSynchronizer.postDeleteProcessingFor(pojo, calledFrom);
+        withLogging(pojo, new Runnable() {
+            @Override
+            public void run() {
+                ObjectAdapter adapter = getAdapterFor(pojo);
+                if (adapter == null) {
+                    return;
+                }
+
+                // previously we called the removed callback (if any).
+                // however, this is almost certainly incorrect, because DN will not allow us
+                // to "touch" the pojo once deleted.
+                //
+                // CallbackFacet.Util.callCallback(adapter, RemovedCallbackFacet.class);
+
+            }
+        }, calledFrom);
+
     }
 
+
     public void preDeleteProcessingFor(final Persistable pojo, final FrameworkSynchronizer.CalledFrom calledFrom) {
         frameworkSynchronizer.preDeleteProcessingFor(pojo, calledFrom);
     }


[27/50] isis git commit: ISIS-1194: DataNucleusApplicationComponents: removed createPersistenceManager, instead inlined into PersistenceSession (only caller).

Posted by da...@apache.org.
ISIS-1194: DataNucleusApplicationComponents: removed createPersistenceManager, instead inlined into PersistenceSession (only caller).

... also removed the FrameworkSynchronizer form DNAC, unused.


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

Branch: refs/heads/master
Commit: ecd2b75db49527e1ef4e3ebfeb3004883bc7f764
Parents: c2afada
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:58:41 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:58:41 2015 +0100

----------------------------------------------------------------------
 .../persistence/DataNucleusApplicationComponents.java   | 12 ------------
 .../system/persistence/FrameworkSynchronizer.java       |  2 +-
 .../runtime/system/persistence/PersistenceSession.java  |  2 +-
 3 files changed, 2 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/ecd2b75d/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
index 3988567..a702ee5 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
@@ -23,7 +23,6 @@ import java.util.Properties;
 import java.util.Set;
 
 import javax.jdo.JDOHelper;
-import javax.jdo.PersistenceManager;
 import javax.jdo.PersistenceManagerFactory;
 
 import com.google.common.base.Joiner;
@@ -44,7 +43,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.objectstore.jdo.datanucleus.CreateSchemaObjectFromClassMetadata;
 import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPropertiesAware;
-import org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.query.JdoNamedQuery;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.query.JdoQueryFacet;
 
@@ -85,8 +83,6 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
     private final IsisConfiguration jdoObjectstoreConfig;
     private final Map<String, String> datanucleusProps;
     
-    private final FrameworkSynchronizer synchronizer;
-    
     private Map<String, JdoNamedQuery> namedQueryByName;
     private PersistenceManagerFactory persistenceManagerFactory;
 
@@ -99,8 +95,6 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
         this.persistableClassNameSet = persistableClassNameSet;
         this.jdoObjectstoreConfig = jdoObjectstoreConfig;
 
-        this.synchronizer = new FrameworkSynchronizer();
-
         initialize();
         
         // for JRebel plugin
@@ -271,12 +265,6 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
     ///////////////////////////////////////////////////////////////////////////
     //
     ///////////////////////////////////////////////////////////////////////////
-    
-    public PersistenceManager createPersistenceManager() {
-        PersistenceManager persistenceManager = persistenceManagerFactory.getPersistenceManager();
-
-        return persistenceManager;
-    }
 
     public JdoNamedQuery getNamedQuery(String queryName) {
         return namedQueryByName.get(queryName);

http://git-wip-us.apache.org/repos/asf/isis/blob/ecd2b75d/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 242dc94..8c1695d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -53,8 +53,8 @@ public class FrameworkSynchronizer {
     private static final Logger LOG = LoggerFactory.getLogger(FrameworkSynchronizer.class);
 
     public FrameworkSynchronizer() {
-
     }
+    
     /**
      * Categorises where called from.
      * 

http://git-wip-us.apache.org/repos/asf/isis/blob/ecd2b75d/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 7afc1dc..2fe4b3b 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
@@ -222,7 +222,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
         adapterManager.open();
 
-        persistenceManager = applicationComponents.createPersistenceManager();
+        persistenceManager = applicationComponents.getPersistenceManagerFactory().getPersistenceManager();
 
         final IsisLifecycleListener isisLifecycleListener = new IsisLifecycleListener(frameworkSynchronizer);
         persistenceManager.addInstanceLifecycleListener(isisLifecycleListener, (Class[])null);


[18/50] isis git commit: ISIS-1194: PersistenceSession, added an enum (unused as of yet), and moved method lexically.

Posted by da...@apache.org.
ISIS-1194: PersistenceSession, added an enum (unused as of yet), and moved method lexically.


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

Branch: refs/heads/master
Commit: c7424d50677141223e7d7b68e3c2724c02e6baf4
Parents: d85822f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 15:03:40 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 15:03:40 2015 +0100

----------------------------------------------------------------------
 .../runtime/system/persistence/PersistenceSession.java  | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/c7424d50/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 2a9f0ce..ca3de0d 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
@@ -390,6 +390,15 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         return createInstance(objectSpec);
     }
 
+    public ObjectAdapter createViewModelInstance(final ObjectSpecification objectSpec, final String memento) {
+        return createInstance(objectSpec, memento);
+    }
+
+    private enum Variant {
+        TRANSIENT,
+        VIEW_MODEL
+    }
+
     private ObjectAdapter createInstance(final ObjectSpecification objectSpec) {
         if (LOG.isDebugEnabled()) {
             LOG.debug("creating transient instance of " + objectSpec);
@@ -399,9 +408,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         return initializePropertiesAndDoCallback(adapter);
     }
 
-    public ObjectAdapter createViewModelInstance(final ObjectSpecification objectSpec, final String memento) {
-        return createInstance(objectSpec, memento);
-    }
 
     private ObjectAdapter createInstance(final ObjectSpecification objectSpec, final String memento) {
         if (LOG.isDebugEnabled()) {