Author: tolusha
Date: 2012-03-12 07:15:29 -0400 (Mon, 12 Mar 2012)
New Revision: 5838
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java
Log:
EXOJCR-1799: Prevent an infinite loop in case a node is its own parent
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java 2012-03-12
11:13:29 UTC (rev 5837)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java 2012-03-12
11:15:29 UTC (rev 5838)
@@ -1148,11 +1148,18 @@
throw new InvalidItemStateException("Parent not found, uuid: " +
getIdentifier(caid));
}
+ String cid = result.getString(COLUMN_ID);
+
QPathEntry qpe1 =
- new QPathEntry(InternalQName.parse(result.getString(COLUMN_NAME)),
result.getInt(COLUMN_INDEX),
- result.getString(COLUMN_ID));
- boolean isChild = caid.equals(result.getString(COLUMN_ID));
+ new QPathEntry(InternalQName.parse(result.getString(COLUMN_NAME)),
result.getInt(COLUMN_INDEX), cid);
+ boolean isChild = caid.equals(cid);
+
caid = result.getString(COLUMN_PARENTID);
+ if (cid.equals(caid))
+ {
+ throw new InvalidItemStateException("An item with id='" +
getIdentifier(caid) + "' is its own parent");
+ }
+
if (result.next())
{
QPathEntry qpe2 =
Show replies by date