You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by sa...@apache.org on 2012/04/18 14:22:21 UTC

svn commit: r1327470 - in /ofbiz/trunk/framework: base/config/ example/src/org/ofbiz/example/ jcr/src/org/ofbiz/jcr/access/jackrabbit/ jcr/src/org/ofbiz/jcr/api/jackrabbit/ jcr/src/org/ofbiz/jcr/loader/jackrabbit/ jcr/src/org/ofbiz/jcr/orm/jackrabbit/ ...

Author: sascharodekamp
Date: Wed Apr 18 12:22:20 2012
New Revision: 1327470

URL: http://svn.apache.org/viewvc?rev=1327470&view=rev
Log:
Small code cleanups and refactoring for the Jackrabbit implementation, no functional changes

Added:
    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/util/jackrabbit/JackrabbitUtils.java   (contents, props changed)
      - copied, changed from r1327107, ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/util/jackrabbit/JcrUtilJackrabbit.java
Removed:
    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/util/jackrabbit/JcrUtilJackrabbit.java
Modified:
    ofbiz/trunk/framework/base/config/test-containers.xml
    ofbiz/trunk/framework/example/src/org/ofbiz/example/JackrabbitEvents.java
    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java
    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentWriterJackrabbit.java
    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/VersioningManagerJackrabbit.java
    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitArticleHelper.java
    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitFileHelper.java
    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java
    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/orm/jackrabbit/JackrabbitHierarchyNode.java
    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/test/JackrabbitTests.java

Modified: ofbiz/trunk/framework/base/config/test-containers.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/config/test-containers.xml?rev=1327470&r1=1327469&r2=1327470&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/config/test-containers.xml (original)
+++ ofbiz/trunk/framework/base/config/test-containers.xml Wed Apr 18 12:22:20 2012
@@ -66,7 +66,7 @@ under the License.
     upon JNDI, it must be started after the naming-container container.-->
     <container name="jcr-container" class="org.ofbiz.jcr.loader.JCRContainer">
         <property name="configFilePath" value="framework/jcr/config/jcr-test-config.xml"/>
-        <property name="removeOnShutdown" value="true"/>
+        <property name="removeRepositoryOnShutdown" value="true"/>
     </container>
 
     <!-- load catalina (tomcat) and all web applications -->

Modified: ofbiz/trunk/framework/example/src/org/ofbiz/example/JackrabbitEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/example/src/org/ofbiz/example/JackrabbitEvents.java?rev=1327470&r1=1327469&r2=1327470&view=diff
==============================================================================
--- ofbiz/trunk/framework/example/src/org/ofbiz/example/JackrabbitEvents.java (original)
+++ ofbiz/trunk/framework/example/src/org/ofbiz/example/JackrabbitEvents.java Wed Apr 18 12:22:20 2012
@@ -47,7 +47,7 @@ import org.ofbiz.jcr.orm.jackrabbit.Jack
 import org.ofbiz.jcr.orm.jackrabbit.JackrabbitFile;
 import org.ofbiz.jcr.orm.jackrabbit.JackrabbitFolder;
 import org.ofbiz.jcr.orm.jackrabbit.JackrabbitHierarchyNode;
-import org.ofbiz.jcr.util.jackrabbit.JcrUtilJackrabbit;
+import org.ofbiz.jcr.util.jackrabbit.JackrabbitUtils;
 
 public class JackrabbitEvents {
 
@@ -95,7 +95,7 @@ public class JackrabbitEvents {
     public static String scanRepositoryStructure(HttpServletRequest request, HttpServletResponse response) {
         GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
         try {
-            List<Map<String, String>> listIt = JcrUtilJackrabbit.getRepositoryNodes(userLogin, "");
+            List<Map<String, String>> listIt = JackrabbitUtils.getRepositoryNodes(userLogin, "");
             request.setAttribute("listIt", listIt);
         } catch (RepositoryException e) {
             Debug.logError(e, module);

Modified: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java?rev=1327470&r1=1327469&r2=1327470&view=diff
==============================================================================
--- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java (original)
+++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java Wed Apr 18 12:22:20 2012
@@ -17,7 +17,7 @@ import org.ofbiz.base.util.Debug;
 import org.ofbiz.jcr.access.ContentReader;
 import org.ofbiz.jcr.access.VersioningManager;
 import org.ofbiz.jcr.orm.OfbizRepositoryMapping;
-import org.ofbiz.jcr.util.jackrabbit.JcrUtilJackrabbit;
+import org.ofbiz.jcr.util.jackrabbit.JackrabbitUtils;
 
 public class ContentReaderJackrabbit implements ContentReader {
 
@@ -36,8 +36,9 @@ public class ContentReaderJackrabbit imp
      * org.ofbiz.jcr.access.ContentReader#getContentObject(java.lang.String)
      */
     @Override
-    public OfbizRepositoryMapping getContentObject(String nodePath) throws PathNotFoundException{
-        nodePath = JcrUtilJackrabbit.createAbsoluteNodePath(nodePath);
+    public OfbizRepositoryMapping getContentObject(String nodePath) throws PathNotFoundException {
+        nodePath = JackrabbitUtils.createAbsoluteNodePath(nodePath);
+
         OfbizRepositoryMapping orm = (OfbizRepositoryMapping) ocm.getObject(nodePath);
         try {
             if (orm != null) {
@@ -60,7 +61,8 @@ public class ContentReaderJackrabbit imp
      */
     @Override
     public OfbizRepositoryMapping getContentObject(String nodePath, String version) throws PathNotFoundException {
-        nodePath = JcrUtilJackrabbit.createAbsoluteNodePath(nodePath);
+        nodePath = JackrabbitUtils.createAbsoluteNodePath(nodePath);
+
         VersioningManager vm = new VersioningManagerJackrabbit(ocm);
         if (!vm.checkIfVersionExist(nodePath, version)) {
             Debug.logWarning("The version: " + version + " for content object: " + nodePath + " does not exist, the latest version for this object will be returned.", module);
@@ -198,15 +200,21 @@ public class ContentReaderJackrabbit imp
      * @throws RepositoryException
      *             if an error occurs.
      */
-    protected QueryResult executeQuery(String statement) throws RepositoryException {
+    private QueryResult executeQuery(String statement) throws RepositoryException {
         // TODO create a query manager which uses the OCM Layer.
-        QueryManager qm = ocm.getSession().getWorkspace().getQueryManager();
-
         if (statement.trim().toLowerCase().startsWith("select")) {
-            return qm.createQuery(statement, Query.JCR_SQL2).execute();
+            return executeQuery(statement, Query.JCR_SQL2);
         } else {
-            return qm.createQuery(statement, Query.JCR_JQOM).execute();
+            return executeQuery(statement, Query.JCR_JQOM);
         }
     }
 
+    private QueryResult executeQuery(String statement, String queryType) throws RepositoryException {
+        QueryManager qm = getQueryManager();
+        return qm.createQuery(statement, queryType).execute();
+    }
+
+    private QueryManager getQueryManager() throws RepositoryException {
+        return ocm.getSession().getWorkspace().getQueryManager();
+    }
 }

Modified: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentWriterJackrabbit.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentWriterJackrabbit.java?rev=1327470&r1=1327469&r2=1327470&view=diff
==============================================================================
--- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentWriterJackrabbit.java (original)
+++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentWriterJackrabbit.java Wed Apr 18 12:22:20 2012
@@ -16,7 +16,7 @@ import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.jcr.access.ContentWriter;
 import org.ofbiz.jcr.access.VersioningManager;
 import org.ofbiz.jcr.orm.OfbizRepositoryMapping;
-import org.ofbiz.jcr.util.jackrabbit.JcrUtilJackrabbit;
+import org.ofbiz.jcr.util.jackrabbit.JackrabbitUtils;
 
 public class ContentWriterJackrabbit implements ContentWriter {
 
@@ -43,10 +43,6 @@ public class ContentWriterJackrabbit imp
      */
     @Override
     public void storeContentObject(OfbizRepositoryMapping orm) throws ObjectContentManagerException, ItemExistsException {
-        if (orm == null) {
-            return;
-        }
-
         // we want to avoid same name sibling (SnS) for each node Type
         try {
             if (this.ocm.getSession().itemExists(orm.getPath())) {
@@ -62,7 +58,7 @@ public class ContentWriterJackrabbit imp
 
         // create all nodes in the node structure which do not exist yet
         try {
-            createNodeStructure(orm.getPath(), orm.getClass().getAnnotation(org.apache.jackrabbit.ocm.mapper.impl.annotation.Node.class).jcrType());
+            createNodeStructure(orm.getPath(), getJcrTypeFromOrmAnnotation(orm));
         } catch (PathNotFoundException e) {
             Debug.logError(e, "The new node could not be created: " + orm.getPath(), module);
             return;
@@ -77,6 +73,12 @@ public class ContentWriterJackrabbit imp
         this.saveState();
     }
 
+    private String getJcrTypeFromOrmAnnotation(OfbizRepositoryMapping orm) {
+        org.apache.jackrabbit.ocm.mapper.impl.annotation.Node annotationForNodeClass = orm.getClass().getAnnotation(org.apache.jackrabbit.ocm.mapper.impl.annotation.Node.class);
+
+        return annotationForNodeClass.jcrType();
+    }
+
     /*
      * (non-Javadoc)
      *
@@ -99,7 +101,7 @@ public class ContentWriterJackrabbit imp
      */
     @Override
     public void removeContentObject(String nodePath) throws ObjectContentManagerException {
-        nodePath = JcrUtilJackrabbit.createAbsoluteNodePath(nodePath);
+        nodePath = JackrabbitUtils.createAbsoluteNodePath(nodePath);
         versioningManager.checkOutContentObject(nodePath, true);
 
         ocm.remove(nodePath);
@@ -121,9 +123,7 @@ public class ContentWriterJackrabbit imp
      * @throws RepositoryException
      */
     private void createNodeStructure(String completeNodePath, String primaryNodeType) throws PathNotFoundException, RepositoryException {
-        // We have to check if the node structure (the sub nodes of the passed
-        // ORM Object) exist, otherwise they will be created.
-        String[] nodeStructure = completeNodePath.split(ConstantsJackrabbit.NODEPATHDELIMITER);
+        String[] nodeStructure = splitNodePathByDelimiter(completeNodePath);
         Node parentNode = null;
         try {
             parentNode = this.ocm.getSession().getRootNode();
@@ -132,17 +132,18 @@ public class ContentWriterJackrabbit imp
             return;
         }
 
-        // We loop only over the sub nodes.
         for (int i = 0; i < (nodeStructure.length - 1); i++) {
             String node = nodeStructure[i];
-            if (UtilValidate.isEmpty(node)) {
-                continue;
+            if (UtilValidate.isNotEmpty(node)) {
+                parentNode = createNewSubNodeIfNotExist(primaryNodeType, parentNode, node);
             }
-
-            parentNode = createNewSubNodeIfNotExist(primaryNodeType, parentNode, node);
         }
     }
 
+    private String[] splitNodePathByDelimiter(String completeNodePath) {
+        return completeNodePath.split(ConstantsJackrabbit.NODEPATHDELIMITER);
+    }
+
     /**
      * Checks if the new node already exist, otherwise it will be created.
      *
@@ -161,14 +162,13 @@ public class ContentWriterJackrabbit imp
     private Node createNewSubNodeIfNotExist(String primaryNodeType, Node parentNode, String node) throws RepositoryException, PathNotFoundException, ItemExistsException, NoSuchNodeTypeException, LockException, VersionException,
             ConstraintViolationException {
 
+        versioningManager.checkOutContentObject(parentNode.getPath());
+
         if (parentNode.hasNode(node)) {
             parentNode = parentNode.getNode(node);
-            versioningManager.checkOutContentObject(parentNode.getPath());
         } else {
-            versioningManager.checkOutContentObject(parentNode.getPath());
 
             Node newNode = addNewNode(primaryNodeType, parentNode, node);
-
             versioningManager.addContentToCheckInList(newNode.getPath());
             parentNode = newNode;
         }
@@ -195,7 +195,8 @@ public class ContentWriterJackrabbit imp
     private Node addNewNode(String primaryNodeType, Node parentNode, String node) throws ItemExistsException, PathNotFoundException, NoSuchNodeTypeException, LockException, VersionException, ConstraintViolationException, RepositoryException {
         Node newNode = parentNode.addNode(node, primaryNodeType);
         newNode.addMixin(ConstantsJackrabbit.MIXIN_VERSIONING);
-        if (!ConstantsJackrabbit.ROOTPATH.equals(parentNode.getPath())) {
+
+        if (JackrabbitUtils.isNotARootNode(parentNode)) {
             newNode.setPrimaryType(parentNode.getPrimaryNodeType().getName());
         }
         return newNode;

Modified: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/VersioningManagerJackrabbit.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/VersioningManagerJackrabbit.java?rev=1327470&r1=1327469&r2=1327470&view=diff
==============================================================================
--- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/VersioningManagerJackrabbit.java (original)
+++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/VersioningManagerJackrabbit.java Wed Apr 18 12:22:20 2012
@@ -8,6 +8,7 @@ import java.util.Set;
 
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
+import javax.jcr.PathNotFoundException;
 import javax.jcr.RepositoryException;
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.version.VersionException;
@@ -17,6 +18,7 @@ import org.apache.jackrabbit.ocm.version
 import org.apache.jackrabbit.ocm.version.VersionIterator;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.jcr.access.VersioningManager;
+import org.ofbiz.jcr.util.jackrabbit.JackrabbitUtils;
 
 public class VersioningManagerJackrabbit implements VersioningManager {
 
@@ -45,7 +47,6 @@ public class VersioningManagerJackrabbit
             versionIterator = this.ocm.getAllVersions(nodePath);
         } catch (VersionException e) {
             Debug.logError(e, module);
-            // return an empty List
             return result;
         }
 
@@ -54,7 +55,7 @@ public class VersioningManagerJackrabbit
             Version version = (Version) versionIterator.next();
             // filter the root version string, because it's not needed each node
             // starts with the version number 1.0
-            if (!ConstantsJackrabbit.ROOTVERSION.equals(version.getName())) {
+            if (isNotRootVersion(version)) {
                 result.add(version.getName());
             }
         }
@@ -85,12 +86,12 @@ public class VersioningManagerJackrabbit
     public void checkOutContentObject(String nodePath) {
         // check if the parent node is the root node, because the
         // root node can not be checked out.
-        if (ConstantsJackrabbit.ROOTPATH.equals(nodePath)) {
+        if (JackrabbitUtils.isARootNode(nodePath)) {
             return;
         }
 
         try {
-            if (this.ocm.getSession().nodeExists(nodePath) && !this.ocm.getSession().getWorkspace().getVersionManager().isCheckedOut(nodePath) && !checkedOutNodeStore.contains(nodePath)) {
+            if (doNodeExist(nodePath) && isNodeNotCheckedOut(nodePath)) {
                 this.ocm.checkout(nodePath);
                 this.addContentToCheckInList(nodePath);
             }
@@ -103,8 +104,8 @@ public class VersioningManagerJackrabbit
         }
     }
 
-    public void checkOutContentObject(String nodePath, boolean recursiv) {
-        if (recursiv) {
+    public void checkOutContentObject(String nodePath, boolean checkOutAllSubnodes) {
+        if (checkOutAllSubnodes) {
             try {
                 checkOutRelatedNodes(nodePath);
             } catch (RepositoryException e) {
@@ -134,16 +135,11 @@ public class VersioningManagerJackrabbit
      */
     @Override
     public void checkInContentAndSaveState() {
-        if (ocm != null) {
-            ocm.save();
-        }
+        ocm.save();
 
         try {
             for (String nodePath : checkedOutNodeStore) {
-                // add the new resource content to the version history
-                if (this.ocm.getSession().nodeExists(nodePath) && this.ocm.getSession().getWorkspace().getVersionManager().isCheckedOut(nodePath)) {
-                    this.ocm.checkin(nodePath);
-                }
+                checkinNode(nodePath);
             }
 
             // reset the node store after everything is checked in
@@ -164,6 +160,7 @@ public class VersioningManagerJackrabbit
      * @see
      * org.ofbiz.jcr.access.VersioningManager#getBaseVersion(java.lang.String)
      */
+    @Override
     public String getBaseVersion(String nodePath) {
         try {
             return ocm.getBaseVersion(nodePath).getName();
@@ -179,6 +176,7 @@ public class VersioningManagerJackrabbit
      * @see
      * org.ofbiz.jcr.access.VersioningManager#getRootVersion(java.lang.String)
      */
+    @Override
     public String getRootVersion(String nodePath) {
         try {
             return ocm.getRootVersion(nodePath).getName();
@@ -195,12 +193,16 @@ public class VersioningManagerJackrabbit
      * @param startNode
      * @throws RepositoryException
      */
-    protected void checkOutRelatedNodes(String startNodePath) throws RepositoryException {
+    private void checkOutRelatedNodes(String startNodePath) throws RepositoryException {
+        Node startNode = getNode(startNodePath);
         List<String> nodesToCheckOut = new ArrayList<String>();
+
         nodesToCheckOut.add(startNodePath);
-        nodesToCheckOut.add(ocm.getSession().getNode(startNodePath).getParent().getPath());
-        if (ocm.getSession().getNode(startNodePath).hasNodes()) {
-            nodesToCheckOut.addAll(getAllChildNodes(startNodePath));
+        nodesToCheckOut.add(startNode.getParent().getPath());
+
+        if (startNode.hasNodes()) {
+            List<String> allChildNodes = getAllChildNodes(startNode);
+            nodesToCheckOut.addAll(allChildNodes);
         }
 
         for (String node : nodesToCheckOut) {
@@ -216,18 +218,49 @@ public class VersioningManagerJackrabbit
      * @return
      * @throws RepositoryException
      */
-    private List<String> getAllChildNodes(String startNode) throws RepositoryException {
+    private List<String> getAllChildNodes(Node startNode) throws RepositoryException {
         List<String> nodes = new ArrayList<String>();
-        NodeIterator ni = ocm.getSession().getNode(startNode).getNodes();
-        while (ni.hasNext()) {
-            Node nextNode = ni.nextNode();
-            if (nextNode.hasNodes()) {
-                nodes.addAll(getAllChildNodes(nextNode.getPath()));
+
+        NodeIterator subNodeIterator = startNode.getNodes();
+        while (subNodeIterator.hasNext()) {
+            Node subNode = subNodeIterator.nextNode();
+
+            if (subNode.hasNodes()) {
+                nodes.addAll(getAllChildNodes(subNode));
             }
 
-            nodes.add(nextNode.getPath());
+            nodes.add(subNode.getPath());
         }
 
         return nodes;
     }
+
+    private void checkinNode(String nodePath) throws RepositoryException, UnsupportedRepositoryOperationException, VersionException {
+        if (doNodeExist(nodePath) && this.isNodeCheckedOut(nodePath)) {
+            this.ocm.checkin(nodePath);
+        }
+    }
+
+    private Node getNode(String startNodePath) throws PathNotFoundException, RepositoryException {
+        return ocm.getSession().getNode(startNodePath);
+    }
+
+    private boolean isNotRootVersion(Version version) {
+        return !ConstantsJackrabbit.ROOTVERSION.equals(version.getName());
+    }
+
+    private boolean doNodeExist(String nodePath) throws RepositoryException {
+        return this.ocm.getSession().nodeExists(nodePath);
+    }
+
+    private boolean isNodeNotCheckedOut(String nodePath) throws RepositoryException, UnsupportedRepositoryOperationException {
+        return !isNodeCheckedOut(nodePath);
+    }
+
+    private boolean isNodeCheckedOut(String nodePath) throws UnsupportedRepositoryOperationException, RepositoryException {
+        boolean isNodeMarkedAsCheckedOut = this.ocm.getSession().getWorkspace().getVersionManager().isCheckedOut(nodePath);
+        boolean isNodeInCheckedOutNodeStore = checkedOutNodeStore.contains(nodePath);
+
+        return (isNodeMarkedAsCheckedOut && isNodeInCheckedOutNodeStore);
+    }
 }

Modified: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitArticleHelper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitArticleHelper.java?rev=1327470&r1=1327469&r2=1327470&view=diff
==============================================================================
--- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitArticleHelper.java (original)
+++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitArticleHelper.java Wed Apr 18 12:22:20 2012
@@ -22,7 +22,7 @@ import org.ofbiz.jcr.access.jackrabbit.J
 import org.ofbiz.jcr.api.JcrDataHelper;
 import org.ofbiz.jcr.orm.OfbizRepositoryMapping;
 import org.ofbiz.jcr.orm.jackrabbit.JackrabbitArticle;
-import org.ofbiz.jcr.util.jackrabbit.JcrUtilJackrabbit;
+import org.ofbiz.jcr.util.jackrabbit.JackrabbitUtils;
 
 /**
  * This Helper class encapsulate the jcr article content bean. it provide all
@@ -126,7 +126,7 @@ public class JackrabbitArticleHelper ext
     @Override
     public void storeContentInRepository(String contentPath, String language, String title, String content, Calendar publicationDate) throws ObjectContentManagerException, ItemExistsException {
         if (UtilValidate.isEmpty(language)) {
-            language = JcrUtilJackrabbit.determindeTheDefaultLanguage();
+            language = JackrabbitUtils.determindeTheDefaultLanguage();
         }
 
         // construct the content article object
@@ -248,8 +248,8 @@ public class JackrabbitArticleHelper ext
 
         if (super.access.checkIfNodeExist(canonicalizedContentPath + contentLanguage) && checkIfNodeHaveValidLanguageMixIn(canonicalizedContentPath + contentLanguage)) {
             contentPath = canonicalizedContentPath + contentLanguage;
-        } else if (super.access.checkIfNodeExist(canonicalizedContentPath + JcrUtilJackrabbit.determindeTheDefaultLanguage())) {
-            contentPath = canonicalizedContentPath + JcrUtilJackrabbit.determindeTheDefaultLanguage();
+        } else if (super.access.checkIfNodeExist(canonicalizedContentPath + JackrabbitUtils.determindeTheDefaultLanguage())) {
+            contentPath = canonicalizedContentPath + JackrabbitUtils.determindeTheDefaultLanguage();
         } else {
             contentPath = determineFirstAvailableLanguageNode(canonicalizedContentPath);
         }

Modified: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitFileHelper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitFileHelper.java?rev=1327470&r1=1327469&r2=1327470&view=diff
==============================================================================
--- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitFileHelper.java (original)
+++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitFileHelper.java Wed Apr 18 12:22:20 2012
@@ -22,7 +22,7 @@ import org.ofbiz.jcr.orm.jackrabbit.Jack
 import org.ofbiz.jcr.orm.jackrabbit.JackrabbitFolder;
 import org.ofbiz.jcr.orm.jackrabbit.JackrabbitHierarchyNode;
 import org.ofbiz.jcr.orm.jackrabbit.JackrabbitResource;
-import org.ofbiz.jcr.util.jackrabbit.JcrUtilJackrabbit;
+import org.ofbiz.jcr.util.jackrabbit.JackrabbitUtils;
 
 /**
  * This Helper class encapsulate the jcr file content bean. it provide all
@@ -120,7 +120,7 @@ public class JackrabbitFileHelper extend
 
         // Create the folder if necessary, otherwise we just update the folder
         // content
-        folderPath = JcrUtilJackrabbit.createAbsoluteNodePath(folderPath);
+        folderPath = JackrabbitUtils.createAbsoluteNodePath(folderPath);
         if (super.access.checkIfNodeExist(folderPath)) {
             OfbizRepositoryMapping orm = super.access.getContentObject(folderPath);
             if (orm instanceof JackrabbitFolder) {

Modified: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java?rev=1327470&r1=1327469&r2=1327470&view=diff
==============================================================================
--- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java (original)
+++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java Wed Apr 18 12:22:20 2012
@@ -34,6 +34,7 @@ import javax.jcr.Workspace;
 import javax.jcr.nodetype.NoSuchNodeTypeException;
 import javax.jcr.nodetype.NodeTypeManager;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.core.TransientRepository;
 import org.apache.jackrabbit.core.nodetype.InvalidNodeTypeDefException;
 import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
@@ -128,7 +129,11 @@ public class JCRFactoryImpl implements J
         if (removeRepositoryOnShutdown) {
             if (UtilValidate.isNotEmpty(homeDir)) {
                 File homeDirFile = new File(homeDir);
-                homeDirFile.deleteOnExit();
+                try {
+                    FileUtils.deleteDirectory(homeDirFile);
+                } catch (IOException e) {
+                    Debug.logError(e, module);
+                }
             }
         }
     }

Modified: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/orm/jackrabbit/JackrabbitHierarchyNode.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/orm/jackrabbit/JackrabbitHierarchyNode.java?rev=1327470&r1=1327469&r2=1327470&view=diff
==============================================================================
--- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/orm/jackrabbit/JackrabbitHierarchyNode.java (original)
+++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/orm/jackrabbit/JackrabbitHierarchyNode.java Wed Apr 18 12:22:20 2012
@@ -5,7 +5,7 @@ import java.util.Calendar;
 import org.apache.jackrabbit.ocm.mapper.impl.annotation.Field;
 import org.apache.jackrabbit.ocm.mapper.impl.annotation.Node;
 import org.ofbiz.jcr.orm.OfbizRepositoryMapping;
-import org.ofbiz.jcr.util.jackrabbit.JcrUtilJackrabbit;
+import org.ofbiz.jcr.util.jackrabbit.JackrabbitUtils;
 
 @Node(jcrType = "nt:hierarchyNode", jcrMixinTypes="mix:versionable")
 public class JackrabbitHierarchyNode implements OfbizRepositoryMapping {
@@ -21,7 +21,7 @@ public class JackrabbitHierarchyNode imp
 
     public void setPath(String nodePath) {
         // check if the node path is an absolute path
-        this.path = JcrUtilJackrabbit.createAbsoluteNodePath(nodePath);
+        this.path = JackrabbitUtils.createAbsoluteNodePath(nodePath);
     }
 
     public Calendar getCreationDate() {

Modified: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/test/JackrabbitTests.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/test/JackrabbitTests.java?rev=1327470&r1=1327469&r2=1327470&view=diff
==============================================================================
--- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/test/JackrabbitTests.java (original)
+++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/test/JackrabbitTests.java Wed Apr 18 12:22:20 2012
@@ -53,7 +53,7 @@ import org.ofbiz.jcr.loader.JCRFactory;
 import org.ofbiz.jcr.loader.JCRFactoryUtil;
 import org.ofbiz.jcr.loader.jackrabbit.JCRFactoryImpl;
 import org.ofbiz.jcr.orm.jackrabbit.JackrabbitArticle;
-import org.ofbiz.jcr.util.jackrabbit.JcrUtilJackrabbit;
+import org.ofbiz.jcr.util.jackrabbit.JackrabbitUtils;
 import org.ofbiz.service.ServiceUtil;
 import org.ofbiz.service.testtools.OFBizTestCase;
 
@@ -105,24 +105,24 @@ public class JackrabbitTests extends OFB
     //
 
     public void testCreateAbsoluteAndNormalizedNodePath() {
-        String result = JcrUtilJackrabbit.createAbsoluteNodePath("foo/baa");
+        String result = JackrabbitUtils.createAbsoluteNodePath("foo/baa");
 
         assertEquals("/foo/baa", result);
     }
 
     public void testCheckIfNodePathIsAbsoluteAndNormalized() {
-        assertFalse(JcrUtilJackrabbit.checkIfNodePathIsAbsolute("foo/baa"));
-        assertFalse(JcrUtilJackrabbit.checkIfNodePathIsAbsolute("foo/baa/"));
-        assertTrue(JcrUtilJackrabbit.checkIfNodePathIsAbsolute("/foo/baa/"));
-        assertTrue(JcrUtilJackrabbit.checkIfNodePathIsAbsolute("/foo/baa"));
+        assertFalse(JackrabbitUtils.checkIfNodePathIsAbsolute("foo/baa"));
+        assertFalse(JackrabbitUtils.checkIfNodePathIsAbsolute("foo/baa/"));
+        assertTrue(JackrabbitUtils.checkIfNodePathIsAbsolute("/foo/baa/"));
+        assertTrue(JackrabbitUtils.checkIfNodePathIsAbsolute("/foo/baa"));
     }
 
     public void testListRepositoryNodes() throws Exception {
-        assertNotNull(JcrUtilJackrabbit.getRepositoryNodes(userLogin, null));
+        assertNotNull(JackrabbitUtils.getRepositoryNodes(userLogin, null));
     }
 
     public void testDefaultLanguage() {
-        assertEquals(UtilProperties.getPropertyValue("general", "locale.properties.fallback"), JcrUtilJackrabbit.determindeTheDefaultLanguage());
+        assertEquals(UtilProperties.getPropertyValue("general", "locale.properties.fallback"), JackrabbitUtils.determindeTheDefaultLanguage());
     }
 
     //

Copied: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/util/jackrabbit/JackrabbitUtils.java (from r1327107, ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/util/jackrabbit/JcrUtilJackrabbit.java)
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/util/jackrabbit/JackrabbitUtils.java?p2=ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/util/jackrabbit/JackrabbitUtils.java&p1=ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/util/jackrabbit/JcrUtilJackrabbit.java&r1=1327107&r2=1327470&rev=1327470&view=diff
==============================================================================
--- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/util/jackrabbit/JcrUtilJackrabbit.java (original)
+++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/util/jackrabbit/JackrabbitUtils.java Wed Apr 18 12:22:20 2012
@@ -17,9 +17,9 @@ import org.ofbiz.entity.GenericValue;
 import org.ofbiz.jcr.access.jackrabbit.ConstantsJackrabbit;
 import org.ofbiz.jcr.loader.JCRFactoryUtil;
 
-public class JcrUtilJackrabbit {
+public class JackrabbitUtils {
 
-    public static final String module = JcrUtilJackrabbit.class.getName();
+    public static final String module = JackrabbitUtils.class.getName();
 
     /**
      * A method to list all nodes in the repository. The result List contains
@@ -125,4 +125,16 @@ public class JcrUtilJackrabbit {
     public static String determindeTheDefaultLanguage() {
         return UtilProperties.getPropertyValue("general", "locale.properties.fallback");
     }
+
+    public static boolean isNotARootNode(Node node) throws RepositoryException {
+        return !isARootNode(node);
+    }
+
+    public static boolean isARootNode(Node node) throws RepositoryException {
+        return isARootNode(node.getPath());
+    }
+
+    public static boolean isARootNode(String nodePath) {
+        return ConstantsJackrabbit.ROOTPATH.equals(nodePath);
+    }
 }

Propchange: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/util/jackrabbit/JackrabbitUtils.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain