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 2011/01/04 23:22:46 UTC

svn commit: r1055214 - in /incubator/isis/trunk: alternatives/objectstore/nosql/src/test/java/org/apache/isis/alternatives/objectstore/nosql/ core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ core/metamodel/src/main/java/org/a...

Author: danhaywood
Date: Tue Jan  4 22:22:45 2011
New Revision: 1055214

URL: http://svn.apache.org/viewvc?rev=1055214&view=rev
Log:
refining the RuntimeContextNoRuntime impl, was causing some tests to fail (ISIS-62)

Modified:
    incubator/isis/trunk/alternatives/objectstore/nosql/src/test/java/org/apache/isis/alternatives/objectstore/nosql/TrialObjects.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionContext.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationImpl.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
    incubator/isis/trunk/core/src/docbkx/guide/isis-core.xml
    incubator/isis/trunk/viewer/bdd/fitnesse/src/main/java/net/sf/isiscontrib/bdd/fitnesse/internal/fixtures/CheckSpecificationsLoadedForFitNesse.java

Modified: incubator/isis/trunk/alternatives/objectstore/nosql/src/test/java/org/apache/isis/alternatives/objectstore/nosql/TrialObjects.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/objectstore/nosql/src/test/java/org/apache/isis/alternatives/objectstore/nosql/TrialObjects.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/objectstore/nosql/src/test/java/org/apache/isis/alternatives/objectstore/nosql/TrialObjects.java (original)
+++ incubator/isis/trunk/alternatives/objectstore/nosql/src/test/java/org/apache/isis/alternatives/objectstore/nosql/TrialObjects.java Tue Jan  4 22:22:45 2011
@@ -27,7 +27,7 @@ import com.google.common.collect.Maps;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ResolveState;
 import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMapDelegator;
+import org.apache.isis.core.metamodel.adapter.map.AdapterMapAbstract;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.config.internal.PropertiesConfiguration;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
@@ -57,6 +57,28 @@ public class TrialObjects {
 
         PropertiesConfiguration configuration = new PropertiesConfiguration();
 
+        final AdapterMapAbstract adapterMap = new AdapterMapAbstract() {
+            
+            @Override
+            public ObjectAdapter getAdapterFor(Object pojo) {
+                throw new UnsupportedOperationException();
+            }
+            
+            @Override
+            public ObjectAdapter adapterFor(Object pojo, ObjectAdapter ownerAdapter, IdentifiedHolder identifiedHolder) {
+                if (adapters.get(pojo) != null) {
+                    return adapters.get(pojo);
+                } else {
+                    return factory.createAdapter(pojo, null);
+                }
+            }
+            
+            @Override
+            public ObjectAdapter adapterFor(Object pattern) {
+                return adapters.get(pattern);
+            }
+        };
+
         reflector =
             new ObjectReflectorDefault(configuration, new TestClassSubstitutor(), new CollectionTypeRegistryDefault(),
                 new SpecificationTraverserDefault(), new MemberLayoutArrangerDefault(), new ProgrammingModelFacetsJava5(), new HashSet<FacetDecorator>(),
@@ -65,41 +87,27 @@ public class TrialObjects {
 
             @Override
             public AdapterMap getAdapterMap() {
-                return new AdapterMapDelegator(super.getAdapterMap()) {
-                    @Override
-                    public ObjectAdapter adapterFor(Object pattern) {
-                        return adapters.get(pattern);
-                    }
-
-                    @Override
-                    public ObjectAdapter adapterFor(Object pojo, ObjectAdapter ownerAdapter, IdentifiedHolder identifiedHolder) {
-                        if (adapters.get(pojo) != null) {
-                            return adapters.get(pojo);
-                        } else {
-                            return factory.createAdapter(pojo, null);
-                        }
-                    }
-                };
+                return adapterMap;
             }
         });
         reflector.init();
 
         factory = new AdapterFactoryAbstract() {
             @Override
-            public TestProxyAdapter createAdapter(Object pojo, Oid oid) {
+            public ObjectAdapter createAdapter(Object pojo, Oid oid) {
                 ObjectSpecification specification = reflector.loadSpecification(pojo.getClass());
                 ResolveState state =
                     oid == null ? ResolveState.VALUE : oid.isTransient() ? ResolveState.TRANSIENT : ResolveState.GHOST;
 
-                final TestProxyAdapter testProxyObjectAdapter = new TestProxyAdapter();
-                testProxyObjectAdapter.setupResolveState(state);
-                testProxyObjectAdapter.setupObject(pojo);
-                testProxyObjectAdapter.setupOid(oid);
-                testProxyObjectAdapter.setupSpecification(specification);
+                final TestProxyAdapter objectAdapter = new TestProxyAdapter();
+                objectAdapter.setupResolveState(state);
+                objectAdapter.setupObject(pojo);
+                objectAdapter.setupOid(oid);
+                objectAdapter.setupSpecification(specification);
 
-                adapters.put(pojo, testProxyObjectAdapter);
+                adapters.put(pojo, objectAdapter);
 
-                return testProxyObjectAdapter;
+                return objectAdapter;
             }
         };
     }

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java Tue Jan  4 22:22:45 2011
@@ -49,6 +49,10 @@ public abstract class RuntimeContextAbst
         	RuntimeContextAware cast = RuntimeContextAware.class.cast(candidate);
             cast.setRuntimeContext(this);
         }
+        injectSubcomponentsInto(candidate);
+	}
+
+    protected void injectSubcomponentsInto(Object candidate) {
         getAdapterMap().injectInto(candidate);
         getAuthenticationSessionProvider().injectInto(candidate);
         getDependencyInjector().injectInto(candidate);
@@ -59,7 +63,7 @@ public abstract class RuntimeContextAbst
         getQuerySubmitter().injectInto(candidate);
         getServicesProvider().injectInto(candidate);
         getSpecificationLookup().injectInto(candidate);
-	}
+    }
 
 	
 	@Override

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java Tue Jan  4 22:22:45 2011
@@ -23,24 +23,42 @@ package org.apache.isis.core.metamodel.r
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.isis.applib.query.Query;
 import org.apache.isis.core.metamodel.adapter.DomainObjectServices;
+import org.apache.isis.core.metamodel.adapter.DomainObjectServicesAbstract;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectDirtier;
+import org.apache.isis.core.metamodel.adapter.ObjectDirtierAbstract;
 import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
+import org.apache.isis.core.metamodel.adapter.ObjectPersistorAbstract;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
+import org.apache.isis.core.metamodel.adapter.QuerySubmitterAbstract;
 import org.apache.isis.core.metamodel.adapter.ServicesProvider;
 import org.apache.isis.core.metamodel.adapter.ServicesProviderAbstract;
 import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
+import org.apache.isis.core.metamodel.adapter.map.AdapterMapAbstract;
+import org.apache.isis.core.metamodel.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.metamodel.authentication.AuthenticationSessionProviderAbstract;
+import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.runtimecontext.DependencyInjector;
 import org.apache.isis.core.metamodel.runtimecontext.DependencyInjectorAbstract;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAbstract;
+import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
 import org.apache.isis.core.metamodel.spec.ObjectInstantiator;
+import org.apache.isis.core.metamodel.spec.ObjectInstantiatorAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 public class RuntimeContextNoRuntime extends RuntimeContextAbstract {
 
 	private DependencyInjector dependencyInjector;
+    private AuthenticationSessionProviderAbstract authenticationSessionProvider;
+    private AdapterMapAbstract adapterMap;
+    private ObjectInstantiatorAbstract objectInstantiator;
+    private ObjectDirtierAbstract objectDirtier;
+    private ObjectPersistorAbstract objectPersistor;
+    private DomainObjectServicesAbstract domainObjectServices;
+    private QuerySubmitterAbstract querySubmitter;
 
     public RuntimeContextNoRuntime() {
         dependencyInjector = new DependencyInjectorAbstract() {
@@ -54,8 +72,147 @@ public class RuntimeContextNoRuntime ext
                 
             }
         };
+        authenticationSessionProvider = new AuthenticationSessionProviderAbstract() {
+            @Override
+            public AuthenticationSession getAuthenticationSession() {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+        };
+        adapterMap = new AdapterMapAbstract() {
+            
+            @Override
+            public ObjectAdapter getAdapterFor(Object pojo) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public ObjectAdapter adapterFor(Object pojo, ObjectAdapter ownerAdapter, IdentifiedHolder identifiedHolder) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public ObjectAdapter adapterFor(Object domainObject) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+        };
+        objectInstantiator = new ObjectInstantiatorAbstract() {
+            
+            @Override
+            public Object instantiate(Class<?> cls) throws ObjectInstantiationException {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+        };
+        objectDirtier = new ObjectDirtierAbstract() {
+            
+            @Override
+            public void objectChanged(Object object) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public void objectChanged(ObjectAdapter adapter) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+        };
+        objectPersistor = new ObjectPersistorAbstract() {
+            
+            @Override
+            public void remove(ObjectAdapter adapter) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public void makePersistent(ObjectAdapter adapter) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+        };
+        domainObjectServices = new DomainObjectServicesAbstract() {
+            
+            @Override
+            public void warnUser(String message) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public void resolve(Object parent, Object field) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public void resolve(Object parent) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public void raiseError(String message) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public void informUser(String message) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public List<String> getPropertyNames() {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public String getProperty(String name) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public boolean flush() {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public ObjectAdapter createTransientInstance(ObjectSpecification spec) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public void commit() {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+        };
+        querySubmitter = new QuerySubmitterAbstract() {
+            
+            @Override
+            public <T> ObjectAdapter firstMatchingQuery(Query<T> query) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+            
+            @Override
+            public <T> List<ObjectAdapter> allMatchingQuery(Query<T> query) {
+                throw new UnsupportedOperationException(
+                "Not supported by this implementation of RuntimeContext");
+            }
+        };
 	}
-
+
 
 	/////////////////////////////////////////////
 	// Components
@@ -63,44 +220,37 @@ public class RuntimeContextNoRuntime ext
 
     @Override
     public AuthenticationSessionProvider getAuthenticationSessionProvider() {
-        throw new UnsupportedOperationException(
-        "Not supported by this implementation of RuntimeContext");
+        return authenticationSessionProvider;
     }
     
     @Override
     public AdapterMap getAdapterMap() {
-        throw new UnsupportedOperationException(
-        "Not supported by this implementation of RuntimeContext");
+        return adapterMap;
     }
 
     @Override
     public ObjectInstantiator getObjectInstantiator() {
-        throw new UnsupportedOperationException(
-        "Not supported by this implementation of RuntimeContext");
+        return objectInstantiator;
     }
     
     @Override
     public ObjectDirtier getObjectDirtier() {
-        throw new UnsupportedOperationException(
-        "Not supported by this implementation of RuntimeContext");
+        return objectDirtier;
     }
 
     @Override
     public ObjectPersistor getObjectPersistor() {
-        throw new UnsupportedOperationException(
-        "Not supported by this implementation of RuntimeContext");
+        return objectPersistor;
     }
 
     @Override
     public DomainObjectServices getDomainObjectServices() {
-        throw new UnsupportedOperationException(
-        "Not supported by this implementation of RuntimeContext");
+        return domainObjectServices;
     }
 
     @Override
     public QuerySubmitter getQuerySubmitter() {
-        throw new UnsupportedOperationException(
-        "Not supported by this implementation of RuntimeContext");
+        return querySubmitter;
     }
 
     @Override
@@ -136,8 +286,4 @@ public class RuntimeContextNoRuntime ext
 	    };
 	}
 
-
-
-
-
 }

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java Tue Jan  4 22:22:45 2011
@@ -19,15 +19,12 @@ package org.apache.isis.core.metamodel.s
 import org.apache.isis.core.metamodel.adapter.ServicesProvider;
 import org.apache.isis.core.metamodel.authentication.AuthenticationSessionProvider;
 
-/**
- * @version  $Rev$ $Date$
- */
 public class SpecificationContext {
     
-    public AuthenticationSessionProvider authenticationSessionProvider;
-    public ServicesProvider servicesProvider;
-    public ObjectInstantiator objectInstantiator;
-    public SpecificationLookup specificationLookup;
+    private final AuthenticationSessionProvider authenticationSessionProvider;
+    private final ServicesProvider servicesProvider;
+    private final ObjectInstantiator objectInstantiator;
+    private final SpecificationLookup specificationLookup;
 
     public SpecificationContext(AuthenticationSessionProvider authenticationSessionProvider,
         ServicesProvider servicesProvider, ObjectInstantiator objectInstantiator,
@@ -37,4 +34,20 @@ public class SpecificationContext {
         this.objectInstantiator = objectInstantiator;
         this.specificationLookup = specificationLookup;
     }
+
+    public AuthenticationSessionProvider getAuthenticationSessionProvider() {
+        return authenticationSessionProvider;
+    }
+
+    public ServicesProvider getServicesProvider() {
+        return servicesProvider;
+    }
+
+    public ObjectInstantiator getObjectInstantiator() {
+        return objectInstantiator;
+    }
+
+    public SpecificationLookup getSpecificationLookup() {
+        return specificationLookup;
+    }
 }
\ No newline at end of file

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java Tue Jan  4 22:22:45 2011
@@ -21,18 +21,13 @@ import org.apache.isis.core.metamodel.ad
 import org.apache.isis.core.metamodel.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.spec.SpecificationLookup;
 
-/**
- * @version  $Rev$ $Date$
- */
 public class ObjectMemberContext {
-    public AuthenticationSessionProvider authenticationSessionProvider;
-    public SpecificationLookup specificationLookup;
-    public AdapterMap adapterManager;
-    public QuerySubmitter querySubmitter;
-
-    /**
-     * 
-     */
+
+    private final AuthenticationSessionProvider authenticationSessionProvider;
+    private final SpecificationLookup specificationLookup;
+    private final AdapterMap adapterManager;
+    private final QuerySubmitter querySubmitter;
+
     public ObjectMemberContext(AuthenticationSessionProvider authenticationSessionProvider,
         SpecificationLookup specificationLookup, AdapterMap adapterManager, QuerySubmitter querySubmitter) {
         this.authenticationSessionProvider = authenticationSessionProvider;
@@ -40,4 +35,20 @@ public class ObjectMemberContext {
         this.adapterManager = adapterManager;
         this.querySubmitter = querySubmitter;
     }
+
+    public AuthenticationSessionProvider getAuthenticationSessionProvider() {
+        return authenticationSessionProvider;
+    }
+
+    public SpecificationLookup getSpecificationLookup() {
+        return specificationLookup;
+    }
+
+    public AdapterMap getAdapterManager() {
+        return adapterManager;
+    }
+
+    public QuerySubmitter getQuerySubmitter() {
+        return querySubmitter;
+    }
 }
\ No newline at end of file

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java Tue Jan  4 22:22:45 2011
@@ -19,18 +19,20 @@ package org.apache.isis.core.metamodel.s
 import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
 import org.apache.isis.core.metamodel.runtimecontext.DependencyInjector;
 
-/**
- * @version  $Rev$ $Date$
- */
 public class CreateObjectContext {
-    public AdapterMap adapterMap;
-    public DependencyInjector dependencyInjector;
+    private final AdapterMap adapterMap;
+    private final DependencyInjector dependencyInjector;
 
-    /**
-     * 
-     */
     public CreateObjectContext(AdapterMap adapterMap, DependencyInjector dependencyInjector) {
         this.adapterMap = adapterMap;
         this.dependencyInjector = dependencyInjector;
     }
+
+    public AdapterMap getAdapterMap() {
+        return adapterMap;
+    }
+
+    public DependencyInjector getDependencyInjector() {
+        return dependencyInjector;
+    }
 }
\ No newline at end of file

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionContext.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionContext.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionContext.java Tue Jan  4 22:22:45 2011
@@ -20,12 +20,20 @@ import org.apache.isis.core.metamodel.la
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
 
 public class IntrospectionContext {
-    public final ClassSubstitutor classSubstitutor;
-    public final MemberLayoutArranger memberLayoutArranger;
+    private final ClassSubstitutor classSubstitutor;
+    private final MemberLayoutArranger memberLayoutArranger;
 
     public IntrospectionContext(ClassSubstitutor classSubstitutor,
         MemberLayoutArranger memberLayoutArranger) {
         this.classSubstitutor = classSubstitutor;
         this.memberLayoutArranger = memberLayoutArranger;
     }
+
+    public ClassSubstitutor getClassSubstitutor() {
+        return classSubstitutor;
+    }
+
+    public MemberLayoutArranger getMemberLayoutArranger() {
+        return memberLayoutArranger;
+    }
 }
\ No newline at end of file

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java Tue Jan  4 22:22:45 2011
@@ -78,10 +78,10 @@ public abstract class ObjectMemberAbstra
         this.id = id;
         this.defaultName = NameUtils.naturalName(this.id);
         
-        this.authenticationSessionProvider = objectMembercontext.authenticationSessionProvider;
-        this.specificationLookup = objectMembercontext.specificationLookup;
-        this.adapterMap = objectMembercontext.adapterManager;
-        this.querySubmitter = objectMembercontext.querySubmitter;
+        this.authenticationSessionProvider = objectMembercontext.getAuthenticationSessionProvider();
+        this.specificationLookup = objectMembercontext.getSpecificationLookup();
+        this.adapterMap = objectMembercontext.getAdapterManager();
+        this.querySubmitter = objectMembercontext.getQuerySubmitter();
     }
 
 

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java Tue Jan  4 22:22:45 2011
@@ -170,10 +170,10 @@ public abstract class ObjectSpecificatio
         this.identifier = Identifier.classIdentifier(introspectedClass);
 
         // dependencies
-        this.authenticationSessionProvider = specificationContext.authenticationSessionProvider;
-        this.servicesProvider = specificationContext.servicesProvider;
-        this.objectInstantiator = specificationContext.objectInstantiator;
-        this.specificationLookup = specificationContext.specificationLookup;
+        this.authenticationSessionProvider = specificationContext.getAuthenticationSessionProvider();
+        this.servicesProvider = specificationContext.getServicesProvider();
+        this.objectInstantiator = specificationContext.getObjectInstantiator();
+        this.specificationLookup = specificationContext.getSpecificationLookup();
     }
 
     // //////////////////////////////////////////////////////////////////////

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationImpl.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationImpl.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationImpl.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationImpl.java Tue Jan  4 22:22:45 2011
@@ -54,7 +54,7 @@ public class OneToManyAssociationImpl ex
     public OneToManyAssociationImpl(
     		final FacetedMethod facetedMethod,
             final ObjectMemberContext objectMemberContext) {
-        super(facetedMethod, FeatureType.COLLECTION, getSpecification(objectMemberContext.specificationLookup, facetedMethod.getType()), objectMemberContext);
+        super(facetedMethod, FeatureType.COLLECTION, getSpecification(objectMemberContext.getSpecificationLookup(), facetedMethod.getType()), objectMemberContext);
     }
 
     // /////////////////////////////////////////////////////////////

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java Tue Jan  4 22:22:45 2011
@@ -61,7 +61,7 @@ public class OneToOneAssociationImpl ext
             final ObjectMemberContext objectMemberContext) {
         super(facetedMethod, 
             FeatureType.PROPERTY, 
-            getSpecification(objectMemberContext.specificationLookup, facetedMethod.getType()), 
+            getSpecification(objectMemberContext.getSpecificationLookup(), facetedMethod.getType()), 
             objectMemberContext);
     }
 

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java Tue Jan  4 22:22:45 2011
@@ -538,19 +538,19 @@ public class ObjectSpecificationDefault 
     // //////////////////////////////////////////////////////////////////
 
     protected AdapterMap getAdapterMap() {
-        return createObjectContext.adapterMap;
+        return createObjectContext.getAdapterMap();
     }
 
     protected DependencyInjector getDependencyInjector() {
-        return createObjectContext.dependencyInjector;
+        return createObjectContext.getDependencyInjector();
     }
 
     private ClassSubstitutor getClassSubstitutor() {
-        return introspectionContext.classSubstitutor;
+        return introspectionContext.getClassSubstitutor();
     }
 
     private MemberLayoutArranger getMemberLayoutArranger() {
-        return introspectionContext.memberLayoutArranger;
+        return introspectionContext.getMemberLayoutArranger();
     }
 
 }

Modified: incubator/isis/trunk/core/src/docbkx/guide/isis-core.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/src/docbkx/guide/isis-core.xml?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/core/src/docbkx/guide/isis-core.xml (original)
+++ incubator/isis/trunk/core/src/docbkx/guide/isis-core.xml Tue Jan  4 22:22:45 2011
@@ -4362,9 +4362,10 @@ Persistable: User Persistable</screen>
 
           <listitem>
             <para>by the core runtime, to provide the ability to provide XML
-            Snapshots (through the XmlSnapshot utility class). The metamodel
-            module does not itself define the programming model conventions;
-            that is the responsibility of the core progmodel.</para>
+            Snapshots (through the <classname>XmlSnapshot</classname> utility
+            class). The metamodel module does not itself define the
+            programming model conventions; that is the responsibility of the
+            core progmodel.</para>
           </listitem>
         </itemizedlist>
 
@@ -4372,6 +4373,43 @@ Persistable: User Persistable</screen>
       </sect1>
 
       <sect1>
+        <title>Architecture Diagram</title>
+
+        <para></para>
+
+        <para></para>
+
+        <para></para>
+
+        <para><screenshot>
+            <screeninfo>Top-level Architecture Diagram</screeninfo>
+
+            <mediaobject>
+              <imageobject>
+                <imagedata fileref="images/metamodel/architecture-diagram-top-level.png"
+                           scale="60" />
+              </imageobject>
+            </mediaobject>
+          </screenshot></para>
+
+        <para></para>
+
+        <screenshot>
+          <screeninfo>Top-level Architecture Diagram with SpecLoader
+          expanded</screeninfo>
+
+          <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/metamodel/architecture-diagram-top-level-with-specloader-expanded.png"
+                         scale="60" />
+            </imageobject>
+          </mediaobject>
+        </screenshot>
+
+        <para></para>
+      </sect1>
+
+      <sect1>
         <title>ObjectAdapter and ObjectSpecification</title>
 
         <para></para>

Modified: incubator/isis/trunk/viewer/bdd/fitnesse/src/main/java/net/sf/isiscontrib/bdd/fitnesse/internal/fixtures/CheckSpecificationsLoadedForFitNesse.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/fitnesse/src/main/java/net/sf/isiscontrib/bdd/fitnesse/internal/fixtures/CheckSpecificationsLoadedForFitNesse.java?rev=1055214&r1=1055213&r2=1055214&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/fitnesse/src/main/java/net/sf/isiscontrib/bdd/fitnesse/internal/fixtures/CheckSpecificationsLoadedForFitNesse.java (original)
+++ incubator/isis/trunk/viewer/bdd/fitnesse/src/main/java/net/sf/isiscontrib/bdd/fitnesse/internal/fixtures/CheckSpecificationsLoadedForFitNesse.java Tue Jan  4 22:22:45 2011
@@ -1,11 +1,11 @@
 package net.sf.isiscontrib.bdd.fitnesse.internal.fixtures;
 
-import java.util.Comparator;
 import java.util.Set;
-import java.util.TreeSet;
 
 import net.sf.isiscontrib.bdd.fitnesse.internal.AbstractSubsetFixture;
 
+import com.google.common.collect.Sets;
+
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.context.IsisContext;
@@ -15,12 +15,7 @@ import org.apache.isis.viewer.bdd.common
 public class CheckSpecificationsLoadedForFitNesse extends AbstractSubsetFixture {
 
     private static Set<ObjectSpecification> allSpecNames() {
-        final Set<ObjectSpecification> specs = new TreeSet<ObjectSpecification>(new Comparator<ObjectSpecification>() {
-            @Override
-            public int compare(final ObjectSpecification o1, final ObjectSpecification o2) {
-                return o1.getFullIdentifier().compareTo(o2.getFullIdentifier());
-            }
-        });
+        final Set<ObjectSpecification> specs = Sets.newTreeSet(ObjectSpecification.COMPARATOR_FULLY_QUALIFIED_CLASS_NAME);
 
         final SpecificationLoader specificationLoader = getSessionFactory().getSpecificationLoader();
         for (final ObjectSpecification ObjectSpecification : specificationLoader.allSpecifications()) {