Updated Branches:
  refs/heads/master 82f7e8972 -> 0ef9dd81e

ISIS-386, ISIS-303, ISIS-389: JDO lazy loading, upgrade to DN 3.2

... also remove methods of IsisJdoSupport (ISIS-386) that are no longer 
required post the
lazy loading fix (ISIS-389).  This fix necessitates the upgrade to DN 3.2 
(ISIS-303).


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

Branch: refs/heads/master
Commit: 8cc29a3a79f1dd80d5fc30c861e514cd979ee3c8
Parents: 82f7e89
Author: Dan Haywood <[email protected]>
Authored: Fri Apr 26 17:02:22 2013 +0100
Committer: Dan Haywood <[email protected]>
Committed: Fri Apr 26 17:02:22 2013 +0100

----------------------------------------------------------------------
 .gitignore                                         |    1 +
 component/objectstore/jdo/jdo-applib/pom.xml       |   13 +-
 .../jdo/applib/service/support/IsisJdoSupport.java |   25 +--
 component/objectstore/jdo/jdo-datanucleus/pom.xml  |    4 -
 .../jdo/datanucleus/DataNucleusObjectStore.java    |    7 +-
 .../DataNucleusPersistenceMechanismInstaller.java  |   16 +-
 .../JDOPersistenceManagerFactoryForIsis.java       |  198 +++++++++++++++
 .../jdo/datanucleus/JDOStateManagerForIsis.java    |   81 ++++++
 .../jdo/datanucleus/NucleusContextForIsis.java     |   54 ++++
 .../datanucleus/ObjectProviderFactoryForIsis.java  |   23 ++
 .../service/support/IsisJdoSupportImpl.java        |   11 +-
 .../datanucleus/valuetypes/IsisBlobMapping.java    |   31 ++-
 .../datanucleus/valuetypes/IsisClobMapping.java    |   31 ++-
 .../datanucleus/valuetypes/IsisDateMapping.java    |    2 +-
 .../valuetypes/IsisDateTimeMapping.java            |    2 +-
 component/objectstore/jdo/pom.xml                  |   50 ++--
 core/tck/tck-dom/pom.xml                           |    8 +-
 example/application/claims/dom/pom.xml             |   28 +--
 .../quickstart_wicket_restful_jdo/dom/pom.xml      |   20 +-
 .../WEB-INF/persistor_datanucleus.properties       |    2 +-
 .../viewer-webapp/src/main/webapp/about/index.html |   13 +-
 21 files changed, 468 insertions(+), 152 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index e826285..33f7a97 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,6 +24,7 @@ component/security/sql/hsql-db/
 # log files
 datanucleus.log
 isis.log
+hs_err_pid*.log
 
 # Package Files #
 *.jar

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-applib/pom.xml
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-applib/pom.xml 
b/component/objectstore/jdo/jdo-applib/pom.xml
index f7a506d..18cc481 100644
--- a/component/objectstore/jdo/jdo-applib/pom.xml
+++ b/component/objectstore/jdo/jdo-applib/pom.xml
@@ -42,8 +42,8 @@
                <plugins>
             <plugin>
                 <groupId>org.datanucleus</groupId>
-                <artifactId>maven-datanucleus-plugin</artifactId>
-                <version>3.1.1</version>
+                <artifactId>datanucleus-maven-plugin</artifactId>
+                <version>3.2.0-release</version>
                 <configuration>
                        <fork>false</fork>
                     <verbose>true</verbose>
@@ -78,10 +78,10 @@
                                                                                
        org.datanucleus
                                                                                
</groupId>
                                                                                
<artifactId>
-                                                                               
        maven-datanucleus-plugin
+                                                                               
        datanucleus-maven-plugin
                                                                                
</artifactId>
                                                                                
<versionRange>
-                                                                               
        [3.0.2,)
+                                                                               
        [3.2.0-release,)
                                                                                
</versionRange>
                                                                                
<goals>
                                                                                
        <goal>enhance</goal>
@@ -113,7 +113,6 @@
        </dependencyManagement> 
 
        <dependencies>
-
         <dependency>
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-core-applib</artifactId>
@@ -138,10 +137,6 @@
         </dependency>
         <dependency>
             <groupId>org.datanucleus</groupId>
-            <artifactId>datanucleus-enhancer</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.datanucleus</groupId>
             <artifactId>datanucleus-jodatime</artifactId>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/support/IsisJdoSupport.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/support/IsisJdoSupport.java
 
b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/support/IsisJdoSupport.java
index 5e80dc6..e9a0d85 100644
--- 
a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/support/IsisJdoSupport.java
+++ 
b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/support/IsisJdoSupport.java
@@ -1,36 +1,27 @@
 package org.apache.isis.objectstore.jdo.applib.service.support;
 
+import org.apache.isis.applib.annotation.Programmatic;
+
 /**
  * Service that provide a number of workarounds when using JDO/DataNucleus. 
  */
 public interface IsisJdoSupport {
 
     /**
-     * Inject services and container into a domain object.
-     * 
-     * <p>
-     * This method is provided because we can't figure out why JDO/DataNucleus 
is not 
-     * calling the Isis callback (<tt>IsisLifecycleListener</tt>) when an 
object is lazily loaded.
-     * 
-     * <p>
-     * The particular example that led to this method being added was a 1:m 
bidirectional relationship,
-     * analogous to <tt>Customer <-> * Order</tt>.  No callback is received 
for the child <tt>Order</tt> objects. 
-     */
-    <T> T injected(T domainObject);
-
-    /**
      * Force a reload (corresponding to the JDO <tt>PersistenceManager</tt>'s 
<tt>refresh()</tt> method)
      * of a domain objects.
      * 
      * <p>
-     * In fact, may reset the lazy-load state of the domain object, but the 
effect is the same: to cause
-     * the object's state to be reloaded from the database.
+     * In fact, this may just reset the lazy-load state of the domain object, 
but the effect is the same: 
+     * to cause the object's state to be reloaded from the database.
      * 
      * <p>
      * The particular example that led to this method being added was a 1:m 
bidirectional relationship,
      * analogous to <tt>Customer <-> * Order</tt>.  Persisting the child 
<tt>Order</tt> object did not cause
-     * the parent <tt>Customer</tt>'s collection of orders to be updated.  
Calling refresh on the parent
-     * <tt>Customer</tt> does the trick, however. 
+     * the parent <tt>Customer</tt>'s collection of orders to be updated.  In 
fact, JDO does not make any
+     * such guarantee to do so.  Options are therefore either to maintain the 
collection in code, or to
+     * refresh the parent.
      */
+    @Programmatic
     <T> T refresh(T domainObject);
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/pom.xml
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-datanucleus/pom.xml 
b/component/objectstore/jdo/jdo-datanucleus/pom.xml
index 85ed1c2..779e6d0 100644
--- a/component/objectstore/jdo/jdo-datanucleus/pom.xml
+++ b/component/objectstore/jdo/jdo-datanucleus/pom.xml
@@ -81,10 +81,6 @@
         </dependency>
         <dependency>
             <groupId>org.datanucleus</groupId>
-            <artifactId>datanucleus-enhancer</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.datanucleus</groupId>
             <artifactId>datanucleus-api-jdo</artifactId>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
index c363add..0928313 100644
--- 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
+++ 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
@@ -29,6 +29,8 @@ import java.text.MessageFormat;
 import java.util.List;
 import java.util.Map;
 
+import javax.jdo.FetchGroup;
+import javax.jdo.FetchPlan;
 import javax.jdo.PersistenceManager;
 import javax.jdo.Query;
 import javax.jdo.spi.PersistenceCapable;
@@ -391,7 +393,10 @@ public class DataNucleusObjectStore implements 
ObjectStoreSpi {
         try {
             final Class<?> cls = clsOf(rootOid);
             final Object jdoObjectId = 
JdoObjectIdSerializer.toJdoObjectId(rootOid);
-            result = getPersistenceManager().getObjectById(cls, jdoObjectId);
+            final PersistenceManager pm = getPersistenceManager();
+            FetchPlan fetchPlan = pm.getFetchPlan();
+            fetchPlan.addGroup(FetchGroup.DEFAULT);
+            result = pm.getObjectById(cls, jdoObjectId);
         } catch (final RuntimeException e) {
             throw e;
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
index e2a9b52..6f1a9aa 100644
--- 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
+++ 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
@@ -75,17 +75,19 @@ public class DataNucleusPersistenceMechanismInstaller 
extends PersistenceMechani
     private static final Logger LOG = 
Logger.getLogger(DataNucleusPersistenceMechanismInstaller.class);
 
     public static final String NAME = "datanucleus";
-    
+
     private static final String ISIS_CONFIG_PREFIX = 
"isis.persistor.datanucleus.impl";
 
+    private static final String JAVAX_JDO_PERSISTENCE_MANAGER_FACTORY_CLASS = 
"javax.jdo.PersistenceManagerFactoryClass";
+    private static final String PERSISTENCE_MANAGER_FACTORY_CLASS_FOR_ISIS = 
"org.apache.isis.objectstore.jdo.datanucleus.JDOPersistenceManagerFactoryForIsis";
+
     private DataNucleusApplicationComponents applicationComponents = null;
 
-    
     public DataNucleusPersistenceMechanismInstaller() {
         super(NAME);
     }
 
-    
+
     ////////////////////////////////////////////////////////////////////////
     // createObjectStore
     ////////////////////////////////////////////////////////////////////////
@@ -105,13 +107,19 @@ public class DataNucleusPersistenceMechanismInstaller 
extends PersistenceMechani
         final Map<String, String> props = dataNucleusConfig.asMap();
         addDataNucleusPropertiesIfRequired(props);
         
+        // 
+        final String pmfClassName = 
props.get(JAVAX_JDO_PERSISTENCE_MANAGER_FACTORY_CLASS);
+        if(!PERSISTENCE_MANAGER_FACTORY_CLASS_FOR_ISIS.equals(pmfClassName)) {
+            throw new 
IllegalArgumentException(JAVAX_JDO_PERSISTENCE_MANAGER_FACTORY_CLASS + " must 
be set to " + PERSISTENCE_MANAGER_FACTORY_CLASS_FOR_ISIS);
+        }
+        
         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_PERSISTENCE_MANAGER_FACTORY_CLASS, 
PERSISTENCE_MANAGER_FACTORY_CLASS_FOR_ISIS);
 
         putIfNotPresent(props, "datanucleus.autoCreateSchema", "true");
         putIfNotPresent(props, "datanucleus.validateSchema", "true");

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOPersistenceManagerFactoryForIsis.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOPersistenceManagerFactoryForIsis.java
 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOPersistenceManagerFactoryForIsis.java
new file mode 100644
index 0000000..4077ad6
--- /dev/null
+++ 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOPersistenceManagerFactoryForIsis.java
@@ -0,0 +1,198 @@
+package org.apache.isis.objectstore.jdo.datanucleus;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.jdo.Constants;
+import javax.jdo.JDOFatalUserException;
+import javax.jdo.JDOUserException;
+
+import org.datanucleus.NucleusContext;
+import org.datanucleus.PropertyNames;
+import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
+import org.datanucleus.api.jdo.NucleusJDOHelper;
+import org.datanucleus.exceptions.NucleusException;
+import org.datanucleus.metadata.PersistenceUnitMetaData;
+import org.datanucleus.metadata.TransactionType;
+import org.datanucleus.store.connection.ConnectionFactory;
+import org.datanucleus.store.connection.ConnectionResourceType;
+
+public class JDOPersistenceManagerFactoryForIsis extends
+               JDOPersistenceManagerFactory {
+
+       private static final long serialVersionUID = 1L;
+
+       public JDOPersistenceManagerFactoryForIsis() {
+               this(null);
+       }
+
+       public JDOPersistenceManagerFactoryForIsis(Map props) {
+        // Extract any properties that affect NucleusContext startup
+        Map startupProps = null;
+        if (props != null)
+        {
+            // Possible properties to check for
+            for (String startupPropName : NucleusContext.STARTUP_PROPERTIES)
+            {
+                if (props.containsKey(startupPropName))
+                {
+                    if (startupProps == null)
+                    {
+                        startupProps = new HashMap();
+                    }
+                    startupProps.put(startupPropName, 
props.get(startupPropName));
+                }
+            }
+        }
+
+        // Initialise the context for JDO (need nucleusContext to load 
persistence-unit)
+        nucleusContext = createNucleusContext(startupProps);
+
+        // Generate the properties to apply to the PMF
+        Map pmfProps = new HashMap();
+
+        PersistenceUnitMetaData pumd = null;
+        if (props != null)
+        {
+            String persistenceUnitName = 
(String)props.get(PropertyNames.PROPERTY_PERSISTENCE_UNIT_NAME);
+            if (persistenceUnitName == null)
+            {
+                persistenceUnitName = 
(String)props.get(Constants.PROPERTY_PERSISTENCE_UNIT_NAME);
+            }
+            if (persistenceUnitName != null)
+            {
+                // PMF for a "persistence-unit", so add property so the 
persistence mechanism knows this
+                
getConfiguration().setProperty(PropertyNames.PROPERTY_PERSISTENCE_UNIT_NAME, 
persistenceUnitName);
+
+                try
+                {
+                    // Obtain any props defined for the persistence-unit
+                    pumd = 
nucleusContext.getMetaDataManager().getMetaDataForPersistenceUnit(persistenceUnitName);
+                    if (pumd != null)
+                    {
+                        // Add the properties for the unit
+                        if (pumd.getProperties() != null)
+                        {
+                            pmfProps.putAll(pumd.getProperties());
+                        }
+                    }
+                    else
+                    {
+                        throw new JDOUserException(LOCALISER.msg("012004", 
persistenceUnitName));
+                    }
+                }
+                catch (NucleusException ne)
+                {
+                    throw new JDOUserException(LOCALISER.msg("012005", 
persistenceUnitName), ne);
+                }
+            }
+        }
+
+        // Append on any user properties
+        if (props != null)
+        {
+            pmfProps.putAll(props);
+            if (!pmfProps.containsKey(PropertyNames.PROPERTY_TRANSACTION_TYPE) 
&&
+                !pmfProps.containsKey("javax.jdo.option.TransactionType"))
+            {
+                // Default to RESOURCE_LOCAL txns
+                pmfProps.put(PropertyNames.PROPERTY_TRANSACTION_TYPE, 
TransactionType.RESOURCE_LOCAL.toString());
+            }
+            else
+            {
+                // let TransactionType.JTA imply ResourceType.JTA
+                String transactionType = 
pmfProps.get(PropertyNames.PROPERTY_TRANSACTION_TYPE) != null ? 
+                        
(String)pmfProps.get(PropertyNames.PROPERTY_TRANSACTION_TYPE) : 
+                        
(String)pmfProps.get("javax.jdo.option.TransactionType");
+                if 
(TransactionType.JTA.toString().equalsIgnoreCase(transactionType))
+                {
+                    
pmfProps.put(ConnectionFactory.DATANUCLEUS_CONNECTION_RESOURCE_TYPE,
+                        ConnectionResourceType.JTA.toString());
+                    
pmfProps.put(ConnectionFactory.DATANUCLEUS_CONNECTION2_RESOURCE_TYPE,
+                        ConnectionResourceType.JTA.toString());
+                }
+            }
+        }
+        else
+        {
+            pmfProps.put(PropertyNames.PROPERTY_TRANSACTION_TYPE, 
TransactionType.RESOURCE_LOCAL.toString());
+        }
+
+        // Apply the properties to the PMF
+        try
+        {
+            String propsFileProp = PropertyNames.PROPERTY_PROPERTIES_FILE;
+            if (pmfProps.containsKey(propsFileProp))
+            {
+                // Apply properties file first
+                
getConfiguration().setPropertiesUsingFile((String)pmfProps.get(propsFileProp));
+                pmfProps.remove(propsFileProp);
+            }
+            getConfiguration().setPersistenceProperties(pmfProps);
+        }
+        catch (IllegalArgumentException iae)
+        {
+            throw new JDOFatalUserException("Exception thrown setting 
persistence properties", iae);
+        }
+        catch (NucleusException jpe)
+        {
+            // Only throw JDOException and subclasses
+            throw NucleusJDOHelper.getJDOExceptionForNucleusException(jpe);
+        }
+
+        // Initialise any metadata that needs loading + settings
+        initialiseMetaData(pumd);
+
+        // Enable any listeners that are specified via persistence properties
+        processLifecycleListenersFromProperties(props);
+
+       }
+
+       public JDOPersistenceManagerFactoryForIsis(PersistenceUnitMetaData pumd,
+                       Map overrideProps) {
+        // Build up map of all properties to apply (from persistence-unit + 
overridden + defaulted)
+       Map props = new HashMap();
+       if (pumd != null && pumd.getProperties() != null)
+       {
+           props.putAll(pumd.getProperties());
+       }
+       if (overrideProps != null)
+       {
+               props.putAll(overrideProps);
+       }
+        if (!props.containsKey(PropertyNames.PROPERTY_TRANSACTION_TYPE) && 
+            !props.containsKey("javax.jdo.option.TransactionType"))
+           {
+               // Default to RESOURCE_LOCAL txns
+               props.put(PropertyNames.PROPERTY_TRANSACTION_TYPE, 
TransactionType.RESOURCE_LOCAL.toString());
+       }
+       else
+        {
+            // let TransactionType.JTA imply ResourceType.JTA
+            String transactionType = 
props.get(PropertyNames.PROPERTY_TRANSACTION_TYPE) != null ? 
+                    (String) 
props.get(PropertyNames.PROPERTY_TRANSACTION_TYPE) : 
+                    (String) props.get("javax.jdo.option.TransactionType");
+            if 
(TransactionType.JTA.toString().equalsIgnoreCase(transactionType))
+            {
+                
props.put(ConnectionFactory.DATANUCLEUS_CONNECTION_RESOURCE_TYPE, 
ConnectionResourceType.JTA.toString());
+                
props.put(ConnectionFactory.DATANUCLEUS_CONNECTION2_RESOURCE_TYPE, 
ConnectionResourceType.JTA.toString());
+            }
+        }
+
+       // Initialise the context with all properties
+        nucleusContext = createNucleusContext(props);
+
+        initialiseMetaData(pumd);
+
+        // Enable any listeners that are specified via persistence properties
+        processLifecycleListenersFromProperties(props);
+       }
+
+       /**
+        * Factored out
+        */
+       protected NucleusContext createNucleusContext(Map props) {
+               return new NucleusContextForIsis("JDO", props);
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOStateManagerForIsis.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOStateManagerForIsis.java
 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOStateManagerForIsis.java
new file mode 100644
index 0000000..0a702f3
--- /dev/null
+++ 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOStateManagerForIsis.java
@@ -0,0 +1,81 @@
+package org.apache.isis.objectstore.jdo.datanucleus;
+
+import javax.jdo.listener.LoadCallback;
+import javax.jdo.spi.PersistenceCapable;
+import javax.jdo.spi.StateManager;
+
+import org.datanucleus.ExecutionContext;
+import org.datanucleus.cache.CachedPC;
+import org.datanucleus.metadata.AbstractClassMetaData;
+import org.datanucleus.state.JDOStateManager;
+import org.datanucleus.state.ObjectProvider;
+import org.datanucleus.store.FieldValues;
+
+import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+
+public class JDOStateManagerForIsis extends JDOStateManager implements 
StateManager, ObjectProvider {
+
+       public JDOStateManagerForIsis(ExecutionContext ec, 
AbstractClassMetaData cmd) {
+               super(ec, cmd);
+       }
+
+       public void initialiseForHollow(Object id, FieldValues fv, Class 
pcClass) {
+               super.initialiseForHollow(id, fv, pcClass);
+               mapIntoIsis(myPC);
+       }
+
+       public void initialiseForHollowAppId(FieldValues fv, Class pcClass) {
+               super.initialiseForHollowAppId(fv, pcClass);
+               mapIntoIsis(myPC);
+       }
+
+       public void initialiseForHollowPreConstructed(Object id, Object pc) {
+               super.initialiseForHollowPreConstructed(id, pc);
+               mapIntoIsis(myPC);
+       }
+
+       public void initialiseForPersistentClean(Object id, Object pc) {
+               super.initialiseForPersistentClean(id, pc);
+               mapIntoIsis(myPC);
+       }
+
+       public void initialiseForEmbedded(Object pc, boolean copyPc) {
+               super.initialiseForEmbedded(pc, copyPc);
+               mapIntoIsis(myPC);
+       }
+
+       public void initialiseForPersistentNew(Object pc,
+                       FieldValues preInsertChanges) {
+               super.initialiseForPersistentNew(pc, preInsertChanges);
+               mapIntoIsis(myPC);
+       }
+
+       public void initialiseForTransactionalTransient(Object pc) {
+               super.initialiseForTransactionalTransient(pc);
+               mapIntoIsis(myPC);
+       }
+
+       public void initialiseForDetached(Object pc, Object id, Object version) 
{
+               super.initialiseForDetached(pc, id, version);
+               mapIntoIsis(myPC);
+       }
+
+       public void initialiseForPNewToBeDeleted(Object pc) {
+               super.initialiseForPNewToBeDeleted(pc);
+               mapIntoIsis(myPC);
+       }
+
+       public void initialiseForCachedPC(CachedPC cachedPC, Object id) {
+               super.initialiseForCachedPC(cachedPC, id);
+               mapIntoIsis(myPC);
+       }
+       
+       protected void mapIntoIsis(PersistenceCapable pc) {
+           getServicesInjector().injectServicesInto(pc);
+       }
+
+    protected ServicesInjectorSpi getServicesInjector() {
+        return IsisContext.getPersistenceSession().getServicesInjector();
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/NucleusContextForIsis.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/NucleusContextForIsis.java
 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/NucleusContextForIsis.java
new file mode 100644
index 0000000..8ce4252
--- /dev/null
+++ 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/NucleusContextForIsis.java
@@ -0,0 +1,54 @@
+package org.apache.isis.objectstore.jdo.datanucleus;
+
+import java.lang.reflect.Field;
+import java.util.Map;
+
+import org.datanucleus.NucleusContext;
+import org.datanucleus.plugin.PluginManager;
+import org.datanucleus.state.ObjectProviderFactory;
+
+public class NucleusContextForIsis extends NucleusContext {
+
+       public NucleusContextForIsis(String apiName, ContextType type,
+                       Map startupProps, PluginManager pluginMgr) {
+               super(apiName, type, startupProps, pluginMgr);
+       }
+
+       public NucleusContextForIsis(String apiName, ContextType type,
+                       Map startupProps) {
+               super(apiName, type, startupProps);
+       }
+
+       public NucleusContextForIsis(String apiName, Map startupProps,
+                       PluginManager pluginMgr) {
+               super(apiName, startupProps, pluginMgr);
+       }
+
+       public NucleusContextForIsis(String apiName, Map startupProps) {
+               super(apiName, startupProps);
+       }
+
+       /**
+        * Horrendous code...
+        */
+       @Override
+       public ObjectProviderFactory getObjectProviderFactory() {
+               try {
+                       Field declaredField = 
NucleusContext.class.getDeclaredField("opFactory");
+                       declaredField.setAccessible(true);
+                       ObjectProviderFactory opf = (ObjectProviderFactory) 
declaredField.get(this);
+                       if(opf == null) {
+                               opf = newObjectProviderFactory();
+                               declaredField.set(this, opf);
+                       }
+                       return opf;
+               } catch (Exception e) {
+                       throw new RuntimeException(e);
+               }
+       }
+
+       private ObjectProviderFactoryForIsis newObjectProviderFactory() {
+               return new ObjectProviderFactoryForIsis(this);
+       }
+       
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/ObjectProviderFactoryForIsis.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/ObjectProviderFactoryForIsis.java
 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/ObjectProviderFactoryForIsis.java
new file mode 100644
index 0000000..15002a4
--- /dev/null
+++ 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/ObjectProviderFactoryForIsis.java
@@ -0,0 +1,23 @@
+package org.apache.isis.objectstore.jdo.datanucleus;
+
+import org.datanucleus.ExecutionContext;
+import org.datanucleus.NucleusContext;
+import org.datanucleus.metadata.AbstractClassMetaData;
+import org.datanucleus.state.ObjectProvider;
+import org.datanucleus.state.ObjectProviderFactory;
+import org.datanucleus.state.ObjectProviderFactoryImpl;
+
+public class ObjectProviderFactoryForIsis extends ObjectProviderFactoryImpl
+               implements ObjectProviderFactory {
+
+       public ObjectProviderFactoryForIsis(NucleusContext nucCtx) {
+               super(nucCtx);
+       }
+
+       @Override
+       protected ObjectProvider getObjectProvider(ExecutionContext ec,
+                       AbstractClassMetaData cmd) {
+               return new JDOStateManagerForIsis(ec, cmd);
+       }
+       
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
index bd1801e..af5be23 100644
--- 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
+++ 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
@@ -1,6 +1,9 @@
 package org.apache.isis.objectstore.jdo.datanucleus.service.support;
 
+import java.util.Collection;
+
 import org.apache.isis.applib.annotation.Hidden;
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
@@ -12,13 +15,6 @@ import 
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore;
 @Hidden
 public class IsisJdoSupportImpl implements IsisJdoSupport {
     
-    @Hidden
-    @Override
-    public <T> T injected(T domainObject) {
-        getServicesInjector().injectServicesInto(domainObject);
-        return domainObject;
-    }
-
     @Override
     public <T> T refresh(T domainObject) {
         DataNucleusObjectStore objectStore = (DataNucleusObjectStore) 
getPersistenceSession().getObjectStore();
@@ -39,5 +35,4 @@ public class IsisJdoSupportImpl implements IsisJdoSupport {
         return getPersistenceSession().getServicesInjector();
     }
 
-
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisBlobMapping.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisBlobMapping.java
 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisBlobMapping.java
index b684518..c5866b6 100644
--- 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisBlobMapping.java
+++ 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisBlobMapping.java
@@ -18,14 +18,17 @@
  */
 package org.apache.isis.objectstore.jdo.datanucleus.valuetypes;
 
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+
 import org.datanucleus.ClassLoaderResolver;
 import org.datanucleus.ClassNameConstants;
+import org.datanucleus.ExecutionContext;
 import org.datanucleus.NucleusContext;
 import org.datanucleus.metadata.AbstractMemberMetaData;
-import org.datanucleus.store.ExecutionContext;
-import org.datanucleus.store.mapped.DatastoreContainerObject;
-import org.datanucleus.store.mapped.MappedStoreManager;
-import org.datanucleus.store.mapped.mapping.SingleFieldMultiMapping;
+import org.datanucleus.store.rdbms.RDBMSStoreManager;
+import org.datanucleus.store.rdbms.mapping.java.SingleFieldMultiMapping;
+import org.datanucleus.store.rdbms.table.Table;
 
 import org.apache.isis.applib.value.Blob;
 
@@ -39,23 +42,23 @@ public class IsisBlobMapping extends 
SingleFieldMultiMapping {
         return org.apache.isis.applib.value.Blob.class;
     }
 
-    public void initialize(AbstractMemberMetaData mmd, 
DatastoreContainerObject container, ClassLoaderResolver clr)
+    public void initialize(AbstractMemberMetaData mmd, Table container, 
ClassLoaderResolver clr)
     {
         super.initialize(mmd, container, clr);
-        addDatastoreFields();
+        addColumns();
     }
 
-    public void initialize(MappedStoreManager storeMgr, String type)
+    public void initialize(RDBMSStoreManager storeMgr, String type)
     {
         super.initialize(storeMgr, type);
-        addDatastoreFields();
+        addColumns();
     }
 
-    protected void addDatastoreFields()
+    protected void addColumns()
     {
-        addDatastoreField(ClassNameConstants.JAVA_LANG_STRING); // name
-        addDatastoreField(ClassNameConstants.JAVA_LANG_STRING); // mime type
-        addDatastoreField(ClassNameConstants.JAVA_LANG_BYTE_ARRAY); // bytes
+        addColumns(ClassNameConstants.JAVA_LANG_STRING); // name
+        addColumns(ClassNameConstants.JAVA_LANG_STRING); // mime type
+        addColumns(ClassNameConstants.JAVA_LANG_BYTE_ARRAY); // bytes
     }
 
     public Object getValueForDatastoreMapping(NucleusContext nucleusCtx, int 
index, Object value)
@@ -69,7 +72,7 @@ public class IsisBlobMapping extends SingleFieldMultiMapping {
         throw new IndexOutOfBoundsException();
     }
 
-    public void setObject(ExecutionContext ec, Object preparedStmt, int[] 
exprIndex, Object value)
+    public void setObject(ExecutionContext ec, PreparedStatement preparedStmt, 
int[] exprIndex, Object value)
     {
         Blob blob = ((Blob)value);
         if (blob == null) {
@@ -83,7 +86,7 @@ public class IsisBlobMapping extends SingleFieldMultiMapping {
         }
     }
     
-    public Object getObject(ExecutionContext ec, Object resultSet, int[] 
exprIndex)
+    public Object getObject(ExecutionContext ec, ResultSet resultSet, int[] 
exprIndex)
     {
         try
         {

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisClobMapping.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisClobMapping.java
 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisClobMapping.java
index 476eea9..6d2a9b8 100644
--- 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisClobMapping.java
+++ 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisClobMapping.java
@@ -18,14 +18,17 @@
  */
 package org.apache.isis.objectstore.jdo.datanucleus.valuetypes;
 
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+
 import org.datanucleus.ClassLoaderResolver;
 import org.datanucleus.ClassNameConstants;
+import org.datanucleus.ExecutionContext;
 import org.datanucleus.NucleusContext;
 import org.datanucleus.metadata.AbstractMemberMetaData;
-import org.datanucleus.store.ExecutionContext;
-import org.datanucleus.store.mapped.DatastoreContainerObject;
-import org.datanucleus.store.mapped.MappedStoreManager;
-import org.datanucleus.store.mapped.mapping.SingleFieldMultiMapping;
+import org.datanucleus.store.rdbms.RDBMSStoreManager;
+import org.datanucleus.store.rdbms.mapping.java.SingleFieldMultiMapping;
+import org.datanucleus.store.rdbms.table.Table;
 
 import org.apache.isis.applib.value.Clob;
 
@@ -39,23 +42,23 @@ public class IsisClobMapping extends 
SingleFieldMultiMapping {
         return org.apache.isis.applib.value.Clob.class;
     }
 
-    public void initialize(AbstractMemberMetaData mmd, 
DatastoreContainerObject container, ClassLoaderResolver clr)
+    public void initialize(AbstractMemberMetaData mmd, Table container, 
ClassLoaderResolver clr)
     {
         super.initialize(mmd, container, clr);
-        addDatastoreFields();
+        addColumns();
     }
 
-    public void initialize(MappedStoreManager storeMgr, String type)
+    public void initialize(RDBMSStoreManager storeMgr, String type)
     {
         super.initialize(storeMgr, type);
-        addDatastoreFields();
+        addColumns();
     }
 
-    protected void addDatastoreFields()
+    protected void addColumns()
     {
-        addDatastoreField(ClassNameConstants.JAVA_LANG_STRING); // name
-        addDatastoreField(ClassNameConstants.JAVA_LANG_STRING); // mime type
-        addDatastoreField(ClassNameConstants.JAVA_LANG_CHARACTER_ARRAY); // 
chars
+        addColumns(ClassNameConstants.JAVA_LANG_STRING); // name
+        addColumns(ClassNameConstants.JAVA_LANG_STRING); // mime type
+        addColumns(ClassNameConstants.JAVA_LANG_CHARACTER_ARRAY); // chars
     }
 
     public Object getValueForDatastoreMapping(NucleusContext nucleusCtx, int 
index, Object value)
@@ -69,7 +72,7 @@ public class IsisClobMapping extends SingleFieldMultiMapping {
         throw new IndexOutOfBoundsException();
     }
 
-    public void setObject(ExecutionContext ec, Object preparedStmt, int[] 
exprIndex, Object value)
+    public void setObject(ExecutionContext ec, PreparedStatement preparedStmt, 
int[] exprIndex, Object value)
     {
         Clob clob = ((Clob)value);
         if (clob == null) {
@@ -83,7 +86,7 @@ public class IsisClobMapping extends SingleFieldMultiMapping {
         }
     }
     
-    public Object getObject(ExecutionContext ec, Object resultSet, int[] 
exprIndex)
+    public Object getObject(ExecutionContext ec, ResultSet resultSet, int[] 
exprIndex)
     {
         try
         {

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisDateMapping.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisDateMapping.java
 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisDateMapping.java
index 7137338..f1664ea 100644
--- 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisDateMapping.java
+++ 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisDateMapping.java
@@ -18,7 +18,7 @@
  */
 package org.apache.isis.objectstore.jdo.datanucleus.valuetypes;
 
-import org.datanucleus.store.mapped.mapping.ObjectAsLongMapping;
+import org.datanucleus.store.rdbms.mapping.java.ObjectAsLongMapping;
 
 import org.apache.isis.applib.value.Date;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisDateTimeMapping.java
----------------------------------------------------------------------
diff --git 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisDateTimeMapping.java
 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisDateTimeMapping.java
index 6dc6bc5..5234942 100644
--- 
a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisDateTimeMapping.java
+++ 
b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisDateTimeMapping.java
@@ -18,7 +18,7 @@
  */
 package org.apache.isis.objectstore.jdo.datanucleus.valuetypes;
 
-import org.datanucleus.store.mapped.mapping.ObjectAsLongMapping;
+import org.datanucleus.store.rdbms.mapping.java.ObjectAsLongMapping;
 
 import org.apache.isis.applib.value.DateTime;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/component/objectstore/jdo/pom.xml
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/pom.xml 
b/component/objectstore/jdo/pom.xml
index 01ec14d..ca23dd1 100644
--- a/component/objectstore/jdo/pom.xml
+++ b/component/objectstore/jdo/pom.xml
@@ -147,36 +147,34 @@
                        </exclusion>
                    </exclusions>
                </dependency>
-               <dependency>
-                   <groupId>org.datanucleus</groupId>
-                   <artifactId>datanucleus-core</artifactId>
-                   <version>3.1.3</version>
-               </dependency>
+
+
+            <dependency>
+                <groupId>org.datanucleus</groupId>
+                <artifactId>datanucleus-core</artifactId>
+                <version>[3.1.99, )</version>
+            </dependency>
+            <dependency>
+                <groupId>org.datanucleus</groupId>
+                <artifactId>datanucleus-api-jdo</artifactId>
+                <version>[3.1.99, )</version>
+            </dependency>
+            <dependency>
+                <groupId>org.datanucleus</groupId>
+                <artifactId>datanucleus-rdbms</artifactId>
+                <version>[3.1.99, )</version>
+            </dependency>
                <dependency>
                    <groupId>org.datanucleus</groupId>
                    <artifactId>datanucleus-jodatime</artifactId>
-                   <version>3.1.1</version>
-               </dependency>
-               <dependency>
-                   <groupId>org.datanucleus</groupId>
-                   <artifactId>datanucleus-enhancer</artifactId>
-                   <version>3.1.1</version>
+                   <version>3.2.0-release</version>
                </dependency>
-               <dependency>
-                   <groupId>org.datanucleus</groupId>
-                   <artifactId>datanucleus-api-jdo</artifactId>
-                   <version>3.1.3</version>
-               </dependency>
-               <dependency>
-                   <groupId>org.datanucleus</groupId>
-                   <artifactId>datanucleus-rdbms</artifactId>
-                   <version>3.1.3</version>
-               </dependency>
-          <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jta_1.1_spec</artifactId>
-            <version>1.1.1</version>
-          </dependency>
+
+            <dependency>
+                <groupId>org.apache.geronimo.specs</groupId>
+                <artifactId>geronimo-jta_1.1_spec</artifactId>
+                <version>1.1.1</version>
+            </dependency>
            
                <dependency>
                    <groupId>org.hsqldb</groupId>

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/core/tck/tck-dom/pom.xml
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/pom.xml b/core/tck/tck-dom/pom.xml
index 272ade4..17f678f 100644
--- a/core/tck/tck-dom/pom.xml
+++ b/core/tck/tck-dom/pom.xml
@@ -41,8 +41,8 @@
                 <plugins>
                     <plugin>
                         <groupId>org.datanucleus</groupId>
-                        <artifactId>maven-datanucleus-plugin</artifactId>
-                        <version>3.1.1</version>
+                        <artifactId>datanucleus-maven-plugin</artifactId>
+                        <version>3.2.0-release</version>
                         <configuration>
                             <fork>false</fork>
                             <verbose>true</verbose>
@@ -75,10 +75,10 @@
                                                     org.datanucleus
                                                 </groupId>
                                                 <artifactId>
-                                                    maven-datanucleus-plugin
+                                                    datanucleus-maven-plugin
                                                 </artifactId>
                                                 <versionRange>
-                                                    [3.0.2,)
+                                                    [3.2.0-release,)
                                                 </versionRange>
                                                 <goals>
                                                     <goal>enhance</goal>

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/example/application/claims/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/claims/dom/pom.xml 
b/example/application/claims/dom/pom.xml
index 9e41054..aa522c4 100644
--- a/example/application/claims/dom/pom.xml
+++ b/example/application/claims/dom/pom.xml
@@ -33,8 +33,8 @@
                <plugins>
             <plugin>
                 <groupId>org.datanucleus</groupId>
-                <artifactId>maven-datanucleus-plugin</artifactId>
-                <version>3.1.1</version>
+                <artifactId>datanucleus-maven-plugin</artifactId>
+                <version>3.2.0-release</version>
                 <configuration>
                        <fork>false</fork>
                     
<log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration>
@@ -67,10 +67,10 @@
                                                                                
        org.datanucleus
                                                                                
</groupId>
                                                                                
<artifactId>
-                                                                               
        maven-datanucleus-plugin
+                                                                               
        datanucleus-maven-plugin
                                                                                
</artifactId>
                                                                                
<versionRange>
-                                                                               
        [3.0.2,)
+                                                                               
        [3.2.0-release,)
                                                                                
</versionRange>
                                                                                
<goals>
                                                                                
        <goal>enhance</goal>
@@ -124,18 +124,6 @@
         </dependency>
         <dependency>
             <groupId>org.datanucleus</groupId>
-            <artifactId>datanucleus-enhancer</artifactId>
-            <!-- 
-            <exclusions>
-                               <exclusion>
-                                       <groupId>org.ow2.asm</groupId>
-                                       <artifactId>asm</artifactId>
-                               </exclusion>
-            </exclusions>
-             -->
-        </dependency>
-        <dependency>
-            <groupId>org.datanucleus</groupId>
             <artifactId>datanucleus-api-jdo</artifactId>
         </dependency>
 
@@ -153,13 +141,7 @@
                 <dependency>
                     <groupId>org.datanucleus</groupId>
                     <artifactId>datanucleus-core</artifactId>
-                    <version>(3.0.99, 3.1.99)</version>
-                    <scope>runtime</scope>
-                </dependency>
-                <dependency>
-                    <groupId>org.datanucleus</groupId>
-                    <artifactId>datanucleus-enhancer</artifactId>
-                    <version>(3.0.99, 3.1.99)</version>
+                    <version>(3.1.99, 3.2.99)</version>
                     <scope>runtime</scope>
                 </dependency>
             </dependencies>

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/example/application/quickstart_wicket_restful_jdo/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/pom.xml 
b/example/application/quickstart_wicket_restful_jdo/dom/pom.xml
index 72062b1..68ae8ae 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/pom.xml
+++ b/example/application/quickstart_wicket_restful_jdo/dom/pom.xml
@@ -33,8 +33,8 @@
                <plugins>
             <plugin>
                 <groupId>org.datanucleus</groupId>
-                <artifactId>maven-datanucleus-plugin</artifactId>
-                <version>3.1.1</version>
+                <artifactId>datanucleus-maven-plugin</artifactId>
+                <version>3.2.0-release</version>
                 <configuration>
                        <fork>false</fork>
                     
<log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration>
@@ -67,10 +67,10 @@
                                                                                
        org.datanucleus
                                                                                
</groupId>
                                                                                
<artifactId>
-                                                                               
        maven-datanucleus-plugin
+                                                                               
        datanucleus-maven-plugin
                                                                                
</artifactId>
                                                                                
<versionRange>
-                                                                               
        [3.0.2,)
+                                                                               
        [3.2.0-release,)
                                                                                
</versionRange>
                                                                                
<goals>
                                                                                
        <goal>enhance</goal>
@@ -111,10 +111,6 @@
         </dependency>
         <dependency>
             <groupId>org.datanucleus</groupId>
-            <artifactId>datanucleus-enhancer</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.datanucleus</groupId>
             <artifactId>datanucleus-api-jdo</artifactId>
         </dependency>
         
@@ -140,13 +136,7 @@
                 <dependency>
                     <groupId>org.datanucleus</groupId>
                     <artifactId>datanucleus-core</artifactId>
-                    <version>(3.0.99, 3.1.99)</version>
-                    <scope>runtime</scope>
-                </dependency>
-                <dependency>
-                    <groupId>org.datanucleus</groupId>
-                    <artifactId>datanucleus-enhancer</artifactId>
-                    <version>(3.0.99, 3.1.99)</version>
+                    <version>(3.1.99, 3.2.99)</version>
                     <scope>runtime</scope>
                 </dependency>
             </dependencies>

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
----------------------------------------------------------------------
diff --git 
a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
 
b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
index d0b06d0..9228a69 100644
--- 
a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
+++ 
b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
@@ -27,7 +27,7 @@ isis.persistor.datanucleus.RegisterEntities.packagePrefix=dom
 #
 # DataNucleus' configuration
 #
-isis.persistor.datanucleus.impl.javax.jdo.PersistenceManagerFactoryClass=org.datanucleus.api.jdo.JDOPersistenceManagerFactory
+#isis.persistor.datanucleus.impl.javax.jdo.PersistenceManagerFactoryClass=org.apache.isis.objectstore.jdo.datanucleus.JDOPersistenceManagerFactoryForIsis
 isis.persistor.datanucleus.impl.datanucleus.autoCreateSchema=true
 isis.persistor.datanucleus.impl.datanucleus.validateTables=true
 isis.persistor.datanucleus.impl.datanucleus.validateConstraints=true

http://git-wip-us.apache.org/repos/asf/isis/blob/8cc29a3a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/about/index.html
----------------------------------------------------------------------
diff --git 
a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/about/index.html
 
b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/about/index.html
index 9fcbb9c..cb966e6 100644
--- 
a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/about/index.html
+++ 
b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/about/index.html
@@ -112,14 +112,6 @@ th, td {
                   </li>
                   </ul>
               </li>
-              <li>Domain classes (demo audit functionality) (in <tt>dom</tt> 
module)</a>
-                <ul>
-                  <li><a 
href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/dom/audit/AuditEntry.java";><tt>AuditEntry</tt></a>
 domain entity
-                  </li>
-                  <li><a 
href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/dom/audit/AuditServiceDemo.java";><tt>AuditService</tt></a>
 domain service (repository/factory)
-                  </li>
-                </ul>
-              </li>
               <li>Fixture classes (in <tt>fixture</tt> module)</a>
                 <ul>
                   <li><a 
href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java";><tt>ToDoItemsFixture</tt></a>
 example fixture data (since configured for in-memory HSQLDB)
@@ -144,7 +136,8 @@ th, td {
               </li>
               <li><tt><a 
href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/isis.properties";>WEB-INF/isis.properties</a></tt>
 (in <tt>viewer-webapp</tt> module)</a>
                 <ul>
-                  <li><tt>isis.services</tt> - specifies the three domain 
services (<tt>ToDoItemsJdo</tt>, <tt>AuditServiceDemo</tt> and 
<tt>ToDoItemsFixtureService</tt>) 
+                  <li><tt>isis.services</tt> - specifies the two domain 
services described above (<tt>ToDoItemsJdo</tt> and 
<tt>ToDoItemsFixtureService</tt>), appearing on the menu bar in the Wicket 
viewer, 
+                  along with a number of hidden framework-provided domain 
services demonstrating Isis' support for publishing, auditing and customizable 
error handling 
                   </li>
                   <li><tt>isis.persistor</tt> - specifies to use the JDO 
object store
                   </li>
@@ -177,7 +170,7 @@ th, td {
               </li>
               <li>Assuming you are using a persistent data store, then remove 
the <tt>ToDoItemsFixtureService</tt> from the <tt>isis.properties</tt> file 
(<tt>isis.services</tt> key).  Alternatively you could keep but refactor to 
provide a similar service for your own application's domain.    
               </li>
-              <li>Decide if you require the audit service.  If you don't, then 
remove the <tt>AuditDemoService</tt> from the <tt>isis.properties</tt> file 
(<tt>isis.services</tt> key).  If you do, then refactor the 
<tt>AuditServiceDemo</tt> according to your requirements (the only requirement 
is that it implements 
<tt>org.apache.isis.objectstore.jdo.applib.AuditService</tt>) 
+              <li>Replace (or remove) the publishing and auditing service 
implementations.
               </li>
               <li>If you want the wicket viewer but NOT the restful objects 
viewer, then remove/comment out the <tt>ResteasyBootstrap</tt>, 
<tt>IsisSessionFilterForRestfulObjects</tt>, 
<tt>RestfulObjectsRestEasyDispatcher</tt> from <tt>web.xml</tt>
               </li>

Reply via email to