[exo-jcr-commits] exo-jcr SVN: r2176 - jcr/trunk/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 Mar 26 12:25:41 EDT 2010


Author: pnedonosko
Date: 2010-03-26 12:25:40 -0400 (Fri, 26 Mar 2010)
New Revision: 2176

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
Log:
EXOJCR-614 check of deleted REFERENCE property in getReferences()

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java	2010-03-26 15:52:20 UTC (rev 2175)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java	2010-03-26 16:25:40 UTC (rev 2176)
@@ -591,34 +591,31 @@
    {
       List<PropertyData> refDatas = transactionableManager.getReferencesData(identifier, true);
       List<PropertyImpl> refs = new ArrayList<PropertyImpl>(refDatas.size());
-      for (int i = 0, length = refDatas.size(); i < length; i++)
+      for (PropertyData data : refDatas)
       {
-         PropertyData data = refDatas.get(i);
+         ItemState state = changesLog.getItemState(data.getIdentifier());
+         if (state != null)
+         {
+            if (state.isDeleted())
+            {
+               // if the Property was deleted skip it for now
+               continue;
+            }
+
+            // otherwise use transient data
+            data = (PropertyData)state.getData();
+         }
+
          NodeData parent = (NodeData)getItemData(data.getParentIdentifier());
-         // if parent exists check for read permissions, otherwise the ref property was deleted in this session but not yet saved.
+         // if parent exists check for read permissions, otherwise the parent was deleted in another session.
          if (parent != null)
          {
             // skip not permitted
             if (accessManager.hasPermission(parent.getACL(), new String[]{PermissionType.READ}, session.getUserState()
                .getIdentity()))
             {
-               PropertyImpl item;
-               ItemState state = changesLog.getItemState(data.getIdentifier());
-               if (state != null)
-               {
-                  if (state.isDeleted())
-                  {
-                     // skip deleted
-                     continue;
-                  }
+               PropertyImpl item = (PropertyImpl)readItem(data, null, true, false);
 
-                  item = (PropertyImpl)readItem(state.getData(), null, true, false);
-               }
-               else
-               {
-                  item = (PropertyImpl)readItem(data, null, true, false);
-               }
-
                refs.add(item);
                session.getActionHandler().postRead(item);
             }



More information about the exo-jcr-commits mailing list