[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