[exo-jcr-commits] exo-jcr SVN: r3295 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Oct 14 09:35:50 EDT 2010


Author: tolusha
Date: 2010-10-14 09:35:50 -0400 (Thu, 14 Oct 2010)
New Revision: 3295

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java
Log:
EXOJCR-993: Check that CacheableWorkspaceDataManager.getCachedItemData() method can return NullNodeData

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java	2010-10-14 13:01:15 UTC (rev 3294)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java	2010-10-14 13:35:50 UTC (rev 3295)
@@ -28,6 +28,7 @@
 import org.exoplatform.services.jcr.datamodel.ItemData;
 import org.exoplatform.services.jcr.datamodel.ItemType;
 import org.exoplatform.services.jcr.datamodel.NodeData;
+import org.exoplatform.services.jcr.datamodel.NullNodeData;
 import org.exoplatform.services.jcr.datamodel.PropertyData;
 import org.exoplatform.services.jcr.datamodel.QPath;
 import org.exoplatform.services.jcr.datamodel.QPathEntry;
@@ -158,30 +159,43 @@
    {
       // from cache at first
       ItemData cdata = persistentManager.getCachedItemData(identifier);
-      if (cdata != null)
+      if (cdata != null && !(cdata instanceof NullNodeData))
+      {
          return super.getItemData(identifier);
+      }
 
       if (!this.equals(versionDataManager) && !identifier.equals(Constants.ROOT_UUID))
       {
          // search in System cache for /jcr:system nodes only
          cdata = versionDataManager.persistentManager.getCachedItemData(identifier);
-         if (cdata != null)
+         if (cdata != null && !(cdata instanceof NullNodeData))
+         {
             if (isSystemDescendant(cdata.getQPath()))
+            {
                return versionDataManager.getItemData(identifier);
+            }
             else
+            {
                return null;
+            }
+         }
       }
 
       // then from persistence
       ItemData data = super.getItemData(identifier);
       if (data != null)
+      {
          return data;
+      }
+      
       else if (!this.equals(versionDataManager))
       {
          // try from version storage if not the same
          data = versionDataManager.getItemData(identifier);
          if (data != null && isSystemDescendant(data.getQPath()))
+         {
             return data;
+         }
       }
       return null;
    }



More information about the exo-jcr-commits mailing list