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 2010/11/03 02:24:23 UTC

svn commit: r1030308 [6/8] - in /incubator/isis/trunk: alternatives/remoting/common/src/main/java/org/apache/isis/remoting/facade/impl/ alternatives/remoting/common/src/main/java/org/apache/isis/remoting/server/ alternatives/remoting/common/src/test/ja...

Modified: incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adapterfactory/package-info.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adapterfactory/package-info.java?rev=1030308&r1=1030307&r2=1030308&view=diff
==============================================================================
--- incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adapterfactory/package-info.java (original)
+++ incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adapterfactory/package-info.java Wed Nov  3 01:24:18 2010
@@ -17,14 +17,12 @@
  *  under the License.
  */
 
-
-/**
- * ([[NAME]]) Adapter Factory API.
- * 
- * <p>
- * Concrete implementations are in the <tt>objectadapter-xxx</tt> modules.
- * In most scenarios the default implementation is expected to suffice.  However,
- * the API was introduced to allow custom viewers to install more sophisticated
- * adapters, specifically to support observer (MVC) patterns in the UI.
- */
+/**
+ * (Apache Isis) Adapter Factory API.
+ * 
+ * <p>
+ * In most scenarios the default implementation is expected to suffice.  However,
+ * the API was introduced to allow custom viewers to install more sophisticated
+ * adapters, specifically to support observer (MVC) patterns in the UI.
+ */
 package org.apache.isis.runtime.persistence.adapterfactory;
\ No newline at end of file

Modified: incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adaptermanager/AdapterManagerDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adaptermanager/AdapterManagerDefault.java?rev=1030308&r1=1030307&r2=1030308&view=diff
==============================================================================
--- incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adaptermanager/AdapterManagerDefault.java (original)
+++ incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adaptermanager/AdapterManagerDefault.java Wed Nov  3 01:24:18 2010
@@ -17,17 +17,15 @@
  *  under the License.
  */
 
-
 package org.apache.isis.runtime.persistence.adaptermanager;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.apache.isis.commons.ensure.Ensure.ensureThatArg;
 import static org.apache.isis.commons.ensure.Ensure.ensureThatState;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
 
 import java.util.Iterator;
 
-import org.apache.log4j.Logger;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.commons.debug.DebugInfo;
 import org.apache.isis.commons.debug.DebugString;
@@ -57,11 +55,10 @@ import org.apache.isis.runtime.persisten
 import org.apache.isis.runtime.persistence.adaptermanager.internal.PojoAdapterMap;
 import org.apache.isis.runtime.persistence.oidgenerator.OidGenerator;
 import org.apache.isis.runtime.persistence.oidgenerator.OidGeneratorAware;
+import org.apache.log4j.Logger;
 
-
-public class AdapterManagerDefault 
-		extends AdapterManagerAbstract 
-		implements AdapterFactoryAware, SpecificationLoaderAware, OidGeneratorAware, ServicesInjectorAware, DebugInfo {
+public class AdapterManagerDefault extends AdapterManagerAbstract implements AdapterFactoryAware,
+    SpecificationLoaderAware, OidGeneratorAware, ServicesInjectorAware, DebugInfo {
 
     private static final Logger LOG = Logger.getLogger(AdapterManagerDefault.class);
 
@@ -92,20 +89,21 @@ public class AdapterManagerDefault 
     /**
      * Injected using dependency injection.
      */
-	private ServicesInjector servicesInjector;
+    private ServicesInjector servicesInjector;
 
     // //////////////////////////////////////////////////////////////////
     // constructor
     // //////////////////////////////////////////////////////////////////
 
     public AdapterManagerDefault() {
-    // does nothing
+        // does nothing
     }
 
     // //////////////////////////////////////////////////////////////////
     // open, close
     // //////////////////////////////////////////////////////////////////
 
+    @Override
     public void open() {
         ensureThatState(adapterFactory, is(notNullValue()));
         ensureThatState(specificationLoader, is(notNullValue()));
@@ -123,6 +121,7 @@ public class AdapterManagerDefault 
         pojoAdapterMap.open();
     }
 
+    @Override
     public void close() {
         oidAdapterMap.close();
         pojoAdapterMap.close();
@@ -132,6 +131,7 @@ public class AdapterManagerDefault 
     // reset
     // //////////////////////////////////////////////////////////////////
 
+    @Override
     public void reset() {
         oidAdapterMap.reset();
         pojoAdapterMap.reset();
@@ -141,6 +141,7 @@ public class AdapterManagerDefault 
     // Iterable
     // //////////////////////////////////////////////////////////////////
 
+    @Override
     public Iterator<ObjectAdapter> iterator() {
         return getPojoAdapterMap().iterator();
     }
@@ -149,6 +150,7 @@ public class AdapterManagerDefault 
     // Backdoor
     // //////////////////////////////////////////////////////////////////
 
+    @Override
     public ObjectAdapter addExistingAdapter(final ObjectAdapter adapter) {
         mapAndInjectServices(adapter);
         return adapter;
@@ -158,12 +160,14 @@ public class AdapterManagerDefault 
     // Adapter lookup
     // //////////////////////////////////////////////////////////////////
 
+    @Override
     public ObjectAdapter getAdapterFor(final Object pojo) {
         ensureThatArg(pojo, is(notNullValue()));
 
         return getPojoAdapterMap().getAdapter(pojo);
     }
 
+    @Override
     public ObjectAdapter getAdapterFor(final Oid oid) {
         ensureThatArg(oid, is(notNullValue()));
         ensureMapsConsistent(oid);
@@ -181,8 +185,9 @@ public class AdapterManagerDefault 
      * <p>
      * Looks up {@link #getAdapterFor(Object)} or returns a new transient
      */
+    @Override
     public ObjectAdapter adapterFor(final Object pojo) {
-    	
+
         // attempt to locate adapter for the pojo
         final ObjectAdapter adapter = getAdapterFor(pojo);
         if (adapter != null) {
@@ -201,6 +206,7 @@ public class AdapterManagerDefault 
         return map(createOrRecreateRootAdapter(pojo));
     }
 
+    @Override
     public ObjectAdapter adapterFor(final Object pojo, final ObjectAdapter ownerAdapter, Identified identified) {
 
         // attempt to locate adapter for the pojo
@@ -208,7 +214,7 @@ public class AdapterManagerDefault 
         if (adapter != null) {
             return adapter;
         }
-        
+
         // need to create (and possibly map) the adapter.
         final ObjectSpecification noSpec = getSpecificationLoader().loadSpecification(pojo.getClass());
 
@@ -224,7 +230,7 @@ public class AdapterManagerDefault 
         if (ownerAdapter != null && identified != null) {
             if (specIsAggregated(noSpec) || referenceIsAggregated(identified)) {
                 ObjectAdapter newAdapter = createAggregatedAdapter(pojo, ownerAdapter, identified);
-				return mapAndInjectServices(newAdapter);
+                return mapAndInjectServices(newAdapter);
             }
         }
 
@@ -240,6 +246,7 @@ public class AdapterManagerDefault 
         return identified.containsFacet(AggregatedFacet.class);
     }
 
+    @Override
     public ObjectAdapter recreateRootAdapter(final Oid oid, final Object pojo) {
 
         // attempt to locate adapter for the pojo
@@ -261,6 +268,7 @@ public class AdapterManagerDefault 
     // adapter maintenance
     // //////////////////////////////////////////////////////////////////
 
+    @Override
     public void remapUpdated(final Oid oid) {
         ensureThatArg(oid.hasPrevious(), is(true));
 
@@ -297,17 +305,17 @@ public class AdapterManagerDefault 
      * Removes the specified object from both the identity-adapter map, and the pojo-adapter map.
      * 
      * <p>
-     * This indicates that the object is no longer in use, and therefore that no objects exists within the
-     * system.
+     * This indicates that the object is no longer in use, and therefore that no objects exists within the system.
      * 
      * <p>
-     * If an {@link ObjectAdapter adapter} is removed while its pojo still is referenced then a subsequent
-     * interaction of that pojo will create a different {@link ObjectAdapter adapter}, in a
-     * {@link ResolveState#TRANSIENT transient} state.
+     * If an {@link ObjectAdapter adapter} is removed while its pojo still is referenced then a subsequent interaction
+     * of that pojo will create a different {@link ObjectAdapter adapter}, in a {@link ResolveState#TRANSIENT transient}
+     * state.
      * 
      * <p>
      * TODO: should do a cascade remove of any aggregated objects.
      */
+    @Override
     public void removeAdapter(final ObjectAdapter adapter) {
         ensureMapsConsistent(adapter);
 
@@ -326,38 +334,38 @@ public class AdapterManagerDefault 
      * {@inheritDoc}
      * 
      * <p>
-     * Note that there is no management of {@link Version}s here. That is because the
-     * {@link PersistenceSession} is expected to manage this. (In practice this is done by the
-     * <tt>ObjectAdapterStore</tt> implementation delegated by the <tt>PersistenceSessionObjectStore</tt>, and
-     * propogated back to client-side as required).
+     * Note that there is no management of {@link Version}s here. That is because the {@link PersistenceSession} is
+     * expected to manage this. (In practice this is done by the <tt>ObjectAdapterStore</tt> implementation delegated by
+     * the <tt>PersistenceSessionObjectStore</tt>, and propogated back to client-side as required).
      */
+    @Override
     public void remapAsPersistent(final ObjectAdapter adapter) {
         // don't do this because the Oid has been updated already
-    	// ensureMapsConsistent(adapter);
+        // ensureMapsConsistent(adapter);
 
         AggregateAdapters aggregateAdapters = aggregateAdaptersFor(adapter);
         remapAsPersistent(aggregateAdapters);
     }
 
-	private AggregateAdapters aggregateAdaptersFor(final ObjectAdapter rootAdapter) {
+    private AggregateAdapters aggregateAdaptersFor(final ObjectAdapter rootAdapter) {
         AggregateAdapters aggregateAdapters = new AggregateAdapters(rootAdapter);
         Oid rootOid = rootAdapter.getOid();
-        
-		for(OneToManyAssociation otma: rootAdapter.getSpecification().getCollectionList()) {
-			AggregatedOid aggregatedOid = new AggregatedOid(rootOid, otma.getIdentifier());
-			ObjectAdapter collectionAdapter = getAdapterFor(aggregatedOid);
-			if (collectionAdapter != null) {
-				// collection adapters are lazily created and so there may not be one.
-				aggregateAdapters.addCollectionAdapter(otma, collectionAdapter);
-			}
-		}
-		return aggregateAdapters;
-    }
-
-	private void remapAsPersistent(final AggregateAdapters aggregateAdapters) {
-		
-		ObjectAdapter rootAdapter = aggregateAdapters.getRootAdapter();
-		// although the Oid reference doesn't change, the Oid internal values will change
+
+        for (OneToManyAssociation otma : rootAdapter.getSpecification().getCollectionList()) {
+            AggregatedOid aggregatedOid = new AggregatedOid(rootOid, otma.getIdentifier());
+            ObjectAdapter collectionAdapter = getAdapterFor(aggregatedOid);
+            if (collectionAdapter != null) {
+                // collection adapters are lazily created and so there may not be one.
+                aggregateAdapters.addCollectionAdapter(otma, collectionAdapter);
+            }
+        }
+        return aggregateAdapters;
+    }
+
+    private void remapAsPersistent(final AggregateAdapters aggregateAdapters) {
+
+        ObjectAdapter rootAdapter = aggregateAdapters.getRootAdapter();
+        // although the Oid reference doesn't change, the Oid internal values will change
         final Oid oid = rootAdapter.getOid();
         if (LOG.isDebugEnabled()) {
             LOG.debug("remapAsPersistent: " + oid);
@@ -375,61 +383,59 @@ public class AdapterManagerDefault 
         if (LOG.isDebugEnabled()) {
             LOG.debug("removing collection adapter(s) from oid map");
         }
-        for(ObjectAdapter collectionAdapter: aggregateAdapters) {
-        	Oid collectionOid = collectionAdapter.getOid();
+        for (ObjectAdapter collectionAdapter : aggregateAdapters) {
+            Oid collectionOid = collectionAdapter.getOid();
             removed = getOidAdapterMap().remove(collectionOid);
             if (!removed) {
                 LOG.warn("could not remove collectionOid: " + collectionOid);
                 // should we fail here with a more serious error?
             }
         }
-        
+
         if (LOG.isDebugEnabled()) {
-        	LOG.debug("updating the Oid");
+            LOG.debug("updating the Oid");
         }
         getOidGenerator().convertTransientToPersistentOid(oid);
 
-        
         // re-map the root adapter
         if (LOG.isDebugEnabled()) {
             LOG.debug("re-adding into maps; oid is now: " + oid);
         }
         getOidAdapterMap().add(oid, rootAdapter);
 
-
         // re-map the collection adapters
         if (LOG.isDebugEnabled()) {
-        	LOG.debug("re-adding collection adapter(s) to oid map");
+            LOG.debug("re-adding collection adapter(s) to oid map");
         }
-        for(ObjectAdapter collectionAdapter: aggregateAdapters) {
-        	AggregatedOid previousCollectionOid = (AggregatedOid) collectionAdapter.getOid();
+        for (ObjectAdapter collectionAdapter : aggregateAdapters) {
+            AggregatedOid previousCollectionOid = (AggregatedOid) collectionAdapter.getOid();
             getOidAdapterMap().add(previousCollectionOid, collectionAdapter);
         }
 
         // replace any pojos if required, remapping in the pojo map
         if (LOG.isDebugEnabled()) {
-        	LOG.debug("replacing any collection pojos, remapping in pojo map");
+            LOG.debug("replacing any collection pojos, remapping in pojo map");
         }
-        for(OneToManyAssociation otma: aggregateAdapters.getCollections()) {
-        	ObjectAdapter collectionAdapter = aggregateAdapters.getCollectionAdapter(otma);
-        	
-        	Object collectionPojoWrappedByAdapter = collectionAdapter.getObject();
-        	Object collectionPojoOnRootPojo = getCollectionPojo(otma, rootAdapter);
-        	
-        	if (collectionPojoOnRootPojo != collectionPojoWrappedByAdapter) {
-        		getPojoAdapterMap().remove(collectionAdapter);
-        		collectionAdapter.replacePojo(collectionPojoOnRootPojo);
-        		getPojoAdapterMap().add(collectionPojoOnRootPojo, collectionAdapter);
-        	}
+        for (OneToManyAssociation otma : aggregateAdapters.getCollections()) {
+            ObjectAdapter collectionAdapter = aggregateAdapters.getCollectionAdapter(otma);
+
+            Object collectionPojoWrappedByAdapter = collectionAdapter.getObject();
+            Object collectionPojoOnRootPojo = getCollectionPojo(otma, rootAdapter);
+
+            if (collectionPojoOnRootPojo != collectionPojoWrappedByAdapter) {
+                getPojoAdapterMap().remove(collectionAdapter);
+                collectionAdapter.replacePojo(collectionPojoOnRootPojo);
+                getPojoAdapterMap().add(collectionPojoOnRootPojo, collectionAdapter);
+            }
         }
-        
+
         // update the adapter's state
         rootAdapter.changeState(ResolveState.RESOLVED);
 
         if (LOG.isDebugEnabled()) {
             LOG.debug("made persistent " + rootAdapter + "; was " + oid.getPrevious());
         }
-	}
+    }
 
     public Object getCollectionPojo(final OneToManyAssociation association, final ObjectAdapter ownerAdapter) {
         final PropertyAccessorFacet accessor = association.getFacet(PropertyAccessorFacet.class);
@@ -443,10 +449,11 @@ public class AdapterManagerDefault 
     /**
      * For testing purposes only.
      */
+    @Override
     public ObjectAdapter testCreateTransient(final Object pojo, final Oid oid) {
         if (!oid.isTransient()) {
             throw new IllegalArgumentException(
-                    "Oid should be transient; use standard API to recreate adapters for persistent Oids");
+                "Oid should be transient; use standard API to recreate adapters for persistent Oids");
         }
         return map(createOrRecreateRootAdapter(pojo, oid));
     }
@@ -467,39 +474,39 @@ public class AdapterManagerDefault 
 
     /**
      * The default implementation will always create a new transient {@link ObjectAdapter adapter}, using the
-     * {@link OidGenerator}. However, the method has <tt>protected</tt> visibility so can be overridden if
-     * required.  For example, some object stores (eg Hibernate) may be able to infer from the pojo itself what the
-     * {@link Oid} and persistence state of the object is.
+     * {@link OidGenerator}. However, the method has <tt>protected</tt> visibility so can be overridden if required. For
+     * example, some object stores (eg Hibernate) may be able to infer from the pojo itself what the {@link Oid} and
+     * persistence state of the object is.
      */
-	protected Oid createOid(final Object pojo) {
-		return getOidGenerator().createTransientOid(pojo);
-	}
+    protected Oid createOid(final Object pojo) {
+        return getOidGenerator().createTransientOid(pojo);
+    }
 
     /**
-     * Creates an {@link ObjectAdapter adapter} with an {@link AggregatedOid} (so that its version and its
-     * persistence are the same as its owning parent).
+     * Creates an {@link ObjectAdapter adapter} with an {@link AggregatedOid} (so that 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}.
      * 
      * <p>
-     * Helper method, but <tt>protected</tt> so can be overridden if required.  For example, some object stores
-     * (specifically, the XML object store at time of writing) do not support aggregated Oids for anything other
-     * than collections.
+     * Helper method, but <tt>protected</tt> so can be overridden if required. For example, some object stores
+     * (specifically, the XML object store at time of writing) do not support aggregated Oids for anything other than
+     * collections.
      */
     protected ObjectAdapter createAggregatedAdapter(Object pojo, ObjectAdapter ownerAdapter, Identified identified) {
-    	
-    	Identifier identifier = identified.getIdentifier();
-    	ensureMapsConsistent(ownerAdapter);
+
+        Identifier identifier = identified.getIdentifier();
+        ensureMapsConsistent(ownerAdapter);
         Assert.assertNotNull(pojo);
 
         // persistence of aggregated follows the parent
         final Oid aggregatedOid = new AggregatedOid(ownerAdapter.getOid(), identifier);
         ObjectAdapter aggregatedAdapter = createOrRecreateAdapter(pojo, aggregatedOid);
-        
-		// we copy over the type onto the adapter itself
-		// [not sure why this is really needed, surely we have enough info in the adapter
-		//  to look this up on the fly?]
+
+        // we copy over the type onto the adapter itself
+        // [not sure why this is really needed, surely we have enough info in the adapter
+        // to look this up on the fly?]
         aggregatedAdapter.setTypeOfFacet(identified.getFacet(TypeOfFacet.class));
 
         // same locking as parent
@@ -512,59 +519,56 @@ public class AdapterManagerDefault 
      * Creates a {@link ObjectAdapter adapter} with no {@link Oid}.
      * 
      * <p>
-     * Should only be called if the pojo is known not to be {@link #getAdapterFor(Object) mapped}, and for
-     * immutable value types referenced.
+     * Should only be called if the pojo is known not to be {@link #getAdapterFor(Object) mapped}, and for immutable
+     * value types referenced.
      */
     private ObjectAdapter createStandaloneAdapter(Object pojo) {
         return createOrRecreateAdapter(pojo, null);
     }
 
     /**
-     * Helper method that creates but does not {@link #mapAndInjectServices(ObjectAdapter) add}) the root 
-     * {@link ObjectAdapter adapter} along with adapters for all collections,  an
-     * {@link ObjectAdapter adapter}, and sets its {@link ResolveState} based on the {@link Oid}.
+     * Helper method that creates but does not {@link #mapAndInjectServices(ObjectAdapter) add}) the root
+     * {@link ObjectAdapter adapter} along with adapters for all collections, an {@link ObjectAdapter adapter}, and sets
+     * its {@link ResolveState} based on the {@link Oid}.
      * 
      * <p>
      * The {@link ResolveState} state will be:
      * <ul>
      * <li> {@link ResolveState#TRANSIENT} if the {@link Oid} is {@link Oid#isTransient() transient}.
-     * <li> {@link ResolveState#GHOST} if the {@link Oid} is persistent (not {@link Oid#isTransient()
-     * transient}).
+     * <li> {@link ResolveState#GHOST} if the {@link Oid} is persistent (not {@link Oid#isTransient() transient}).
      * <li> {@link ResolveState#VALUE} if no {@link Oid} was supplied.
      * </ul>
      */
     private AggregateAdapters createOrRecreateRootAdapter(final Object pojo, final Oid oid) {
         ObjectAdapter rootAdapter = createOrRecreateAdapter(pojo, oid);
-        
+
         AggregateAdapters aggregateAdapters = new AggregateAdapters(rootAdapter);
 
-        // failed experiment to try to ensure that all adapters are loaded for the root; 
+        // failed experiment to try to ensure that all adapters are loaded for the root;
         // left in in case we want to re-instate
-		// eagerlyCreateCollectionAdapters(rootAdapter, aggregateAdapters);
-		return aggregateAdapters;
+        // eagerlyCreateCollectionAdapters(rootAdapter, aggregateAdapters);
+        return aggregateAdapters;
     }
 
-	@SuppressWarnings("unused")
-	private void eagerlyCreateCollectionAdapters(ObjectAdapter rootAdapter,
-			AggregateAdapters aggregateAdapters) {
-		for(OneToManyAssociation otma: rootAdapter.getSpecification().getCollectionList()) {
-			Object referencedCollection = getCollectionPojo(otma, rootAdapter);
-			ObjectAdapter collectionAdapter = 
-				createAggregatedAdapter(referencedCollection, rootAdapter, otma);
-			
-			aggregateAdapters.addCollectionAdapter(otma, collectionAdapter);
-		}
-	}
+    @SuppressWarnings("unused")
+    private void eagerlyCreateCollectionAdapters(ObjectAdapter rootAdapter, AggregateAdapters aggregateAdapters) {
+        for (OneToManyAssociation otma : rootAdapter.getSpecification().getCollectionList()) {
+            Object referencedCollection = getCollectionPojo(otma, rootAdapter);
+            ObjectAdapter collectionAdapter = createAggregatedAdapter(referencedCollection, rootAdapter, otma);
 
-	private ObjectAdapter createOrRecreateAdapter(final Object pojo, final Oid oid) {
-		ObjectAdapter adapter = getAdapterFactory().createAdapter(pojo, oid);
+            aggregateAdapters.addCollectionAdapter(otma, collectionAdapter);
+        }
+    }
+
+    private ObjectAdapter createOrRecreateAdapter(final Object pojo, final Oid oid) {
+        ObjectAdapter adapter = getAdapterFactory().createAdapter(pojo, oid);
         if (oid == null) {
             adapter.changeState(ResolveState.VALUE);
         } else {
             adapter.changeState(oid.isTransient() ? ResolveState.TRANSIENT : ResolveState.GHOST);
         }
         return adapter;
-	}
+    }
 
     // //////////////////////////////////////////////////////////////////////////
     // Helpers: map & unmap
@@ -572,14 +576,14 @@ public class AdapterManagerDefault 
 
     private ObjectAdapter map(final AggregateAdapters aggregateAdapters) {
         Assert.assertNotNull(aggregateAdapters);
-    	ObjectAdapter adapter = aggregateAdapters.getRootAdapter();
-    	mapAndInjectServices(adapter);
-    	for(ObjectAdapter collectionAdapter: aggregateAdapters) {
-    		mapAndInjectServices(collectionAdapter);
-    	}
-    	return adapter;
+        ObjectAdapter adapter = aggregateAdapters.getRootAdapter();
+        mapAndInjectServices(adapter);
+        for (ObjectAdapter collectionAdapter : aggregateAdapters) {
+            mapAndInjectServices(collectionAdapter);
+        }
+        return adapter;
     }
-    
+
     private ObjectAdapter mapAndInjectServices(final ObjectAdapter adapter) {
         Assert.assertNotNull(adapter);
         final Object pojo = adapter.getObject();
@@ -593,31 +597,29 @@ public class AdapterManagerDefault 
             LOG.debug("adding identity for adapter with oid=" + adapter.getOid());
         }
 
-        // new design... always map [[NAME]] provided not standalone.
+        // new design... always map ObjectAdapter provided not standalone.
         if (adapter.getResolveState().isValue()) {
             if (LOG.isDebugEnabled()) {
                 LOG.debug("not mapping value adapter");
             }
-    		servicesInjector.injectDependencies(pojo);
+            servicesInjector.injectDependencies(pojo);
             return adapter;
         }
 
         // add all aggregated collections
         ObjectSpecification noSpec = adapter.getSpecification();
-        if (!adapter.isAggregated() || 
-        	 adapter.isAggregated() && !noSpec.isImmutable()) {
+        if (!adapter.isAggregated() || adapter.isAggregated() && !noSpec.isImmutable()) {
             getPojoAdapterMap().add(pojo, adapter);
         }
 
         // order is important - add to pojo map first, then identity map
         getOidAdapterMap().add(adapter.getOid(), adapter);
 
-		// must inject after mapping, otherwise infinite loop 
-		servicesInjector.injectDependencies(pojo);
+        // must inject after mapping, otherwise infinite loop
+        servicesInjector.injectDependencies(pojo);
 
         return adapter;
     }
-    
 
     private void unmap(final ObjectAdapter adapter) {
         ensureMapsConsistent(adapter);
@@ -672,15 +674,16 @@ public class AdapterManagerDefault 
         Object adapterPojo = adapter.getObject();
         ObjectAdapter adapterAccordingToPojoAdapterMap = getPojoAdapterMap().getAdapter(adapterPojo);
         ensureThatArg(adapter, is(adapterAccordingToPojoAdapterMap), "mismatch in PojoAdapterMap: adapter's Pojo: "
-                + adapterPojo + ", \n" + "provided adapter: " + adapter + "; \n" + " but map's adapter was : "
-                + adapterAccordingToPojoAdapterMap);
+            + adapterPojo + ", \n" + "provided adapter: " + adapter + "; \n" + " but map's adapter was : "
+            + adapterAccordingToPojoAdapterMap);
     }
 
     private void ensureOidAdapterMapConsistent(final ObjectAdapter adapter) {
         Oid adapterOid = adapter.getOid();
         ObjectAdapter adapterAccordingToOidAdapterMap = getOidAdapterMap().getAdapter(adapterOid);
         ensureThatArg(adapter, is(adapterAccordingToOidAdapterMap), "mismatch in OidAdapter map: " + "adapter's Oid: "
-                + adapterOid + ", " + "provided adapter: " + adapter + "; " + "map's adapter: " + adapterAccordingToOidAdapterMap);
+            + adapterOid + ", " + "provided adapter: " + adapter + "; " + "map's adapter: "
+            + adapterAccordingToOidAdapterMap);
     }
 
     // //////////////////////////////////////////////////////////////////
@@ -701,7 +704,7 @@ public class AdapterManagerDefault 
     // if (oid != null) {
     // return adapterFor(domainObject, oid);
     // }
-    //        
+    //
     // if (domainObject == null) {
     // return null;
     // }
@@ -738,7 +741,7 @@ public class AdapterManagerDefault 
     // LOG.debug("creating adapter (transient) for adapter with oid=" + adapter.getOid());
     // }
     // identityMap.addAdapter(adapter);
-    //        
+    //
     // final ObjectSpecification specification = adapter.getSpecification();
     // if (specification.isAggregated()) {
     // adapter.changeState(ResolveState.STANDALONE);
@@ -754,10 +757,10 @@ public class AdapterManagerDefault 
     // private ObjectAdapter adapterFor(final Object domainObject, final Oid oid) {
     // ObjectAdapter adapter = getAdapterFor(oid);
     // if (adapter != null) {
-    //            
+    //
     // // TODO: REVIEW: was tripping the exception setting a Boolean on a @NotPersistable.
     // // is it safe for immutable values to use equals(.) instead?
-    //            
+    //
     // ObjectSpecification noSpec = adapter.getSpecification();
     // ValueFacet valueFacet = noSpec.getFacet(ValueFacet.class);
     // ImmutableFacet immutableFacet = valueFacet != null? valueFacet.getFacet(ImmutableFacet.class): null;
@@ -775,7 +778,7 @@ public class AdapterManagerDefault 
     // }
     // return adapter;
     // }
-    //        
+    //
     // adapter = getAdapterFor(domainObject);
     // if (adapter != null) {
     // if (!adapter.getOid().equals(oid)) {
@@ -798,10 +801,12 @@ public class AdapterManagerDefault 
     // debug
     // //////////////////////////////////////////////////////////////////
 
+    @Override
     public String debugTitle() {
         return "Identity map (adapter manager)";
     }
 
+    @Override
     public void debugData(final DebugString debug) {
         debug.appendTitle(pojoAdapterMap.debugTitle());
         pojoAdapterMap.debugData(debug);
@@ -812,7 +817,6 @@ public class AdapterManagerDefault 
 
     }
 
-
     // //////////////////////////////////////////////////////////////////////////
     // Optionally Injected: OidAdapterMap
     // //////////////////////////////////////////////////////////////////////////
@@ -863,6 +867,7 @@ public class AdapterManagerDefault 
     /**
      * Injected.
      */
+    @Override
     public void setAdapterFactory(AdapterFactory adapterFactory) {
         this.adapterFactory = adapterFactory;
     }
@@ -877,6 +882,7 @@ public class AdapterManagerDefault 
     /**
      * Injected.
      */
+    @Override
     public void setSpecificationLoader(SpecificationLoader specificationLoader) {
         this.specificationLoader = specificationLoader;
     }
@@ -891,6 +897,7 @@ public class AdapterManagerDefault 
     /**
      * Injected.
      */
+    @Override
     public void setOidGenerator(OidGenerator oidGenerator) {
         this.oidGenerator = oidGenerator;
     }
@@ -898,9 +905,9 @@ public class AdapterManagerDefault 
     /**
      * Injected.
      */
-	public void setServicesInjector(ServicesInjector servicesInjector) {
-		this.servicesInjector = servicesInjector;
-	}
+    @Override
+    public void setServicesInjector(ServicesInjector servicesInjector) {
+        this.servicesInjector = servicesInjector;
+    }
 
 }
-

Modified: incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/objectstore/ObjectStorePersistence.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/objectstore/ObjectStorePersistence.java?rev=1030308&r1=1030307&r2=1030308&view=diff
==============================================================================
--- incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/objectstore/ObjectStorePersistence.java (original)
+++ incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/objectstore/ObjectStorePersistence.java Wed Nov  3 01:24:18 2010
@@ -17,7 +17,6 @@
  *  under the License.
  */
 
-
 package org.apache.isis.runtime.persistence.objectstore;
 
 import java.util.List;
@@ -38,100 +37,92 @@ import org.apache.isis.runtime.persisten
 import org.apache.isis.runtime.persistence.objectstore.transaction.SaveObjectCommand;
 import org.apache.isis.runtime.persistence.query.PersistenceQuery;
 
-
 public interface ObjectStorePersistence extends DebugInfo, SessionScopedComponent, NamedComponent {
 
-    
     /**
      * Determine if the object store has been initialized with its set of start up objects.
      * 
      * <p>
-     * This method is called only once after the {@link #init()} has been called. If it returns <code>false</code>
-     * then the framework will run the fixtures to initialise the object store.
+     * This method is called only once after the {@link #init()} has been called. If it returns <code>false</code> then
+     * the framework will run the fixtures to initialise the object store.
      */
     boolean isFixturesInstalled();
 
-
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
     // reset
-    /////////////////////////////////////////////////////////
-    
+    // ///////////////////////////////////////////////////////
+
     /**
      * TODO: move to {@link PersistenceSessionFactory} ??
      */
     void reset();
 
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
     // Command Creation
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
 
     /**
-     * Makes a [[NAME]] persistent. The specified object should be stored away via this object store's
-     * persistence mechanism, and have an new and unique OID assigned to it (by calling the object's
-     * <code>setOid</code> method). The object, should also be added to the cache as the object is
-     * implicitly 'in use'.
+     * Makes an {@link ObjectAdapter} persistent. The specified object should be stored away via this object store's
+     * persistence mechanism, and have an new and unique OID assigned to it (by calling the object's <code>setOid</code>
+     * method). The object, should also be added to the cache as the object is implicitly 'in use'.
      * 
      * <p>
-     * If the object has any associations then each of these, where they aren't already persistent, should
-     * also be made persistent by recursively calling this method.
+     * If the object has any associations then each of these, where they aren't already persistent, should also be made
+     * persistent by recursively calling this method.
      * </p>
      * 
      * <p>
-     * If the object to be persisted is a collection, then each element of that collection, that is not
-     * already persistent, should be made persistent by recursively calling this method.
+     * If the object to be persisted is a collection, then each element of that collection, that is not already
+     * persistent, should be made persistent by recursively calling this method.
      * </p>
      * 
      */
     CreateObjectCommand createCreateObjectCommand(ObjectAdapter object);
 
     /**
-     * Persists the specified object's state. Essentially the data held by the persistence mechanism should be
-     * updated to reflect the state of the specified objects. Once updated, the object store should issue a
-     * notification to all of the object's users via the <class>UpdateNotifier </class> object. This can be
-     * achieved simply, if extending the <class> AbstractObjectStore </class> by calling its
-     * <method>broadcastObjectUpdate </method> method.
+     * Persists the specified object's state. Essentially the data held by the persistence mechanism should be updated
+     * to reflect the state of the specified objects. Once updated, the object store should issue a notification to all
+     * of the object's users via the <class>UpdateNotifier </class> object. This can be achieved simply, if extending
+     * the <class> AbstractObjectStore </class> by calling its <method>broadcastObjectUpdate </method> method.
      */
     SaveObjectCommand createSaveObjectCommand(ObjectAdapter object);
 
-
     /**
-     * Removes the specified object from the object store. The specified object's data should be removed from
-     * the persistence mechanism and, if it is cached (which it probably is), removed from the cache also.
+     * Removes the specified object from the object store. The specified object's data should be removed from the
+     * persistence mechanism and, if it is cached (which it probably is), removed from the cache also.
      */
     DestroyObjectCommand createDestroyObjectCommand(ObjectAdapter object);
 
-
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
     // Command Execution
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
 
     void execute(final List<PersistenceCommand> commands);
 
-
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
     // getObject
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
 
     /**
-     * Retrieves the object identified by the specified OID from the object store. The cache should be checked
-     * first and, if the object is cached, the cached version should be returned. It is important that if this
-     * method is called again, while the originally returned object is in working memory, then this method
-     * must return that same Java object.
+     * Retrieves the object identified by the specified OID from the object store. The cache should be checked first
+     * and, if the object is cached, the cached version should be returned. It is important that if this method is
+     * called again, while the originally returned object is in working memory, then this method must return that same
+     * Java object.
      * 
      * <p>
-     * Assuming that the object is not cached then the data for the object should be retreived from the
-     * persistence mechanism and the object recreated (as describe previously). The specified OID should then
-     * be assigned to the recreated object by calling its <method>setOID </method>. Before returning the
-     * object its resolved flag should also be set by calling its <method>setResolved </method> method as
-     * well.
+     * Assuming that the object is not cached then the data for the object should be retreived from the persistence
+     * mechanism and the object recreated (as describe previously). The specified OID should then be assigned to the
+     * recreated object by calling its <method>setOID </method>. Before returning the object its resolved flag should
+     * also be set by calling its <method>setResolved </method> method as well.
      * 
-     * <p>If the persistence mechanism does not known of an object with the specified {@link Oid} then a
+     * <p>
+     * If the persistence mechanism does not known of an object with the specified {@link Oid} then a
      * {@link ObjectNotFoundException} should be thrown.
      * 
-     * <para>Note that the OID could be for an internal collection, and is therefore related to the parent
-     * object (using a <class>CompositeOid </class>). The elements for an internal collection are commonly
-     * stored as part of the parent object, so to get element the parent object needs to be retrieved first,
-     * and the internal collection can be got from that. </para>
+     * <para>Note that the OID could be for an internal collection, and is therefore related to the parent object (using
+     * a <class>CompositeOid </class>). The elements for an internal collection are commonly stored as part of the
+     * parent object, so to get element the parent object needs to be retrieved first, and the internal collection can
+     * be got from that. </para>
      * 
      * <p>
      * Returns the stored ObjectAdapter object .
@@ -144,19 +135,17 @@ public interface ObjectStorePersistence 
      */
     ObjectAdapter getObject(Oid oid, ObjectSpecification hint);
 
-    
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
     // getInstances, hasInstances
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
 
     ObjectAdapter[] getInstances(PersistenceQuery persistenceQuery);
 
     boolean hasInstances(ObjectSpecification specification);
 
-    
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
     // resolveField, resolveImmediately
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
 
     /**
      * Called by the resolveEagerly method in ObjectAdapterManager.
@@ -171,11 +160,10 @@ public interface ObjectStorePersistence 
      * @see PersistenceSession#resolveImmediately(ObjectAdapter)
      */
     void resolveImmediately(ObjectAdapter object);
-    
 
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
     // Services
-    /////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////
 
     void registerService(String name, Oid oid);
 
@@ -184,8 +172,4 @@ public interface ObjectStorePersistence 
      */
     Oid getOidForService(String name);
 
-
-
-
-
 }

Modified: incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/objectstore/PersistenceSessionObjectStore.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/objectstore/PersistenceSessionObjectStore.java?rev=1030308&r1=1030307&r2=1030308&view=diff
==============================================================================
--- incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/objectstore/PersistenceSessionObjectStore.java (original)
+++ incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/objectstore/PersistenceSessionObjectStore.java Wed Nov  3 01:24:18 2010
@@ -17,13 +17,18 @@
  *  under the License.
  */
 
-
 package org.apache.isis.runtime.persistence.objectstore;
 
+import static org.apache.isis.commons.ensure.Ensure.ensureThatArg;
+import static org.apache.isis.commons.ensure.Ensure.ensureThatState;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.CoreMatchers.nullValue;
+
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.log4j.Logger;
 import org.apache.isis.commons.debug.DebugString;
 import org.apache.isis.commons.ensure.Assert;
 import org.apache.isis.commons.lang.ToString;
@@ -62,14 +67,7 @@ import org.apache.isis.runtime.transacti
 import org.apache.isis.runtime.transaction.TransactionalClosureAbstract;
 import org.apache.isis.runtime.transaction.TransactionalClosureWithReturnAbstract;
 import org.apache.isis.runtime.transaction.updatenotifier.UpdateNotifier;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.apache.isis.commons.ensure.Ensure.ensureThatArg;
-import static org.apache.isis.commons.ensure.Ensure.ensureThatState;
-
+import org.apache.log4j.Logger;
 
 public class PersistenceSessionObjectStore extends PersistenceSessionAbstract implements ToPersistObjectSet {
     private static final Logger LOG = Logger.getLogger(PersistenceSessionObjectStore.class);
@@ -78,18 +76,14 @@ public class PersistenceSessionObjectSto
     private final Map<String, Oid> services = new HashMap<String, Oid>();
 
     /**
-     * Initialize the object store so that calls to this object store access persisted objects and persist
-     * changes to the object that are saved.
+     * Initialize the object store so that calls to this object store access persisted objects and persist changes to
+     * the object that are saved.
      */
-    public PersistenceSessionObjectStore(
-            final PersistenceSessionFactory persistenceSessionFactory,
-            final AdapterFactory adapterFactory,
-            final ObjectFactory objectFactory,
-            final ServicesInjector servicesInjector,
-            final OidGenerator oidGenerator,
-            final AdapterManagerExtended identityMap,
-            final PersistAlgorithm persistAlgorithm,
-            final ObjectStorePersistence objectStore) {
+    public PersistenceSessionObjectStore(final PersistenceSessionFactory persistenceSessionFactory,
+        final AdapterFactory adapterFactory, final ObjectFactory objectFactory,
+        final ServicesInjector servicesInjector, final OidGenerator oidGenerator,
+        final AdapterManagerExtended identityMap, final PersistAlgorithm persistAlgorithm,
+        final ObjectStorePersistence objectStore) {
 
         super(persistenceSessionFactory, adapterFactory, objectFactory, servicesInjector, oidGenerator, identityMap);
         if (LOG.isDebugEnabled()) {
@@ -125,15 +119,16 @@ public class PersistenceSessionObjectSto
     }
 
     /**
-     * Returns the cached value of {@link ObjectStore#isFixturesInstalled() whether fixtures are installed}
-     * from the {@link PersistenceSessionFactory} (provided it implements {@link FixturesInstalledFlag}),
-     * otherwise queries {@link ObjectStore} directly.
+     * Returns the cached value of {@link ObjectStore#isFixturesInstalled() whether fixtures are installed} from the
+     * {@link PersistenceSessionFactory} (provided it implements {@link FixturesInstalledFlag}), otherwise queries
+     * {@link ObjectStore} directly.
      * <p>
-     * This caching is important because if we've determined, for a given run, that fixtures are not
-     * installed, then we don't want to change our mind by asking the object store again in another session.
+     * This caching is important because if we've determined, for a given run, that fixtures are not installed, then we
+     * don't want to change our mind by asking the object store again in another session.
      * 
      * @see FixturesInstalledFlag
      */
+    @Override
     public boolean isFixturesInstalled() {
         PersistenceSessionFactory persistenceSessionFactory = getPersistenceSessionFactory();
         if (persistenceSessionFactory instanceof FixturesInstalledFlag) {
@@ -169,6 +164,7 @@ public class PersistenceSessionObjectSto
     // loadObject, reload
     // ///////////////////////////////////////////////////////////////////////////
 
+    @Override
     public ObjectAdapter loadObject(final Oid oid, final ObjectSpecification hintSpec) {
         ensureThatArg(oid, is(notNullValue()));
         ensureThatArg(hintSpec, is(notNullValue()));
@@ -184,22 +180,27 @@ public class PersistenceSessionObjectSto
     private ObjectAdapter loadObjectFromPersistenceLayer(final Oid oid, final ObjectSpecification hintSpec) {
         // the object store will map for us, using its hydrator (calls back
         // to #recreateAdapter)
-        return getTransactionManager().executeWithinTransaction(new TransactionalClosureWithReturnAbstract<ObjectAdapter>() {
-            public ObjectAdapter execute() {
-                return objectStore.getObject(oid, hintSpec);
-            }
-        });
+        return getTransactionManager().executeWithinTransaction(
+            new TransactionalClosureWithReturnAbstract<ObjectAdapter>() {
+                @Override
+                public ObjectAdapter execute() {
+                    return objectStore.getObject(oid, hintSpec);
+                }
+            });
     }
 
     /**
      * Does nothing.
      */
-    public void reload(final ObjectAdapter object) {}
+    @Override
+    public void reload(final ObjectAdapter object) {
+    }
 
     // ///////////////////////////////////////////////////////////////////////////
     // resolveImmediately, resolveField
     // ///////////////////////////////////////////////////////////////////////////
 
+    @Override
     public void resolveImmediately(final ObjectAdapter adapter) {
         // synchronize on the current session because getting race
         // conditions, I think between different UI threads when running
@@ -216,33 +217,39 @@ public class PersistenceSessionObjectSto
             if (LOG.isInfoEnabled()) {
                 // don't log object - its toString() may use the unresolved field, or unresolved collection
                 LOG.info("resolved: " + adapter.getSpecification().getShortName() + " " + resolveState.code() + " "
-                        + adapter.getOid());
+                    + adapter.getOid());
             }
         }
     }
 
     private void resolveImmediatelyFromPersistenceLayer(final ObjectAdapter adapter) {
         getTransactionManager().executeWithinTransaction(new TransactionalClosureAbstract() {
+            @Override
             public void preExecute() {
                 CallbackUtils.callCallback(adapter, LoadingCallbackFacet.class);
             }
 
+            @Override
             public void execute() {
                 objectStore.resolveImmediately(adapter);
             }
 
+            @Override
             public void onSuccess() {
                 CallbackUtils.callCallback(adapter, LoadedCallbackFacet.class);
             }
 
+            @Override
             public void onFailure() {
-            // TODO: should we do something here?
+                // TODO: should we do something here?
             }
         });
     }
 
+    @Override
     public void resolveField(final ObjectAdapter objectAdapter, final ObjectAssociation field) {
-        if (field.isNotPersisted() || field.isOneToManyAssociation() || field.getSpecification().isCollectionOrIsAggregated()) {
+        if (field.isNotPersisted() || field.isOneToManyAssociation()
+            || field.getSpecification().isCollectionOrIsAggregated()) {
             return;
         }
         final ObjectAdapter referenceAdapter = field.get(objectAdapter);
@@ -256,14 +263,15 @@ public class PersistenceSessionObjectSto
             // don't log object - it's toString() may use the unresolved field
             // or unresolved collection
             LOG.info("resolve field " + objectAdapter.getSpecification().getShortName() + "." + field.getId() + ": "
-                    + referenceAdapter.getSpecification().getShortName() + " " + referenceAdapter.getResolveState().code() + " "
-                    + referenceAdapter.getOid());
+                + referenceAdapter.getSpecification().getShortName() + " " + referenceAdapter.getResolveState().code()
+                + " " + referenceAdapter.getOid());
         }
         resolveFieldFromPersistenceLayer(objectAdapter, field);
     }
 
     private void resolveFieldFromPersistenceLayer(final ObjectAdapter objectAdapter, final ObjectAssociation field) {
         getTransactionManager().executeWithinTransaction(new TransactionalClosureAbstract() {
+            @Override
             public void execute() {
                 objectStore.resolveField(objectAdapter, field);
             }
@@ -275,20 +283,21 @@ public class PersistenceSessionObjectSto
     // ////////////////////////////////////////////////////////////////
 
     /**
-     * Makes a [[NAME]] persistent. The specified object should be stored away via this object store's
-     * persistence mechanism, and have an new and unique OID assigned to it. The object, should also be added
-     * to the {@link AdapterManager} as the object is implicitly 'in use'.
+     * Makes an {@link ObjectAdapter} persistent. The specified object should be stored away via this object store's
+     * persistence mechanism, and have an new and unique OID assigned to it. The object, should also be added to the
+     * {@link AdapterManager} as the object is implicitly 'in use'.
      * 
      * <p>
-     * If the object has any associations then each of these, where they aren't already persistent, should
-     * also be made persistent by recursively calling this method.
+     * If the object has any associations then each of these, where they aren't already persistent, should also be made
+     * persistent by recursively calling this method.
      * 
      * <p>
-     * If the object to be persisted is a collection, then each element of that collection, that is not
-     * already persistent, should be made persistent by recursively calling this method.
+     * If the object to be persisted is a collection, then each element of that collection, that is not already
+     * persistent, should be made persistent by recursively calling this method.
      * 
      * @see #remapAsPersistent(ObjectAdapter)
      */
+    @Override
     public void makePersistent(final ObjectAdapter adapter) {
         if (adapter.isPersistent()) {
             throw new NotPersistableException("Object already persistent: " + adapter);
@@ -308,21 +317,22 @@ public class PersistenceSessionObjectSto
         getTransactionManager().executeWithinTransaction(new TransactionalClosureAbstract() {
             @Override
             public void preExecute() {
-            // callbacks are called by the persist algorithm
+                // callbacks are called by the persist algorithm
             }
 
+            @Override
             public void execute() {
                 persistAlgorithm.makePersistent(adapter, PersistenceSessionObjectStore.this);
             }
 
             @Override
             public void onSuccess() {
-            // callbacks are called by the persist algorithm
+                // callbacks are called by the persist algorithm
             }
 
             @Override
             public void onFailure() {
-            // TODO: some sort of callback?
+                // TODO: some sort of callback?
             }
         });
     }
@@ -331,6 +341,7 @@ public class PersistenceSessionObjectSto
     // objectChanged
     // ///////////////////////////////////////////////////////////////////////////
 
+    @Override
     public void objectChanged(final ObjectAdapter adapter) {
 
         if (adapter.isTransient()) {
@@ -370,17 +381,20 @@ public class PersistenceSessionObjectSto
                 CallbackUtils.callCallback(adapter, UpdatingCallbackFacet.class);
             }
 
+            @Override
             public void execute() {
                 SaveObjectCommand saveObjectCommand = objectStore.createSaveObjectCommand(adapter);
                 getTransactionManager().addCommand(saveObjectCommand);
             }
 
+            @Override
             public void onSuccess() {
                 CallbackUtils.callCallback(adapter, UpdatedCallbackFacet.class);
             }
 
+            @Override
             public void onFailure() {
-            // TODO: should we do something here?
+                // TODO: should we do something here?
             }
         });
         getUpdateNotifier().addChangedObject(adapter);
@@ -391,9 +405,10 @@ public class PersistenceSessionObjectSto
     // ///////////////////////////////////////////////////////////////////////////
 
     /**
-     * Removes the specified object from the system. The specified object's data should be removed from the
-     * persistence mechanism.
+     * Removes the specified object from the system. The specified object's data should be removed from the persistence
+     * mechanism.
      */
+    @Override
     public void destroyObject(final ObjectAdapter adapter) {
         if (LOG.isInfoEnabled()) {
             LOG.info("destroyObject " + adapter);
@@ -409,17 +424,20 @@ public class PersistenceSessionObjectSto
                 CallbackUtils.callCallback(adapter, RemovingCallbackFacet.class);
             }
 
+            @Override
             public void execute() {
                 final DestroyObjectCommand command = objectStore.createDestroyObjectCommand(adapter);
                 getTransactionManager().addCommand(command);
             }
 
+            @Override
             public void onSuccess() {
                 CallbackUtils.callCallback(adapter, RemovedCallbackFacet.class);
             }
 
+            @Override
             public void onFailure() {
-            // TODO: some sort of callback?
+                // TODO: some sort of callback?
             }
         });
     }
@@ -429,24 +447,25 @@ public class PersistenceSessionObjectSto
     // ///////////////////////////////////////////////////////////////////////////
 
     /**
-     * Callback from the {@link PersistAlgorithm} (or equivalent; some object stores such as Hibernate will
-     * use listeners instead) to indicate that the {@link ObjectAdapter adapter} is persisted, and the adapter
-     * maps should be updated.
+     * Callback from the {@link PersistAlgorithm} (or equivalent; some object stores such as Hibernate will use
+     * listeners instead) to indicate that the {@link ObjectAdapter adapter} is persisted, and the adapter maps should
+     * be updated.
      * 
      * <p>
-     * The object store is expected to have already updated the {@link Oid} state and the {@link ResolveState}
-     * . Some object stores (again, we're thinking Hibernate here) might also have updated collections, both
-     * the Oid of the collection and the pojo wrapped by the adapter.
+     * The object store is expected to have already updated the {@link Oid} state and the {@link ResolveState} . Some
+     * object stores (again, we're thinking Hibernate here) might also have updated collections, both the Oid of the
+     * collection and the pojo wrapped by the adapter.
      * 
      * <p>
      * The {@link PersistAlgorithm} is called from {@link #makePersistent(ObjectAdapter)}.
      * 
      * <p>
-     * TODO: the <tt>PersistenceSessionProxy</tt> doesn't have this method; should document better why this is
-     * the case, and where the equivalent functionality is (somewhere in the marshalling stuff, I think).
+     * TODO: the <tt>PersistenceSessionProxy</tt> doesn't have this method; should document better why this is the case,
+     * and where the equivalent functionality is (somewhere in the marshalling stuff, I think).
      * 
      * @see #remapAsPersistent(ObjectAdapter)
      */
+    @Override
     public void remapAsPersistent(final ObjectAdapter adapter) {
         getAdapterManager().remapAsPersistent(adapter);
     }
@@ -464,16 +483,18 @@ public class PersistenceSessionObjectSto
     }
 
     private ObjectAdapter[] getInstancesFromPersistenceLayer(final PersistenceQuery persistenceQuery) {
-        return getTransactionManager().executeWithinTransaction(new TransactionalClosureWithReturnAbstract<ObjectAdapter[]>() {
-            public ObjectAdapter[] execute() {
-                return objectStore.getInstances(persistenceQuery);
-            }
-
-            @Override
-            public void onSuccess() {
-                clearAllDirty();
-            }
-        });
+        return getTransactionManager().executeWithinTransaction(
+            new TransactionalClosureWithReturnAbstract<ObjectAdapter[]>() {
+                @Override
+                public ObjectAdapter[] execute() {
+                    return objectStore.getInstances(persistenceQuery);
+                }
+
+                @Override
+                public void onSuccess() {
+                    clearAllDirty();
+                }
+            });
     }
 
     // ///////////////////////////////////////////////////////////////////////////
@@ -481,10 +502,11 @@ public class PersistenceSessionObjectSto
     // ///////////////////////////////////////////////////////////////////////////
 
     /**
-     * Checks whether there are any instances of the specified type. The object store should look for
-     * instances of the type represented by <variable>type </variable> and return <code>true</code> if there
-     * are, or <code>false</code> if there are not.
+     * Checks whether there are any instances of the specified type. The object store should look for instances of the
+     * type represented by <variable>type </variable> and return <code>true</code> if there are, or <code>false</code>
+     * if there are not.
      */
+    @Override
     public boolean hasInstances(final ObjectSpecification specification) {
         if (LOG.isInfoEnabled()) {
             LOG.info("hasInstances of " + specification.getShortName());
@@ -494,6 +516,7 @@ public class PersistenceSessionObjectSto
 
     private boolean hasInstancesFromPersistenceLayer(final ObjectSpecification specification) {
         return getTransactionManager().executeWithinTransaction(new TransactionalClosureWithReturnAbstract<Boolean>() {
+            @Override
             public Boolean execute() {
                 return objectStore.hasInstances(specification);
             }
@@ -530,6 +553,7 @@ public class PersistenceSessionObjectSto
     /**
      * Just downcasts.
      */
+    @Override
     public ObjectStoreTransactionManager getTransactionManager() {
         return (ObjectStoreTransactionManager) super.getTransactionManager();
     }
@@ -538,6 +562,7 @@ public class PersistenceSessionObjectSto
      * Uses the {@link ObjectStore} to {@link ObjectStore#createCreateObjectCommand(ObjectAdapter) create} a
      * {@link CreateObjectCommand}, and adds to the {@link IsisTransactionManager}.
      */
+    @Override
     public void addPersistedObject(final ObjectAdapter object) {
         getTransactionManager().addCommand(objectStore.createCreateObjectCommand(object));
     }
@@ -559,6 +584,7 @@ public class PersistenceSessionObjectSto
         objectStore.debugData(debug);
     }
 
+    @Override
     public String debugTitle() {
         return "Object Store Persistor";
     }

Modified: incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/oidgenerator/package-info.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/oidgenerator/package-info.java?rev=1030308&r1=1030307&r2=1030308&view=diff
==============================================================================
--- incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/oidgenerator/package-info.java (original)
+++ incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/oidgenerator/package-info.java Wed Nov  3 01:24:18 2010
@@ -17,24 +17,23 @@
  *  under the License.
  */
 
-
-/**
- * This interface is used by the {@link org.apache.isis.runtime.persistence.PersistenceSession} and
- * is generally not intended to be implemented directly.  
- * 
- * <p>
- * Used by object store implementations to specify how to manufacture
- * {@link org.apache.isis.metamodel.adapter.oid.Oid}s (permanent unique identifiers
- * for each domain object managed by [[NAME]]).  For example, an
- * in-memory object store will just use a unique Id, whereas a generator
- * for Hibernate will hook into Hibernate's own identity generators.
- * 
- * <p>
- * Since there is a close dependency between the {@link org.apache.isis.runtime.persistence.PersistenceSession}
- * and the {@link ClassSubstitutor} implementation, it is the job of the {@link org.apache.isis.runtime.persistence.PersistenceMechanismInstaller} to
- * ensure that the correct {@link OidGenerator} is setup.
- * 
- * @see org.apache.isis.runtime.persistence.objectstore.algorithm.PersistAlgorithm
- * @see org.apache.isis.metamodel.specloader.classsubstitutor.classsubstitor.ClassSubstitutor.ClassStrategy
- */
+/**
+ * This interface is used by the {@link org.apache.isis.runtime.persistence.PersistenceSession} and
+ * is generally not intended to be implemented directly.  
+ * 
+ * <p>
+ * Used by object store implementations to specify how to manufacture
+ * {@link org.apache.isis.metamodel.adapter.oid.Oid}s (permanent unique identifiers
+ * for each domain object managed by Apache Isis).  For example, an
+ * in-memory object store will just use a unique Id, whereas a generator
+ * for Hibernate will hook into Hibernate's own identity generators.
+ * 
+ * <p>
+ * Since there is a close dependency between the {@link org.apache.isis.runtime.persistence.PersistenceSession}
+ * and the {@link ClassSubstitutor} implementation, it is the job of the {@link org.apache.isis.runtime.persistence.PersistenceMechanismInstaller} to
+ * ensure that the correct {@link OidGenerator} is setup.
+ * 
+ * @see org.apache.isis.runtime.persistence.objectstore.algorithm.PersistAlgorithm
+ * @see org.apache.isis.metamodel.specloader.classsubstitutor.classsubstitor.ClassSubstitutor.ClassStrategy
+ */
 package org.apache.isis.runtime.persistence.oidgenerator;
\ No newline at end of file

Modified: incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/services/InitialisationException.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/services/InitialisationException.java?rev=1030308&r1=1030307&r2=1030308&view=diff
==============================================================================
--- incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/services/InitialisationException.java (original)
+++ incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/services/InitialisationException.java Wed Nov  3 01:24:18 2010
@@ -17,14 +17,12 @@
  *  under the License.
  */
 
-
 package org.apache.isis.runtime.persistence.services;
 
 import org.apache.isis.commons.exceptions.IsisException;
 
-
 /**
- * Indicates a problem initialising the [[NAME]] system.
+ * Indicates a problem initialising the Apache Isis framework.
  */
 public class InitialisationException extends IsisException {
     private static final long serialVersionUID = 1L;

Modified: incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/session/IsisSessionDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/session/IsisSessionDefault.java?rev=1030308&r1=1030307&r2=1030308&view=diff
==============================================================================
--- incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/session/IsisSessionDefault.java (original)
+++ incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/session/IsisSessionDefault.java Wed Nov  3 01:24:18 2010
@@ -17,18 +17,16 @@
  *  under the License.
  */
 
-
 package org.apache.isis.runtime.session;
 
+import static org.apache.isis.commons.ensure.Ensure.ensureThatArg;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.CoreMatchers.nullValue;
-import static org.apache.isis.commons.ensure.Ensure.ensureThatArg;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
-import org.apache.log4j.Logger;
 import org.apache.isis.commons.components.SessionScopedComponent;
 import org.apache.isis.commons.debug.DebugInfo;
 import org.apache.isis.commons.debug.DebugString;
@@ -42,15 +40,14 @@ import org.apache.isis.runtime.system.De
 import org.apache.isis.runtime.transaction.IsisTransaction;
 import org.apache.isis.runtime.transaction.IsisTransactionManager;
 import org.apache.isis.runtime.userprofile.UserProfile;
-
+import org.apache.log4j.Logger;
 
 /**
- * Analogous to a Hibernate <tt>Session</tt>, holds the current set of components for a 
- * specific execution context (such as on a thread).
+ * Analogous to a Hibernate <tt>Session</tt>, holds the current set of components for a specific execution context (such
+ * as on a thread).
  * 
  * <p>
- * The <tt>IsisContext</tt> class (in <tt>nof-core</tt>) is responsible for locating
- * the current execution context.
+ * The <tt>IsisContext</tt> class (in <tt>nof-core</tt>) is responsible for locating the current execution context.
  * 
  * @see IsisSessionFactory
  */
@@ -66,67 +63,63 @@ public class IsisSessionDefault implemen
     private final AuthenticationSession authenticationSession;
     private PersistenceSession persistenceSession; // only non-final so can be replaced in tests.
     private final UserProfile userProfile;
-    
+
     private final int id;
     private long accessTime;
     private String debugSnapshot;
 
+    public IsisSessionDefault(final IsisSessionFactory sessionFactory,
+        final AuthenticationSession authenticationSession, final PersistenceSession persistenceSession,
+        final UserProfile userProfile) {
 
-    public IsisSessionDefault(
-            final IsisSessionFactory sessionFactory, 
-            final AuthenticationSession authenticationSession,
-            final PersistenceSession persistenceSession,
-            final UserProfile userProfile) {
-        
         // global context
         ensureThatArg(sessionFactory, is(not(nullValue())), "execution context factory is required");
 
         // session
         ensureThatArg(authenticationSession, is(not(nullValue())), "authentication session is required");
         ensureThatArg(persistenceSession, is(not(nullValue())), "persistence session is required");
-       ensureThatArg(userProfile, is(not(nullValue())), "user profile is required");
+        ensureThatArg(userProfile, is(not(nullValue())), "user profile is required");
 
         this.executionContextFactory = sessionFactory;
 
         this.authenticationSession = authenticationSession;
         this.persistenceSession = persistenceSession;
         this.userProfile = userProfile;
-        
+
         setSessionOpenTime(System.currentTimeMillis());
 
         this.id = nextId++;
     }
 
-
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // open, close
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
 
+    @Override
     public void open() {
         persistenceSession.open();
     }
-    
+
     /**
      * Closes session.
      */
+    @Override
     public void close() {
         takeSnapshot();
         getPersistenceSession().close();
     }
 
-
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // shutdown
-    ////////////////////////////////////////////////////////
-
-    
+    // //////////////////////////////////////////////////////
 
     /**
      * Shuts down all components.
      */
+    @Override
     public void closeAll() {
         close();
-        
+
         shutdownIfRequired(persistenceSession);
     }
 
@@ -137,10 +130,11 @@ public class IsisSessionDefault implemen
         }
     }
 
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // ExecutionContextFactory
-    ////////////////////////////////////////////////////////
-    
+    // //////////////////////////////////////////////////////
+
+    @Override
     public IsisSessionFactory getSessionFactory() {
         return executionContextFactory;
     }
@@ -173,98 +167,91 @@ public class IsisSessionDefault implemen
         return executionContextFactory.getTemplateImageLoader();
     }
 
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // AuthenticationSession
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
 
     /**
      * Returns the security session representing this user for this execution context.
      */
+    @Override
     public AuthenticationSession getAuthenticationSession() {
         return authenticationSession;
     }
 
-
     private String getSessionUserName() {
         return getAuthenticationSession().getUserName();
     }
 
-
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // Id
-    ////////////////////////////////////////////////////////
-
+    // //////////////////////////////////////////////////////
 
     /**
      * Returns an descriptive identifier for this {@link IsisSessionDefault}.
      */
+    @Override
     public String getId() {
         return "#" + id + getSessionUserName();
     }
 
-
-
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // Persistence Session
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
 
+    @Override
     public PersistenceSession getPersistenceSession() {
         return persistenceSession;
     }
 
-    
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // Perspective
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
 
+    @Override
     public UserProfile getUserProfile() {
         return userProfile;
     }
 
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // Session Open Time
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
 
     protected long getSessionOpenTime() {
         return accessTime;
     }
-    
+
     private void setSessionOpenTime(long accessTime) {
         this.accessTime = accessTime;
     }
 
-
-
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // Transaction
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
 
     /**
      * Convenience method that returns the {@link IsisTransaction} of the session, if any.
      */
+    @Override
     public IsisTransaction getCurrentTransaction() {
         return getTransactionManager().getTransaction();
     }
 
-
-
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // testSetObjectPersistor
-    ////////////////////////////////////////////////////////
-
+    // //////////////////////////////////////////////////////
 
     /**
-     * Should only be called in tests. 
+     * Should only be called in tests.
      */
     public void testSetObjectPersistor(PersistenceSession objectPersistor) {
         this.persistenceSession = objectPersistor;
     }
-    
 
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // toString
-    ////////////////////////////////////////////////////////
-    
+    // //////////////////////////////////////////////////////
+
     @Override
     public String toString() {
         final ToString asString = new ToString(this);
@@ -273,18 +260,18 @@ public class IsisSessionDefault implemen
         return asString.toString();
     }
 
-
-
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
     // Debugging
-    ////////////////////////////////////////////////////////
+    // //////////////////////////////////////////////////////
 
+    @Override
     public void debugAll(final DebugString debug) {
-        debug.startSection("[[NAME]] Context Snapshot");
+        debug.startSection("Isis Context Snapshot");
         debug.appendln(debugSnapshot);
         debug.endSection();
     }
 
+    @Override
     public void debug(final DebugString debug) {
         debug.appendAsHexln("hash", hashCode());
         debug.appendln("context id", id);
@@ -311,7 +298,6 @@ public class IsisSessionDefault implemen
         LOG.debug(debugSnapshot);
     }
 
-
     private void debug(final DebugString debug, final Object object) {
         if (object instanceof DebugInfo) {
             final DebugInfo d = (DebugInfo) object;
@@ -323,7 +309,6 @@ public class IsisSessionDefault implemen
         }
     }
 
-    
     public void appendState(final ToString asString) {
         asString.append("authenticationSession", getAuthenticationSession());
         asString.append("persistenceSession", getPersistenceSession());
@@ -334,6 +319,7 @@ public class IsisSessionDefault implemen
         }
     }
 
+    @Override
     public void debugState(final DebugString debug) {
         debug.appendln("authenticationSession", getAuthenticationSession());
         debug.appendln("persistenceSession", getPersistenceSession());
@@ -344,10 +330,9 @@ public class IsisSessionDefault implemen
         }
     }
 
-
-    ///////////////////////////////////////////////////////
+    // /////////////////////////////////////////////////////
     // Dependencies (from constructor)
-    ///////////////////////////////////////////////////////
+    // /////////////////////////////////////////////////////
 
     private IsisTransactionManager getTransactionManager() {
         return getPersistenceSession().getTransactionManager();