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 2012/11/12 21:59:31 UTC

svn commit: r1408457 [1/2] - in /isis/trunk: examples/ examples/claims/dom/ examples/metamodel-examples/namefile/src/main/java/org/apache/isis/metamodel/examples/facets/namefile/ framework/applib/src/main/java/org/apache/isis/applib/fixtures/ framework...

Author: danhaywood
Date: Mon Nov 12 20:59:25 2012
New Revision: 1408457

URL: http://svn.apache.org/viewvc?rev=1408457&view=rev
Log:
ISIS-280, ISIS-281, ISIS-188: various

* better handling of @Prototype and @Exploration annotations for visibility checks
* factored out IsisSystemForTest (from the existing IsisSystemWithFixtures)
* removing duplication of code between IsisSystemDefault and JavaReflectorInstallerNoDecorators
  * also removing unused classes
* removing defunct files, fixing bad version numbers

Added:
    isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/
    isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategory.java
      - copied, changed from r1406470, isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentCategory.java
    isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java
      - copied, changed from r1406470, isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentCategory.java
    isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
    isis/trunk/framework/runtimes/dflt/testsupport/src/main/java/org/apache/isis/runtimes/dflt/testsupport/IsisSystemForTest.java
      - copied, changed from r1406470, isis/trunk/framework/runtimes/dflt/testsupport/src/main/java/org/apache/isis/runtimes/dflt/testsupport/IsisSystemWithFixtures.java
Removed:
    isis/trunk/examples/metamodel-examples/namefile/src/main/java/org/apache/isis/metamodel/examples/facets/namefile/NameFileProgModelFacets.java
    isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/metamodel/specloader/progmodelfacets/DataNucleusProgrammingModelFacets.java
    isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/progmodelfacets/JdoProgrammingModelFacets.java
    isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/validator/JdoMetaModelValidator.java
    isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/GivenJdoProgrammingModelWhenInitializedThenFacetsContentsTest.java
    isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/GivenJdoProgrammingModelWhenInitializingTest.java
    isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentCategory.java
    isis/trunk/framework/viewer/restfulobjects/restfulobjects-viewer/src/main/archived-json-browser/browser-support.js
    isis/trunk/framework/viewer/restfulobjects/restfulobjects-viewer/src/main/archived-json-browser/browser.html
    isis/trunk/framework/viewer/restfulobjects/restfulobjects-viewer/src/main/archived-json-browser/index.html
    isis/trunk/framework/viewer/restfulobjects/restfulobjects-viewer/src/main/test/net/sf/restfulobjects/viewer/util/StringUtilTest.java
    isis/trunk/framework/viewer/restfulobjects/restfulobjects-viewer/src/main/webapp/WEB-INF/isis.properties
    isis/trunk/framework/viewer/restfulobjects/restfulobjects-viewer/src/main/webapp/WEB-INF/web.xml
Modified:
    isis/trunk/examples/claims/dom/pom.xml
    isis/trunk/examples/pom.xml
    isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/fixtures/AbstractFixture.java
    isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/ExplorationFacet.java
    isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacet.java
    isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java
    isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java
    isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
    isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ReflectorConstants.java
    isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
    isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/exploration/ExplorationFacetAbstract.java
    isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/prototype/PrototypeFacetAbstract.java
    isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/prototype/annotation/PrototypeFacetAnnotation.java
    isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
    isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
    isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
    isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Utils.java
    isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/validator/JdoMetaModelValidatorLeaf.java
    isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentType.java
    isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/systemusinginstallers/IsisSystemAbstract.java
    isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/systemusinginstallers/IsisSystemUsingInstallers.java
    isis/trunk/framework/runtimes/dflt/testsupport/src/main/java/org/apache/isis/runtimes/dflt/testsupport/IsisSystemDefault.java
    isis/trunk/framework/runtimes/dflt/testsupport/src/main/java/org/apache/isis/runtimes/dflt/testsupport/IsisSystemWithFixtures.java
    isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuFactory.java
    isis/trunk/framework/viewer/wicket/wicket-viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java
    isis/trunk/framework/viewer/wicket/wicket-viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java
    isis/trunk/framework/viewer/wicket/wicket-viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerExploration.java
    isis/trunk/framework/viewer/wicket/wicket-viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java

Modified: isis/trunk/examples/claims/dom/pom.xml
URL: http://svn.apache.org/viewvc/isis/trunk/examples/claims/dom/pom.xml?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/examples/claims/dom/pom.xml (original)
+++ isis/trunk/examples/claims/dom/pom.xml Mon Nov 12 20:59:25 2012
@@ -113,12 +113,6 @@
 			<artifactId>jdo-applib</artifactId>
 		</dependency>
 
-		<dependency>
-			<groupId>org.apache.isis.viewer</groupId>
-			<artifactId>wicket-applib</artifactId>
-		</dependency>
-
-
 		<!-- DataNucleus (horrid, but needed to run the enhancer)-->
         <dependency>
             <groupId>javax.jdo</groupId>

Modified: isis/trunk/examples/pom.xml
URL: http://svn.apache.org/viewvc/isis/trunk/examples/pom.xml?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/examples/pom.xml (original)
+++ isis/trunk/examples/pom.xml Mon Nov 12 20:59:25 2012
@@ -22,7 +22,7 @@
 
 	<groupId>org.apache.isis</groupId>
 	<artifactId>examples</artifactId>
-    <version>0.3.0-incubating-SNAPSHOT</version>
+    <version>0.3.1-incubating-SNAPSHOT</version>
     
     <name>Isis Examples</name>
     

Modified: isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/fixtures/AbstractFixture.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/fixtures/AbstractFixture.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/fixtures/AbstractFixture.java (original)
+++ isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/fixtures/AbstractFixture.java Mon Nov 12 20:59:25 2012
@@ -72,6 +72,13 @@ public abstract class AbstractFixture ex
     /**
      * Most subclasses will override this method, but composite fixtures should
      * instead call {@link #addFixture(Object)} in their constructor.
+     * 
+     * <p>
+     * The iteration over the child fixtures is then performed by the
+     * <tt>FixturesInstallerDelegate</tt> (or equivalent).
+     * 
+     * <p>
+     * A slightly strange implementation?  Oh well, it works.
      */
     @Override
     public void install() {

Copied: isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategory.java (from r1406470, isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentCategory.java)
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategory.java?p2=isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategory.java&p1=isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentCategory.java&r1=1406470&r2=1408457&rev=1408457&view=diff
==============================================================================
--- isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentCategory.java (original)
+++ isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategory.java Mon Nov 12 20:59:25 2012
@@ -17,11 +17,20 @@
  *  under the License.
  */
 
-package org.apache.isis.runtimes.dflt.runtime.system;
+package org.apache.isis.core.metamodel.deployment;
 
-/**
- * @see DeploymentType
- */
 public enum DeploymentCategory {
     EXPLORING, PROTOTYPING, PRODUCTION;
+
+    public boolean isExploring() {
+        return this == DeploymentCategory.EXPLORING;
+    }
+
+    public boolean isPrototyping() {
+        return this == DeploymentCategory.PROTOTYPING;
+    }
+
+    public boolean isProduction() {
+        return this == DeploymentCategory.PRODUCTION;
+    }
 }

Copied: isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java (from r1406470, isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentCategory.java)
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java?p2=isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java&p1=isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentCategory.java&r1=1406470&r2=1408457&rev=1408457&view=diff
==============================================================================
--- isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentCategory.java (original)
+++ isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java Mon Nov 12 20:59:25 2012
@@ -17,11 +17,8 @@
  *  under the License.
  */
 
-package org.apache.isis.runtimes.dflt.runtime.system;
+package org.apache.isis.core.metamodel.deployment;
 
-/**
- * @see DeploymentType
- */
-public enum DeploymentCategory {
-    EXPLORING, PROTOTYPING, PRODUCTION;
+public interface DeploymentCategoryProvider {
+    public DeploymentCategory getDeploymentCategory();
 }

Modified: isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/ExplorationFacet.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/ExplorationFacet.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/ExplorationFacet.java (original)
+++ isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/ExplorationFacet.java Mon Nov 12 20:59:25 2012
@@ -20,6 +20,7 @@
 package org.apache.isis.core.metamodel.facets.actions.exploration;
 
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.interactions.HidingInteractionAdvisor;
 
 /**
  * Indicates that the action should only be available in a special
@@ -29,6 +30,6 @@ import org.apache.isis.core.metamodel.fa
  * In the standard Apache Isis Programming Model, corresponds to annotating the
  * action method using <tt>@Exploration</tt>.
  */
-public interface ExplorationFacet extends Facet {
+public interface ExplorationFacet extends Facet, HidingInteractionAdvisor {
 
 }

Modified: isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacet.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacet.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacet.java (original)
+++ isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacet.java Mon Nov 12 20:59:25 2012
@@ -20,6 +20,7 @@
 package org.apache.isis.core.metamodel.facets.actions.prototype;
 
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.interactions.HidingInteractionAdvisor;
 
 /**
  * Indicates that the action should only be available in a special
@@ -29,6 +30,6 @@ import org.apache.isis.core.metamodel.fa
  * In the standard Apache Isis Programming Model, corresponds to annotating the
  * action method using <tt>@Prototype</tt>.
  */
-public interface PrototypeFacet extends Facet {
+public interface PrototypeFacet extends Facet, HidingInteractionAdvisor {
 
 }

Modified: isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java (original)
+++ isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java Mon Nov 12 20:59:25 2012
@@ -26,6 +26,7 @@ import org.apache.isis.core.commons.auth
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 
 /**
@@ -61,6 +62,8 @@ public abstract class InteractionContext
     private final InteractionInvocationMethod invocation;
     private final AuthenticationSession session;
     private final ObjectAdapter target;
+    // TODO: need to pass this in, obtain from DeploymentCategoryProvider (as implemented by the runtime's DeploymentType)
+    private final DeploymentCategory deploymentCategory;
 
     public InteractionContext(final InteractionContextType interactionType, final AuthenticationSession session, final InteractionInvocationMethod invocationMethod, final Identifier identifier, final ObjectAdapter target) {
         this.interactionType = interactionType;
@@ -68,6 +71,13 @@ public abstract class InteractionContext
         this.identifier = identifier;
         this.session = session;
         this.target = target;
+        // TODO: remove this hardcoding
+        //this.deploymentCategory = DeploymentCategory.PRODUCTION;
+        this.deploymentCategory = DeploymentCategory.PROTOTYPING;
+    }
+
+    public DeploymentCategory getDeploymentCategory() {
+        return deploymentCategory;
     }
 
     /**

Modified: isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java (original)
+++ isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java Mon Nov 12 20:59:25 2012
@@ -26,6 +26,7 @@ import org.apache.isis.core.commons.auth
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 
 /**
  * See {@link InteractionContext} for overview; analogous to
@@ -46,4 +47,5 @@ public abstract class VisibilityContext<
     public Where getWhere() {
         return where;
     }
+
 }

Modified: isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java (original)
+++ isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java Mon Nov 12 20:59:25 2012
@@ -116,7 +116,7 @@ import org.apache.isis.core.metamodel.sp
  * to its <tt>IsisContext</tt>.
  */
 
-public class ObjectReflectorDefault implements SpecificationLoaderSpi, ApplicationScopedComponent, RuntimeContextAware, DebuggableWithTitle {
+public final class ObjectReflectorDefault implements SpecificationLoaderSpi, ApplicationScopedComponent, RuntimeContextAware, DebuggableWithTitle {
 
     private final static Logger LOG = Logger.getLogger(ObjectReflectorDefault.class);
 

Modified: isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ReflectorConstants.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ReflectorConstants.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ReflectorConstants.java (original)
+++ isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ReflectorConstants.java Mon Nov 12 20:59:25 2012
@@ -47,20 +47,6 @@ public final class ReflectorConstants {
     public static final String META_MODEL_VALIDATOR_CLASS_NAME = ConfigurationConstants.ROOT + "reflector.validator";
     public static final String META_MODEL_VALIDATOR_CLASS_NAME_DEFAULT = "org.apache.isis.core.progmodel.metamodelvalidator.dflt.MetaModelValidatorDefault";
 
-    /**
-     * Key used to lookup implementation of {@link MemberLayoutArrangerDefault}
-     * in {@link IsisConfiguration}.
-     */
-    public static final String MEMBER_LAYOUT_ARRANGER_CLASS_NAME = ConfigurationConstants.ROOT + "reflector.memberlayoutarranger";
-    public static final String MEMBER_LAYOUT_ARRANGER_CLASS_NAME_DEFAULT = "org.apache.isis.core.progmodel.layout.dflt.MemberLayoutArrangerDefault";
-
-
-    /**
-     * Key used to lookup implementation of {@link SpecificationTraverser} in
-     * {@link IsisConfiguration}.
-     */
-    public static final String SPECIFICATION_TRAVERSER_CLASS_NAME = ConfigurationConstants.ROOT + "reflector.traverser";
-    public static final String SPECIFICATION_TRAVERSER_CLASS_NAME_DEFAULT = SpecificationTraverserDefault.class.getName();
 
     /**
      * Key used to lookup comma-separated list of {@link FacetFactory}s to

Modified: isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java (original)
+++ isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java Mon Nov 12 20:59:25 2012
@@ -54,4 +54,10 @@ public class MetaModelValidatorComposite
         }
 
     }
+
+    public static MetaModelValidatorComposite asComposite(MetaModelValidator baseMetaModelValidator) {
+        final MetaModelValidatorComposite metaModelValidatorComposite = new MetaModelValidatorComposite();
+        metaModelValidatorComposite.add(baseMetaModelValidator);
+        return metaModelValidatorComposite;
+    }
 }

Modified: isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/exploration/ExplorationFacetAbstract.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/exploration/ExplorationFacetAbstract.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/exploration/ExplorationFacetAbstract.java (original)
+++ isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/exploration/ExplorationFacetAbstract.java Mon Nov 12 20:59:25 2012
@@ -19,10 +19,12 @@
 
 package org.apache.isis.core.progmodel.facets.actions.exploration;
 
+import org.apache.isis.applib.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.MarkerFacetAbstract;
 import org.apache.isis.core.metamodel.facets.actions.exploration.ExplorationFacet;
+import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 
 public abstract class ExplorationFacetAbstract extends MarkerFacetAbstract implements ExplorationFacet {
 
@@ -34,4 +36,11 @@ public abstract class ExplorationFacetAb
         super(type(), holder);
     }
 
+    @Override
+    public String hides(
+        VisibilityContext<? extends VisibilityEvent> ic) {
+        return ic.getDeploymentCategory().isExploring()? null: "Not visible";
+    }
+
+
 }

Modified: isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/prototype/PrototypeFacetAbstract.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/prototype/PrototypeFacetAbstract.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/prototype/PrototypeFacetAbstract.java (original)
+++ isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/prototype/PrototypeFacetAbstract.java Mon Nov 12 20:59:25 2012
@@ -19,10 +19,12 @@
 
 package org.apache.isis.core.progmodel.facets.actions.prototype;
 
+import org.apache.isis.applib.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.MarkerFacetAbstract;
 import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet;
+import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 
 public abstract class PrototypeFacetAbstract extends MarkerFacetAbstract implements PrototypeFacet {
 
@@ -34,4 +36,10 @@ public abstract class PrototypeFacetAbst
         super(type(), holder);
     }
 
+    @Override
+    public String hides(
+        VisibilityContext<? extends VisibilityEvent> ic) {
+        return ic.getDeploymentCategory().isPrototyping()? null: "Not visible";
+    }
+
 }

Modified: isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/prototype/annotation/PrototypeFacetAnnotation.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/prototype/annotation/PrototypeFacetAnnotation.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/prototype/annotation/PrototypeFacetAnnotation.java (original)
+++ isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/prototype/annotation/PrototypeFacetAnnotation.java Mon Nov 12 20:59:25 2012
@@ -19,7 +19,9 @@
 
 package org.apache.isis.core.progmodel.facets.actions.prototype.annotation;
 
+import org.apache.isis.applib.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.progmodel.facets.actions.prototype.PrototypeFacetAbstract;
 
 public class PrototypeFacetAnnotation extends PrototypeFacetAbstract {
@@ -28,4 +30,5 @@ public class PrototypeFacetAnnotation ex
         super(holder);
     }
 
+
 }

Added: isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java?rev=1408457&view=auto
==============================================================================
--- isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java (added)
+++ isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java Mon Nov 12 20:59:25 2012
@@ -0,0 +1,71 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.progmodels.dflt;
+
+import java.util.Collection;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.metamodel.facetapi.ClassSubstitutorFactory;
+import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
+import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
+import org.apache.isis.core.metamodel.layout.MemberLayoutArranger;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault;
+import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
+import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
+import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
+import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverser;
+import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverserDefault;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import org.apache.isis.core.progmodel.layout.dflt.MemberLayoutArrangerDefault;
+
+public final class JavaReflectorHelper  {
+    
+    private static final Logger LOG = Logger.getLogger(JavaReflectorHelper.class);
+
+    private JavaReflectorHelper(){}
+    
+    public static SpecificationLoaderSpi createObjectReflector(
+                                                           final ProgrammingModel programmingModel,
+                                                           final ClassSubstitutorFactory classSubstitutorFactory,
+                                                           final Collection<MetaModelRefiner> metaModelRefiners,
+                                                           final Set<FacetDecorator> facetDecorators,
+                                                           final MetaModelValidator mmv, 
+                                                           final IsisConfiguration configuration) {
+        final MemberLayoutArranger memberLayoutArranger = new MemberLayoutArrangerDefault();
+        final SpecificationTraverser specificationTraverser = new SpecificationTraverserDefault();
+        final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistryDefault();
+        final ClassSubstitutor classSubstitutor = classSubstitutorFactory.createClassSubstitutor(configuration);
+        
+        MetaModelValidatorComposite metaModelValidator = MetaModelValidatorComposite.asComposite(mmv);
+        for (MetaModelRefiner metaModelRefiner : metaModelRefiners) {
+            metaModelRefiner.refineProgrammingModel(programmingModel, configuration);
+            metaModelRefiner.refineMetaModelValidator(metaModelValidator, configuration);
+        }
+        
+        return new ObjectReflectorDefault(configuration, classSubstitutor, collectionTypeRegistry, specificationTraverser, memberLayoutArranger, programmingModel, facetDecorators, metaModelValidator);
+    }
+
+}

Modified: isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java (original)
+++ isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java Mon Nov 12 20:59:25 2012
@@ -50,8 +50,10 @@ import org.apache.isis.core.metamodel.sp
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
 import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverser;
+import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverserDefault;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import org.apache.isis.core.progmodel.layout.dflt.MemberLayoutArrangerDefault;
 
 /**
  * An implementation of {@link ObjectReflectorInstaller} without support for {@link FacetDecoratorInstaller}
@@ -90,60 +92,15 @@ public class JavaReflectorInstallerNoDec
     @Override
     public SpecificationLoaderSpi createReflector(final ClassSubstitutorFactory classSubstitutorFactory, final Collection<MetaModelRefiner> metaModelRefiners) {
 
-        final CollectionTypeRegistry collectionTypeRegistry = createCollectionTypeRegistry(getConfiguration());
-        final SpecificationTraverser specificationTraverser = createSpecificationTraverser(getConfiguration());
-        final MemberLayoutArranger memberLayoutArranger = createMemberLayoutArranger(getConfiguration());
+        final ProgrammingModel programmingModel = createProgrammingModel(getConfiguration());
         final Set<FacetDecorator> facetDecorators = createFacetDecorators(getConfiguration());
-
-        final ClassSubstitutor classSubstitutor = classSubstitutorFactory.createClassSubstitutor(getConfiguration());
+        final MetaModelValidator mmv = createMetaModelValidator(getConfiguration());
         
-        ProgrammingModel programmingModel = createProgrammingModel(getConfiguration());
-        MetaModelValidatorComposite metaModelValidator = asComposite(createMetaModelValidator(getConfiguration()));
-        for (MetaModelRefiner metaModelRefiner : metaModelRefiners) {
-            metaModelRefiner.refineProgrammingModel(programmingModel, getConfiguration());
-            metaModelRefiner.refineMetaModelValidator(metaModelValidator, getConfiguration());
-        }
-
-        final ObjectReflectorDefault reflector = doCreateReflector(getConfiguration(), classSubstitutor, collectionTypeRegistry, specificationTraverser, memberLayoutArranger, programmingModel, facetDecorators, metaModelValidator);
-        return reflector;
+        return JavaReflectorHelper.createObjectReflector(programmingModel, classSubstitutorFactory, metaModelRefiners, facetDecorators, mmv, getConfiguration());
     }
 
 
     /**
-     * Hook method to allow subclasses to specify a different implementation of
-     * {@link SpecificationTraverser}.
-     * 
-     * <p>
-     * By default, looks up implementation from provided
-     * {@link IsisConfiguration} using
-     * {@link ReflectorConstants#SPECIFICATION_TRAVERSER_CLASS_NAME}. If not
-     * specified, then defaults to
-     * {@value ReflectorConstants#SPECIFICATION_TRAVERSER_CLASS_NAME_DEFAULT}.
-     */
-    protected SpecificationTraverser createSpecificationTraverser(final IsisConfiguration configuration) {
-        final String specificationTraverserClassName = configuration.getString(ReflectorConstants.SPECIFICATION_TRAVERSER_CLASS_NAME, ReflectorConstants.SPECIFICATION_TRAVERSER_CLASS_NAME_DEFAULT);
-        final SpecificationTraverser specificationTraverser = InstanceUtil.createInstance(specificationTraverserClassName, SpecificationTraverser.class);
-        return specificationTraverser;
-    }
-
-    /**
-     * Hook method to allow subclasses to specify a different implementation of
-     * {@link MemberLayoutArranger}.
-     * 
-     * <p>
-     * By default, looks up implementation from provided
-     * {@link IsisConfiguration} using
-     * {@link ReflectorConstants#MEMBER_LAYOUT_ARRANGER_CLASS_NAME}. If not
-     * specified, then defaults to
-     * {@value ReflectorConstants#MEMBER_LAYOUT_ARRANGER_CLASS_NAME_DEFAULT}.
-     */
-    protected MemberLayoutArranger createMemberLayoutArranger(final IsisConfiguration configuration) {
-        final String memberLayoutArrangerClassName = configuration.getString(ReflectorConstants.MEMBER_LAYOUT_ARRANGER_CLASS_NAME, ReflectorConstants.MEMBER_LAYOUT_ARRANGER_CLASS_NAME_DEFAULT);
-        final MemberLayoutArranger memberLayoutArranger = InstanceUtil.createInstance(memberLayoutArrangerClassName, MemberLayoutArranger.class);
-        return memberLayoutArranger;
-    }
-
-    /**
      * Hook method to allow subclasses to specify a different implementations
      * (that is, sets of {@link ProgrammingModel} .
      * 
@@ -227,37 +184,6 @@ public class JavaReflectorInstallerNoDec
         return InstanceUtil.createInstance(metaModelValidatorClassName, MetaModelValidator.class);
     }
 
-    private MetaModelValidatorComposite asComposite(MetaModelValidator baseMetaModelValidator) {
-        final MetaModelValidatorComposite metaModelValidatorComposite = new MetaModelValidatorComposite();
-        metaModelValidatorComposite.add(baseMetaModelValidator);
-        return metaModelValidatorComposite;
-    }
-
-    /**
-     * Creates the {@link CollectionTypeRegistry}, hardcoded to be the
-     * {@link CollectionTypeRegistryDefault}.
-     * 
-     * <p>
-     * Note: the intention is to remove this interface and instead to use a
-     * mechanism similar to the <tt>@Value</tt> annotation to specify which
-     * types represent collections. For now, have factored out this method
-     * similar to be similar to the creation methods of other subcomponents such
-     * as the {@link #createClassSubstitutor(IsisConfiguration)
-     * ClassSubstitutor}. Note however that this method is <tt>final</tt> so
-     * that it cannot be overridden.
-     */
-    protected final CollectionTypeRegistry createCollectionTypeRegistry(final IsisConfiguration configuration) {
-        return new CollectionTypeRegistryDefault();
-    }
-
-    /**
-     * Hook method to allow for other implementations (still based on
-     * {@link ObjectReflectorDefault}).
-     */
-    protected ObjectReflectorDefault doCreateReflector(final IsisConfiguration configuration, final ClassSubstitutor classSubstitutor, final CollectionTypeRegistry collectionTypeRegistry, final SpecificationTraverser specificationTraverser, final MemberLayoutArranger memberLayoutArranger,
-            final ProgrammingModel programmingModel, final Set<FacetDecorator> facetDecorators, final MetaModelValidator metaModelValidator) {
-        return new ObjectReflectorDefault(configuration, classSubstitutor, collectionTypeRegistry, specificationTraverser, memberLayoutArranger, programmingModel, facetDecorators, metaModelValidator);
-    }
 
 
     // /////////////////////////////////////////////////////

Modified: isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java (original)
+++ isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java Mon Nov 12 20:59:25 2012
@@ -191,7 +191,7 @@ import org.apache.isis.core.progmodel.fa
 import org.apache.isis.core.progmodel.facets.value.timestamp.TimeStampValueTypeFacetFactory;
 import org.apache.isis.core.progmodel.facets.value.timestampsql.JavaSqlTimeStampValueTypeFacetFactory;
 
-public class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract {
+public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract {
 
     public ProgrammingModelFacetsJava5() {
 

Modified: isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java (original)
+++ isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java Mon Nov 12 20:59:25 2012
@@ -1,25 +1,26 @@
 package org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus;
 
-
 import java.util.List;
 import java.util.Map;
 
 import javax.annotation.Nullable;
 
+import com.google.common.base.Optional;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+
 import org.apache.isis.core.commons.components.Installer;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.progmodel.facets.object.ignore.jdo.RemoveJdoEnhancementTypesFacetFactory;
 import org.apache.isis.core.progmodel.facets.object.ignore.jdo.RemoveJdoPrefixedMethodsFacetFactory;
 import org.apache.isis.runtimes.dflt.bytecode.identity.objectfactory.ObjectFactoryBasic;
 import org.apache.isis.runtimes.dflt.objectstores.jdo.applib.AuditService;
 import org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.bytecode.DataNucleusTypesClassSubstitutor;
-import org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.metamodel.specloader.progmodelfacets.DataNucleusProgrammingModelFacets;
 import org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.persistence.adaptermanager.DataNucleusPojoRecreator;
 import org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.persistence.spi.DataNucleusIdentifierGenerator;
 import org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.persistence.spi.DataNucleusSimplePersistAlgorithm;
@@ -46,10 +47,6 @@ import org.apache.isis.runtimes.dflt.run
 import org.apache.isis.runtimes.dflt.runtime.system.transaction.EnlistedObjectDirtying;
 import org.apache.isis.runtimes.dflt.runtime.system.transaction.IsisTransactionManager;
 
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-
 /**
  * Configuration files are read in the usual fashion (as per {@link Installer#getConfigurationResources()}, ie will consult all of:
  * <ul>
@@ -109,10 +106,36 @@ public class DataNucleusPersistenceMecha
         
         final IsisConfiguration dataNucleusConfig = configuration.createSubset(ISIS_CONFIG_PREFIX);
         final Map<String, String> props = dataNucleusConfig.asMap();
+        addDataNucleusPropertiesIfRequired(props);
         
         applicationComponents = new DataNucleusApplicationComponents(props, getSpecificationLoader().allSpecifications());
     }
 
+
+    private static void addDataNucleusPropertiesIfRequired(
+            final Map<String, String> props) {
+        putIfNotPresent(props, "javax.jdo.PersistenceManagerFactoryClass", "org.datanucleus.api.jdo.JDOPersistenceManagerFactory");
+        
+        putIfNotPresent(props, "javax.jdo.option.ConnectionDriverName", "org.hsqldb.jdbcDriver");
+        putIfNotPresent(props, "javax.jdo.option.ConnectionURL", "jdbc:hsqldb:mem:test");
+        putIfNotPresent(props, "javax.jdo.option.ConnectionUserName", "sa");
+        putIfNotPresent(props, "javax.jdo.option.ConnectionPassword", "");
+        
+        putIfNotPresent(props, "datanucleus.autoCreateSchema", "true");
+        putIfNotPresent(props, "datanucleus.validateSchema", "true");
+        putIfNotPresent(props, "datanucleus.cache.level2.type", "none");
+    }
+
+
+    private static void putIfNotPresent(
+        final Map<String, String> props,
+        String key,
+        String value) {
+        if(!props.containsKey(key)) {
+            props.put(key, value);
+        }
+    }
+
     ////////////////////////////////////////////////////////////////////////
     // createPersistenceSession
     ////////////////////////////////////////////////////////////////////////

Modified: isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Utils.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Utils.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Utils.java (original)
+++ isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Utils.java Mon Nov 12 20:59:25 2012
@@ -27,8 +27,6 @@ import org.joda.time.LocalDateTime;
 
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.metamodel.specloader.progmodelfacets.DataNucleusProgrammingModelFacets;
-import org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.specloader.validator.JdoMetaModelValidator;
 import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
 import org.apache.isis.runtimes.dflt.testsupport.IsisSystemWithFixtures;
 
@@ -39,8 +37,6 @@ public class Utils {
     public static IsisSystemWithFixtures.Builder systemBuilder() {
         return IsisSystemWithFixtures.builder()
         .with(configurationForDataNucleusDb())
-        .with(new DataNucleusProgrammingModelFacets())
-        .with(new JdoMetaModelValidator())
         .with(new DataNucleusPersistenceMechanismInstaller());
     }
 

Modified: isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/validator/JdoMetaModelValidatorLeaf.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/validator/JdoMetaModelValidatorLeaf.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/validator/JdoMetaModelValidatorLeaf.java (original)
+++ isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/validator/JdoMetaModelValidatorLeaf.java Mon Nov 12 20:59:25 2012
@@ -64,5 +64,4 @@ public class JdoMetaModelValidatorLeaf e
         }
     }
 
-
 }

Modified: isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentType.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentType.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentType.java (original)
+++ isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/DeploymentType.java Mon Nov 12 20:59:25 2012
@@ -25,6 +25,8 @@ import com.google.common.collect.Lists;
 
 import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.commons.debug.DebuggableWithTitle;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.runtimes.dflt.runtime.system.session.IsisSessionFactory;
 
 /**
@@ -57,7 +59,7 @@ import org.apache.isis.runtimes.dflt.run
  * {@link DeploymentType}, eg using the <tt>--type</tt> command line arg</li>
  * </ul>
  */
-public class DeploymentType {
+public class DeploymentType implements DeploymentCategoryProvider {
 
     private static List<DeploymentType> deploymentTypes = Lists.newArrayList();
 
@@ -183,16 +185,21 @@ public class DeploymentType {
         return (this == SERVER) && isProduction();
     }
 
+    @Override
+    public DeploymentCategory getDeploymentCategory() {
+        return deploymentCategory;
+    }
+
     public boolean isExploring() {
-        return deploymentCategory == DeploymentCategory.EXPLORING;
+        return deploymentCategory.isExploring();
     }
 
     public boolean isPrototyping() {
-        return deploymentCategory == DeploymentCategory.PROTOTYPING;
+        return deploymentCategory.isPrototyping();
     }
 
     public boolean isProduction() {
-        return deploymentCategory == DeploymentCategory.PRODUCTION;
+        return deploymentCategory.isProduction();
     }
 
     public void addDefaultViewer(final List<String> requestedViewers) {
@@ -218,4 +225,5 @@ public class DeploymentType {
         return name();
     }
 
+
 }
\ No newline at end of file

Modified: isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/systemusinginstallers/IsisSystemAbstract.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/systemusinginstallers/IsisSystemAbstract.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/systemusinginstallers/IsisSystemAbstract.java (original)
+++ isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/systemusinginstallers/IsisSystemAbstract.java Mon Nov 12 20:59:25 2012
@@ -1,200 +1,223 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.runtimes.dflt.runtime.systemusinginstallers;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.isis.applib.fixtures.LogonFixture;
-import org.apache.isis.core.commons.components.Installer;
-import org.apache.isis.core.commons.components.Noop;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.debug.DebugBuilder;
-import org.apache.isis.core.commons.lang.Types;
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.runtime.authentication.AuthenticationManager;
-import org.apache.isis.core.runtime.authorization.AuthorizationManager;
-import org.apache.isis.core.runtime.imageloader.TemplateImageLoader;
-import org.apache.isis.core.runtime.userprofile.UserProfileLoader;
-import org.apache.isis.runtimes.dflt.runtime.authentication.exploration.ExplorationSession;
-import org.apache.isis.runtimes.dflt.runtime.fixtures.FixturesInstaller;
-import org.apache.isis.runtimes.dflt.runtime.installerregistry.InstallerLookup;
-import org.apache.isis.runtimes.dflt.runtime.persistence.internal.RuntimeContextFromSession;
-import org.apache.isis.runtimes.dflt.runtime.system.DeploymentType;
-import org.apache.isis.runtimes.dflt.runtime.system.IsisSystemException;
-import org.apache.isis.runtimes.dflt.runtime.system.IsisSystemFixturesHookAbstract;
-import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
-import org.apache.isis.runtimes.dflt.runtime.system.internal.InitialisationSession;
-import org.apache.isis.runtimes.dflt.runtime.system.internal.IsisLocaleInitializer;
-import org.apache.isis.runtimes.dflt.runtime.system.internal.IsisTimeZoneInitializer;
-import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSessionFactory;
-import org.apache.isis.runtimes.dflt.runtime.system.session.IsisSessionFactory;
-import org.apache.isis.runtimes.dflt.runtime.system.session.IsisSessionFactoryDefault;
-import org.apache.isis.runtimes.dflt.runtime.userprofile.UserProfileLoaderDefault;
-import org.apache.log4j.Logger;
-
-/**
- * 
- */
-public abstract class IsisSystemAbstract extends IsisSystemFixturesHookAbstract {
-
-    public static final Logger LOG = Logger.getLogger(IsisSystemAbstract.class);
-
-    private FixturesInstaller fixtureInstaller;
-
-    private LogonFixture logonFixture;
-
-    // ///////////////////////////////////////////
-    // Constructors
-    // ///////////////////////////////////////////
-
-    public IsisSystemAbstract(final DeploymentType deploymentType) {
-        super(deploymentType, new IsisLocaleInitializer(), new IsisTimeZoneInitializer());
-    }
-
-    public IsisSystemAbstract(final DeploymentType deploymentType, final IsisLocaleInitializer localeInitializer, final IsisTimeZoneInitializer timeZoneInitializer) {
-        super(deploymentType, localeInitializer, timeZoneInitializer);
-    }
-
-    @Override
-    protected void installFixturesIfRequired() throws IsisSystemException {
-        // some deployment types (eg CLIENT) do not support installing fixtures
-        // instead, any fixtures should be installed when server boots up.
-        if (!getDeploymentType().canInstallFixtures()) {
-            return;
-        }
-
-        fixtureInstaller = obtainFixturesInstaller();
-        if (isNoop(fixtureInstaller)) {
-            return;
-        }
-
-        IsisContext.openSession(new InitialisationSession());
-        fixtureInstaller.installFixtures();
-        try {
-
-            // only allow logon fixtures if not in production mode.
-            if (!getDeploymentType().isProduction()) {
-                logonFixture = fixtureInstaller.getLogonFixture();
-            }
-        } finally {
-            IsisContext.closeSession();
-        }
-    }
-
-    private boolean isNoop(final FixturesInstaller candidate) {
-        return candidate == null || (fixtureInstaller instanceof Noop);
-    }
-
-    // ///////////////////////////////////////////
-    // Fixtures
-    // ///////////////////////////////////////////
-
-    /**
-     * This is the only {@link Installer} that is used by any (all) subclass
-     * implementations, because it effectively <i>is</i> the component we need
-     * (as opposed to a builder/factory of the component we need).
-     * 
-     * <p>
-     * The fact that the component <i>is</i> an installer (and therefore can be
-     * {@link InstallerLookup} looked up} is at this level really just an
-     * incidental implementation detail useful for the subclass that uses
-     * {@link InstallerLookup} to create the other components.
-     */
-    protected abstract FixturesInstaller obtainFixturesInstaller() throws IsisSystemException;
-
-    // ///////////////////////////////////////////
-    // Fixtures Installer
-    // ///////////////////////////////////////////
-
-    public FixturesInstaller getFixturesInstaller() {
-        return fixtureInstaller;
-    }
-
-    /**
-     * The {@link LogonFixture}, if any, obtained by running fixtures.
-     * 
-     * <p>
-     * Intended to be used when for {@link DeploymentType#EXPLORATION
-     * exploration} (instead of an {@link ExplorationSession}) or
-     * {@link DeploymentType#PROTOTYPE prototype} deployments (saves logging
-     * in). Should be <i>ignored</i> in other {@link DeploymentType}s.
-     */
-    @Override
-    public LogonFixture getLogonFixture() {
-        return logonFixture;
-    }
-
-    @Override
-    protected void appendFixturesInstallerDebug(final DebugBuilder debug) {
-        debug.appendln("Fixture Installer", fixtureInstaller == null ? "none" : fixtureInstaller.getClass().getName());
-    }
-
-    
-
-    // ///////////////////////////////////////////
-    // Session Factory
-    // ///////////////////////////////////////////
-
-    @Override
-    public IsisSessionFactory doCreateSessionFactory(final DeploymentType deploymentType) throws IsisSystemException {
-        final PersistenceSessionFactory persistenceSessionFactory = obtainPersistenceSessionFactory(deploymentType);
-        final UserProfileLoader userProfileLoader = new UserProfileLoaderDefault(obtainUserProfileStore());
-        return createSessionFactory(deploymentType, userProfileLoader, persistenceSessionFactory);
-    }
-
-    /**
-     * Overloaded version designed to be called by subclasses that need to
-     * explicitly specify different persistence mechanisms.
-     * 
-     * <p>
-     * This is <i>not</i> a hook method, rather it is designed to be called
-     * <i>from</i> the {@link #doCreateSessionFactory(DeploymentType) hook
-     * method}.
-     */
-    protected final IsisSessionFactory createSessionFactory(final DeploymentType deploymentType, final UserProfileLoader userProfileLoader, final PersistenceSessionFactory persistenceSessionFactory) throws IsisSystemException {
-
-        final IsisConfiguration configuration = getConfiguration();
-        final AuthenticationManager authenticationManager = obtainAuthenticationManager(deploymentType);
-        final AuthorizationManager authorizationManager = obtainAuthorizationManager(deploymentType);
-        final TemplateImageLoader templateImageLoader = obtainTemplateImageLoader();
-        final OidMarshaller oidMarshaller = obtainOidMarshaller();
-        
-        final Collection<MetaModelRefiner> metaModelRefiners = refiners(authenticationManager, authorizationManager, templateImageLoader, persistenceSessionFactory);
-        final SpecificationLoaderSpi reflector = obtainSpecificationLoaderSpi(deploymentType, persistenceSessionFactory, metaModelRefiners);
-
-        final List<Object> servicesList = obtainServices();
-
-        // bind metamodel to the (runtime) framework
-        RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession();
-        runtimeContext.injectInto(reflector);
-
-		return new IsisSessionFactoryDefault(deploymentType, configuration, templateImageLoader, reflector, authenticationManager, authorizationManager, userProfileLoader, persistenceSessionFactory, servicesList, oidMarshaller);
-    }
-
-    private static Collection<MetaModelRefiner> refiners(Object... possibleRefiners ) {
-        return Types.filtered(Arrays.asList(possibleRefiners), MetaModelRefiner.class);
-    }
-
-    
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.runtimes.dflt.runtime.systemusinginstallers;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.Lists;
+
+import org.apache.log4j.Logger;
+
+import org.apache.isis.applib.fixtures.LogonFixture;
+import org.apache.isis.core.commons.components.Installer;
+import org.apache.isis.core.commons.components.Noop;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.debug.DebugBuilder;
+import org.apache.isis.core.commons.lang.Types;
+import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
+import org.apache.isis.core.metamodel.facetapi.ClassSubstitutorFactory;
+import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
+import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
+import org.apache.isis.core.metamodel.layout.MemberLayoutArranger;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault;
+import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
+import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
+import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
+import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverser;
+import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverserDefault;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import org.apache.isis.core.progmodel.layout.dflt.MemberLayoutArrangerDefault;
+import org.apache.isis.core.runtime.authentication.AuthenticationManager;
+import org.apache.isis.core.runtime.authorization.AuthorizationManager;
+import org.apache.isis.core.runtime.imageloader.TemplateImageLoader;
+import org.apache.isis.core.runtime.userprofile.UserProfileLoader;
+import org.apache.isis.runtimes.dflt.runtime.authentication.exploration.ExplorationSession;
+import org.apache.isis.runtimes.dflt.runtime.fixtures.FixturesInstaller;
+import org.apache.isis.runtimes.dflt.runtime.installerregistry.InstallerLookup;
+import org.apache.isis.runtimes.dflt.runtime.persistence.internal.RuntimeContextFromSession;
+import org.apache.isis.runtimes.dflt.runtime.system.DeploymentType;
+import org.apache.isis.runtimes.dflt.runtime.system.IsisSystemException;
+import org.apache.isis.runtimes.dflt.runtime.system.IsisSystemFixturesHookAbstract;
+import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
+import org.apache.isis.runtimes.dflt.runtime.system.internal.InitialisationSession;
+import org.apache.isis.runtimes.dflt.runtime.system.internal.IsisLocaleInitializer;
+import org.apache.isis.runtimes.dflt.runtime.system.internal.IsisTimeZoneInitializer;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSessionFactory;
+import org.apache.isis.runtimes.dflt.runtime.system.session.IsisSessionFactory;
+import org.apache.isis.runtimes.dflt.runtime.system.session.IsisSessionFactoryDefault;
+import org.apache.isis.runtimes.dflt.runtime.userprofile.UserProfileLoaderDefault;
+
+/**
+ * 
+ */
+public abstract class IsisSystemAbstract extends IsisSystemFixturesHookAbstract {
+
+    public static final Logger LOG = Logger.getLogger(IsisSystemAbstract.class);
+
+    private FixturesInstaller fixtureInstaller;
+
+    private LogonFixture logonFixture;
+
+    // ///////////////////////////////////////////
+    // Constructors
+    // ///////////////////////////////////////////
+
+    public IsisSystemAbstract(final DeploymentType deploymentType) {
+        super(deploymentType, new IsisLocaleInitializer(), new IsisTimeZoneInitializer());
+    }
+
+    public IsisSystemAbstract(final DeploymentType deploymentType, final IsisLocaleInitializer localeInitializer, final IsisTimeZoneInitializer timeZoneInitializer) {
+        super(deploymentType, localeInitializer, timeZoneInitializer);
+    }
+
+    @Override
+    protected void installFixturesIfRequired() throws IsisSystemException {
+        // some deployment types (eg CLIENT) do not support installing fixtures
+        // instead, any fixtures should be installed when server boots up.
+        if (!getDeploymentType().canInstallFixtures()) {
+            return;
+        }
+
+        fixtureInstaller = obtainFixturesInstaller();
+        if (isNoop(fixtureInstaller)) {
+            return;
+        }
+
+        IsisContext.openSession(new InitialisationSession());
+        fixtureInstaller.installFixtures();
+        try {
+
+            // only allow logon fixtures if not in production mode.
+            if (!getDeploymentType().isProduction()) {
+                logonFixture = fixtureInstaller.getLogonFixture();
+            }
+        } finally {
+            IsisContext.closeSession();
+        }
+    }
+
+    private boolean isNoop(final FixturesInstaller candidate) {
+        return candidate == null || (fixtureInstaller instanceof Noop);
+    }
+
+    // ///////////////////////////////////////////
+    // Fixtures
+    // ///////////////////////////////////////////
+
+    /**
+     * This is the only {@link Installer} that is used by any (all) subclass
+     * implementations, because it effectively <i>is</i> the component we need
+     * (as opposed to a builder/factory of the component we need).
+     * 
+     * <p>
+     * The fact that the component <i>is</i> an installer (and therefore can be
+     * {@link InstallerLookup} looked up} is at this level really just an
+     * incidental implementation detail useful for the subclass that uses
+     * {@link InstallerLookup} to create the other components.
+     */
+    protected abstract FixturesInstaller obtainFixturesInstaller() throws IsisSystemException;
+
+    // ///////////////////////////////////////////
+    // Fixtures Installer
+    // ///////////////////////////////////////////
+
+    public FixturesInstaller getFixturesInstaller() {
+        return fixtureInstaller;
+    }
+
+    /**
+     * The {@link LogonFixture}, if any, obtained by running fixtures.
+     * 
+     * <p>
+     * Intended to be used when for {@link DeploymentType#EXPLORATION
+     * exploration} (instead of an {@link ExplorationSession}) or
+     * {@link DeploymentType#PROTOTYPE prototype} deployments (saves logging
+     * in). Should be <i>ignored</i> in other {@link DeploymentType}s.
+     */
+    @Override
+    public LogonFixture getLogonFixture() {
+        return logonFixture;
+    }
+
+    @Override
+    protected void appendFixturesInstallerDebug(final DebugBuilder debug) {
+        debug.appendln("Fixture Installer", fixtureInstaller == null ? "none" : fixtureInstaller.getClass().getName());
+    }
+
+    
+
+    // ///////////////////////////////////////////
+    // Session Factory
+    // ///////////////////////////////////////////
+
+    @Override
+    public IsisSessionFactory doCreateSessionFactory(final DeploymentType deploymentType) throws IsisSystemException {
+        final PersistenceSessionFactory persistenceSessionFactory = obtainPersistenceSessionFactory(deploymentType);
+        final UserProfileLoader userProfileLoader = new UserProfileLoaderDefault(obtainUserProfileStore());
+        return createSessionFactory(deploymentType, userProfileLoader, persistenceSessionFactory);
+    }
+
+    /**
+     * Overloaded version designed to be called by subclasses that need to
+     * explicitly specify different persistence mechanisms.
+     * 
+     * <p>
+     * This is <i>not</i> a hook method, rather it is designed to be called
+     * <i>from</i> the {@link #doCreateSessionFactory(DeploymentType) hook
+     * method}.
+     */
+    protected final IsisSessionFactory createSessionFactory(final DeploymentType deploymentType, final UserProfileLoader userProfileLoader, final PersistenceSessionFactory persistenceSessionFactory) throws IsisSystemException {
+
+        final IsisConfiguration configuration = getConfiguration();
+        final AuthenticationManager authenticationManager = obtainAuthenticationManager(deploymentType);
+        final AuthorizationManager authorizationManager = obtainAuthorizationManager(deploymentType);
+        final TemplateImageLoader templateImageLoader = obtainTemplateImageLoader();
+        final OidMarshaller oidMarshaller = obtainOidMarshaller();
+        
+        final Collection<MetaModelRefiner> metaModelRefiners = refiners(authenticationManager, authorizationManager, templateImageLoader, persistenceSessionFactory);
+        final SpecificationLoaderSpi reflector = obtainSpecificationLoaderSpi(deploymentType, persistenceSessionFactory, metaModelRefiners);
+
+        final List<Object> servicesList = obtainServices();
+
+        // bind metamodel to the (runtime) framework
+        RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession();
+        runtimeContext.injectInto(reflector);
+
+        return new IsisSessionFactoryDefault(deploymentType, configuration, templateImageLoader, reflector, authenticationManager, authorizationManager, userProfileLoader, persistenceSessionFactory, servicesList, oidMarshaller);
+    }
+
+
+    
+    private static Collection<MetaModelRefiner> refiners(Object... possibleRefiners ) {
+        return Types.filtered(Arrays.asList(possibleRefiners), MetaModelRefiner.class);
+    }
+
+    
+}
\ No newline at end of file

Modified: isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/systemusinginstallers/IsisSystemUsingInstallers.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/systemusinginstallers/IsisSystemUsingInstallers.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/systemusinginstallers/IsisSystemUsingInstallers.java (original)
+++ isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/systemusinginstallers/IsisSystemUsingInstallers.java Mon Nov 12 20:59:25 2012
@@ -213,8 +213,7 @@ public class IsisSystemUsingInstallers e
         // add in transaction support (if already in set then will be ignored)
         reflectorInstaller.addFacetDecoratorInstaller(installerLookup.getInstaller(TransactionFacetDecoratorInstaller.class));
 
-        final SpecificationLoaderSpi reflector = reflectorInstaller.createReflector(classSubstitutorFactory, metaModelRefiners);
-        return reflector;
+        return reflectorInstaller.createReflector(classSubstitutorFactory, metaModelRefiners);
     }
 
     // ///////////////////////////////////////////

Modified: isis/trunk/framework/runtimes/dflt/testsupport/src/main/java/org/apache/isis/runtimes/dflt/testsupport/IsisSystemDefault.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/runtimes/dflt/testsupport/src/main/java/org/apache/isis/runtimes/dflt/testsupport/IsisSystemDefault.java?rev=1408457&r1=1408456&r2=1408457&view=diff
==============================================================================
--- isis/trunk/framework/runtimes/dflt/testsupport/src/main/java/org/apache/isis/runtimes/dflt/testsupport/IsisSystemDefault.java (original)
+++ isis/trunk/framework/runtimes/dflt/testsupport/src/main/java/org/apache/isis/runtimes/dflt/testsupport/IsisSystemDefault.java Mon Nov 12 20:59:25 2012
@@ -11,17 +11,11 @@ import org.apache.isis.core.commons.reso
 import org.apache.isis.core.metamodel.facetapi.ClassSubstitutorFactory;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
-import org.apache.isis.core.metamodel.layout.MemberLayoutArranger;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
-import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverser;
-import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverserDefault;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
-import org.apache.isis.core.progmodel.layout.dflt.MemberLayoutArrangerDefault;
 import org.apache.isis.core.progmodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.standard.AuthenticationManagerStandard;
@@ -29,8 +23,8 @@ import org.apache.isis.core.runtime.auth
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.authorization.standard.AuthorizationManagerStandard;
 import org.apache.isis.core.runtime.userprofile.UserProfileStore;
+import org.apache.isis.progmodels.dflt.JavaReflectorHelper;
 import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
-import org.apache.isis.runtimes.dflt.bytecode.dflt.classsubstitutor.CglibClassSubstitutor;
 import org.apache.isis.runtimes.dflt.objectstores.dflt.InMemoryPersistenceMechanismInstaller;
 import org.apache.isis.runtimes.dflt.profilestores.dflt.InMemoryUserProfileStore;
 import org.apache.isis.runtimes.dflt.runtime.fixtures.FixturesInstaller;
@@ -113,33 +107,21 @@ public class IsisSystemDefault extends I
      * <p>
      * Each of the subcomponents can be overridden if required.
      * 
-     * @see #obtainReflectorClassSubstitutor()
-     * @see #obtainReflectorCollectionTypeRegistry()
      * @see #obtainReflectorFacetDecoratorSet()
      * @see #obtainReflectorMetaModelValidator()
      * @see #obtainReflectorProgrammingModel()
-     * @see #obtainReflectorSpecificationTraverser()
      */
     @Override
     protected SpecificationLoaderSpi obtainSpecificationLoaderSpi(DeploymentType deploymentType, ClassSubstitutorFactory classSubstitutorFactory, Collection<MetaModelRefiner> metaModelRefiners) throws IsisSystemException {
-        final ClassSubstitutor classSubstitutor = obtainReflectorClassSubstitutor();
-        final CollectionTypeRegistry collectionTypeRegistry = obtainReflectorCollectionTypeRegistry();
-        final SpecificationTraverser specificationTraverser = obtainReflectorSpecificationTraverser();
-        final MemberLayoutArranger memberLayoutArranger = new MemberLayoutArrangerDefault();
+        
         final ProgrammingModel programmingModel = obtainReflectorProgrammingModel();
         final Set<FacetDecorator> facetDecorators = obtainReflectorFacetDecoratorSet();
-        final MetaModelValidator metaModelValidator = obtainReflectorMetaModelValidator();
-        return new ObjectReflectorDefault(getConfiguration(), classSubstitutor, collectionTypeRegistry, specificationTraverser, memberLayoutArranger, programmingModel, facetDecorators, metaModelValidator);
-    }
-
-    /**
-     * Optional hook method, called from {@link #obtainSpecificationLoaderSpi(DeploymentType, ClassSubstitutorFactory, MetaModelRefiner)}.
-     * @return
-     */
-    protected ClassSubstitutor obtainReflectorClassSubstitutor() {
-        return new CglibClassSubstitutor();
+        final MetaModelValidator mmv = obtainReflectorMetaModelValidator();
+        
+        return JavaReflectorHelper.createObjectReflector(programmingModel, classSubstitutorFactory, metaModelRefiners, facetDecorators, mmv, getConfiguration());
     }
 
+ 
     /**
      * Optional hook method, called from {@link #obtainSpecificationLoaderSpi(DeploymentType, ClassSubstitutorFactory, MetaModelRefiner)}.
      * @return
@@ -148,13 +130,6 @@ public class IsisSystemDefault extends I
         return new CollectionTypeRegistryDefault();
     }
 
-    /**
-     * Optional hook method, called from {@link #obtainSpecificationLoaderSpi(DeploymentType, ClassSubstitutorFactory, MetaModelRefiner)}.
-     * @return
-     */
-    protected SpecificationTraverser obtainReflectorSpecificationTraverser() {
-        return new SpecificationTraverserDefault();
-    }
 
     /**
      * Optional hook method, called from {@link #obtainSpecificationLoaderSpi(DeploymentType, ClassSubstitutorFactory, MetaModelRefiner)}.