Author: nzamosenchuk
Date: 2010-06-30 04:07:27 -0400 (Wed, 30 Jun 2010)
New Revision: 2722
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/observation/TestSessionsObservation.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/reading/TestSession.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/access/TestAccess.java
Log:
EXOJCR-768: Fixing some tests that were using a session after logout. And added
log.warn(...) in ItemImpl.checkValid() if session is logged out.
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java 2010-06-30
08:06:30 UTC (rev 2721)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java 2010-06-30
08:07:27 UTC (rev 2722)
@@ -153,8 +153,18 @@
*/
protected boolean checkValid() throws InvalidItemStateException
{
+ if (!session.isLive())
+ {
+ log
+ .warn(
+ "This kind of operation is forbidden after a session.logout(), please
note that an exception will be raised in the next jcr version.",
+ new Exception());
+ }
+
if (data == null)
+ {
throw new InvalidItemStateException("Invalid item state. Item was removed
or discarded.");
+ }
session.updateLastAccessTime();
return true;
@@ -221,7 +231,9 @@
checkValid();
if (isRoot())
+ {
throw new ItemNotFoundException("Root node does not have a parent");
+ }
return parent(true);
}
@@ -251,10 +263,14 @@
if (isValid())
{
if (otherItem == null)
+ {
return false;
+ }
if (!this.getClass().equals(otherItem.getClass()))
+ {
return false;
+ }
try
{
@@ -454,7 +470,9 @@
identifier = prevProp.getInternalIdentifier();
version = prevProp.getData().getPersistedVersion();
if (propertyValues == null)
+ {
state = ItemState.DELETED;
+ }
else
{
state = ItemState.UPDATED;
@@ -551,7 +569,9 @@
else
{
if (log.isDebugEnabled())
+ {
log.debug("Set null value (" + getPath() + ",
multivalued: " + multiValue + ")");
+ }
}
}
}
@@ -642,10 +662,14 @@
// mix:referenceable
if (changedItem.isDeleted())
+ {
refNodes.add(refNode); // add to refs (delete - alway is first)
+ }
else if (changedItem.isAdded() || changedItem.isRenamed())
+ {
refNodes.remove(refNode); // remove from refs (add - always at the
- // end)
+ // end)
+ }
}
}
}
@@ -659,7 +683,9 @@
// if ref property is deleted in this session
ItemState refState =
dataManager.getChangesLog().getItemState(refProp.getIdentifier());
if (refState != null && refState.isDeleted())
+ {
continue;
+ }
NodeData refParent =
(NodeData)dataManager.getItemData(refProp.getParentIdentifier());
AccessControlList acl = refParent.getACL();
@@ -803,7 +829,9 @@
public JCRPath getLocation() throws RepositoryException
{
if (this.location == null)
+ {
this.location = session.getLocationFactory().createJCRPath(qpath);
+ }
return this.location;
}
@@ -869,7 +897,9 @@
ItemImpl otherItem = (ItemImpl)obj;
if (!otherItem.isValid() || !this.isValid())
+ {
return false;
+ }
try
{
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/observation/TestSessionsObservation.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/observation/TestSessionsObservation.java 2010-06-30
08:06:30 UTC (rev 2721)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/observation/TestSessionsObservation.java 2010-06-30
08:07:27 UTC (rev 2722)
@@ -59,6 +59,9 @@
testRootWs.remove();
session.save();
+ sessionWs1 = (SessionImpl)repository.login(credentials, "ws1");
+ testRootWs1 = sessionWs1.getRootNode().getNode("observationTest");
+
testRootWs1.remove();
sessionWs1.save();
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/reading/TestSession.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/reading/TestSession.java 2010-06-30
08:06:30 UTC (rev 2721)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/reading/TestSession.java 2010-06-30
08:07:27 UTC (rev 2722)
@@ -20,6 +20,7 @@
import org.exoplatform.services.jcr.JcrAPIBaseTest;
import org.exoplatform.services.jcr.core.CredentialsImpl;
+import org.exoplatform.services.jcr.impl.core.SessionImpl;
import java.util.Calendar;
@@ -86,7 +87,8 @@
public void testLogout() throws Exception
{
- session.logout();
+ Session localSession = repository.login(credentials, "ws");
+ localSession.logout();
}
public void testGetRootNode() throws RepositoryException
@@ -150,7 +152,9 @@
{
// folder.refresh(false);
if (log.isDebugEnabled())
+ {
log.debug("SDM before remove: " +
session.getTransientNodesManager().dump());
+ }
folder.remove();
session.save();
}
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/access/TestAccess.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/access/TestAccess.java 2010-06-30
08:06:30 UTC (rev 2721)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/access/TestAccess.java 2010-06-30
08:07:27 UTC (rev 2722)
@@ -67,7 +67,9 @@
session.save();
}
else
+ {
accessTestRoot =
(ExtendedNode)session.getRootNode().getNode("accessTestRoot");
+ }
}
@Override
@@ -78,6 +80,7 @@
super.tearDown();
}
+ @Override
public String getRepositoryName()
{
return "db1";
@@ -178,7 +181,9 @@
session.save();
if (log.isDebugEnabled())
+ {
log.debug("NODE PERM 1 >>> " + node.getACL().dump());
+ }
// change permission
HashMap<String, String[]> perm = new HashMap<String, String[]>();
perm.put("john", new String[]{PermissionType.ADD_NODE,
PermissionType.READ});
@@ -187,22 +192,30 @@
// showPermissions("accessTestRoot/testIfPermissionSaved");
if (log.isDebugEnabled())
+ {
log.debug("NODE PERM 1 >>> " + node.getACL().dump());
+ }
session.save();
if (log.isDebugEnabled())
+ {
log.debug("NODE PERM 2 >>> " + node.getACL().dump());
+ }
// get node in new session
NodeImpl testNode =
(NodeImpl)repository.getSystemSession().getRootNode().getNode("accessTestRoot/testIfPermissionSaved");
if (log.isDebugEnabled())
+ {
log.debug("NODE PERM 4 >>> " + node.getACL().dump());
+ }
if (log.isDebugEnabled())
+ {
log.debug("TEST PERM >>> " + testNode.getACL().dump());
+ }
showPermissions("accessTestRoot/testIfPermissionSaved");
@@ -784,8 +797,8 @@
(ExtendedNode)session2.getRootNode().getNode("accessTestRoot/testRemoveExoOwnable/subroot");
assertEquals("john",
subRoot2.getProperty("exo:owner").getString());
assertEquals("john", subRoot2.getACL().getOwner());
- Node testNode2 = subRoot1.getNode("node");
- testNode.remove();
+ Node testNode2 = subRoot2.getNode("node");
+ testNode2.remove();
session2.save();
@@ -1087,7 +1100,9 @@
NodeImpl node =
(NodeImpl)this.repository.getSystemSession().getRootNode().getNode(path);
AccessControlList acl = node.getACL();
if (log.isDebugEnabled())
+ {
log.debug("DUMP: " + acl.dump());
+ }
}