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

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

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
+
 
 }