[exo-jcr-commits] exo-jcr SVN: r2345 - jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Apr 30 09:56:49 EDT 2010


Author: tolusha
Date: 2010-04-30 09:56:48 -0400 (Fri, 30 Apr 2010)
New Revision: 2345

Modified:
   jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
   jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
Log:
EXOJCR-635: Avoid unneccesary checks in persistence

Modified: jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
===================================================================
--- jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java	2010-04-30 09:37:45 UTC (rev 2344)
+++ jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java	2010-04-30 13:56:48 UTC (rev 2345)
@@ -416,7 +416,9 @@
       int version;
       PropertyImpl prevProp;
       PropertyDefinitionDatas defs;
-      ItemImpl prevItem = dataManager.getItem(parentNode.nodeData(), new QPathEntry(propertyName, 0), true);
+      ItemImpl prevItem =
+         dataManager.getItem(parentNode.nodeData(), new QPathEntry(propertyName, 0), true, dataManager.isNew(parentNode
+            .getIdentifier()));
 
       NodeTypeDataManager ntm = session.getWorkspace().getNodeTypesHolder();
       NodeData parentData = (NodeData)parentNode.getData();

Modified: jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
===================================================================
--- jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java	2010-04-30 09:37:45 UTC (rev 2344)
+++ jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java	2010-04-30 13:56:48 UTC (rev 2345)
@@ -200,6 +200,15 @@
     */
    public ItemData getItemData(NodeData parent, QPathEntry name) throws RepositoryException
    {
+      return getItemData(parent, name, false);
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   private ItemData getItemData(NodeData parent, QPathEntry name, boolean skipCheckInPersistence)
+      throws RepositoryException
+   {
       if (name.getName().equals(JCRPath.PARENT_RELPATH) && name.getNamespace().equals(Constants.NS_DEFAULT_URI))
       {
          if (parent.getIdentifier().equals(Constants.ROOT_UUID))
@@ -219,7 +228,10 @@
       if (state == null)
       {
          // 2. Try from txdatamanager
-         data = transactionableManager.getItemData(parent, name);
+         if (!(skipCheckInPersistence))
+         {
+            data = transactionableManager.getItemData(parent, name);
+         }
       }
       else if (!state.isDeleted())
       {
@@ -290,6 +302,45 @@
    }
 
    /**
+    * Return Item by parent NodeDada and the name of searched item.
+    * 
+    * @param parent
+    *          - parent of the searched item
+    * @param name
+    *          - item name
+    * @param pool
+    *          - indicates does the item fall in pool
+    * @param skipCheckInPersistence
+    *          - skip getting Item from persistence if need
+    * @return existed item or null if not found
+    * @throws RepositoryException
+    */
+   public ItemImpl getItem(NodeData parent, QPathEntry name, boolean pool, boolean skipCheckInPersistence)
+      throws RepositoryException
+   {
+      long start = System.currentTimeMillis();
+      if (log.isDebugEnabled())
+      {
+         log.debug("getItem(" + parent.getQPath().getAsString() + " + " + name.getAsString() + " ) >>>>>");
+      }
+
+      ItemImpl item = null;
+      try
+      {
+         return item = readItem(getItemData(parent, name, skipCheckInPersistence), pool);
+      }
+      finally
+      {
+         if (log.isDebugEnabled())
+         {
+            log.debug("getItem(" + parent.getQPath().getAsString() + " + " + name.getAsString() + ") --> "
+               + (item != null ? item.getPath() : "null") + " <<<<< " + ((System.currentTimeMillis() - start) / 1000d)
+               + "sec");
+         }
+      }
+   }
+
+   /**
     * Return Item by parent NodeDada and array of QPathEntry which represent a relative path to the
     * searched item
     * 



More information about the exo-jcr-commits mailing list