[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