[dna-commits] DNA SVN: r751 - in trunk/dna-jcr/src: test/java/org/jboss/dna/jcr and 1 other directory.

dna-commits at lists.jboss.org dna-commits at lists.jboss.org
Tue Mar 3 19:54:32 EST 2009


Author: rhauch
Date: 2009-03-03 19:54:32 -0500 (Tue, 03 Mar 2009)
New Revision: 751

Modified:
   trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/AbstractJcrItem.java
   trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/AbstractJcrNode.java
   trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/AbstractJcrNodeTest.java
   trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/AbstractJcrPropertyTest.java
   trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/JackrabbitJcrTckTest.java
Log:
DNA-289 AbstractJcrItem.isSame Does Not Match JCR 1.0 Specification

Applied the patch.  One test had to be updated (minor issue), since it was updated for DNA-290 after the patch was uploaded.  Also added another JCR TCK unit test to the mix, since all of its test methods were passing.

Modified: trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/AbstractJcrItem.java
===================================================================
--- trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/AbstractJcrItem.java	2009-03-04 00:36:43 UTC (rev 750)
+++ trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/AbstractJcrItem.java	2009-03-04 00:54:32 UTC (rev 751)
@@ -69,7 +69,26 @@
      * @see javax.jcr.Item#isSame(javax.jcr.Item)
      */
     public boolean isSame( Item otherItem ) throws RepositoryException {
-        return (getSession().getWorkspace() == otherItem.getSession().getWorkspace());
+        assert getSession() != null;
+        assert otherItem.getSession() != null;
+        assert getSession().getRepository() != null;
+        assert otherItem.getSession().getRepository() != null;
+
+        if (getSession().getRepository() != otherItem.getSession().getRepository()) {
+            return false;
+        }
+
+        assert getSession().getWorkspace() != null;
+        assert otherItem.getSession().getWorkspace() != null;
+
+        String workspaceName = getSession().getWorkspace().getName();
+        String otherWorkspaceName = otherItem.getSession().getWorkspace().getName();
+
+        if (workspaceName == null) {
+            return otherWorkspaceName == null;
+        }
+
+        return workspaceName.equals(otherWorkspaceName);
     }
 
     /**

Modified: trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/AbstractJcrNode.java
===================================================================
--- trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/AbstractJcrNode.java	2009-03-04 00:36:43 UTC (rev 750)
+++ trunk/dna-jcr/src/main/java/org/jboss/dna/jcr/AbstractJcrNode.java	2009-03-04 00:54:32 UTC (rev 751)
@@ -40,6 +40,7 @@
 import javax.jcr.PathNotFoundException;
 import javax.jcr.Property;
 import javax.jcr.PropertyIterator;
+import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.UnsupportedRepositoryOperationException;
@@ -461,9 +462,14 @@
      * @throws UnsupportedOperationException always
      * @see javax.jcr.Node#getReferences()
      */
-    public final PropertyIterator getReferences() {
-        // TODO: Need to provide this at the DNA layer first (probably via a connector query)
-        throw new UnsupportedOperationException();
+    public final PropertyIterator getReferences() throws RepositoryException {
+        // Iterate through the properties to see which ones have a REFERENCE type ...
+        Set<Property> references = new HashSet<Property>();
+        for (Property property : properties) {
+            if (property.getType() == PropertyType.REFERENCE) references.add(property);
+        }
+        if (references.isEmpty()) return new JcrEmptyPropertyIterator();
+        return new JcrPropertyIterator(references);
     }
 
     /**

Modified: trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/AbstractJcrNodeTest.java
===================================================================
--- trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/AbstractJcrNodeTest.java	2009-03-04 00:36:43 UTC (rev 750)
+++ trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/AbstractJcrNodeTest.java	2009-03-04 00:54:32 UTC (rev 751)
@@ -40,6 +40,8 @@
 import javax.jcr.Node;
 import javax.jcr.PathNotFoundException;
 import javax.jcr.Property;
+import javax.jcr.PropertyIterator;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.Value;
@@ -110,6 +112,10 @@
     private AbstractJcrNode node;
     @Mock
     private JcrSession session;
+    @Mock
+    private Workspace workspace;
+    @Mock
+    private Repository repository;
     private List<Segment> children;
     private Set<Property> properties;
 
@@ -317,9 +323,11 @@
         node.getProperty("child/prop");
     }
 
-    @Test( expected = UnsupportedOperationException.class )
+    @Test
     public void shouldNotAllowGetReferences() throws Exception {
-        node.getReferences();
+        PropertyIterator iter = node.getReferences();
+        assertThat(iter, is(notNullValue()));
+        assertThat(iter.getSize(), is(0L));
     }
 
     @Test
@@ -465,9 +473,15 @@
     @Test
     public void shouldProvideIsSame() throws Exception {
         stub(session.getWorkspace()).toReturn(Mockito.mock(Workspace.class));
+        stub(session.getRepository()).toReturn(repository);
         JcrSession session2 = Mockito.mock(JcrSession.class);
+        JcrRepository repository2 = Mockito.mock(JcrRepository.class);
+
+        stub(session2.getRepository()).toReturn(repository2);
+        stub(session2.getWorkspace()).toReturn(workspace);
         Node node2 = new MockAbstractJcrNode(session2, node.getName(), node.getParent());
         assertThat(node.isSame(node2), is(false));
+
         Property prop = Mockito.mock(Property.class);
         stub(prop.getSession()).toReturn(session);
         assertThat(node.isSame(prop), is(false));

Modified: trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/AbstractJcrPropertyTest.java
===================================================================
--- trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/AbstractJcrPropertyTest.java	2009-03-04 00:36:43 UTC (rev 750)
+++ trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/AbstractJcrPropertyTest.java	2009-03-04 00:54:32 UTC (rev 751)
@@ -33,8 +33,10 @@
 import javax.jcr.ItemVisitor;
 import javax.jcr.Node;
 import javax.jcr.Property;
+import javax.jcr.Repository;
 import javax.jcr.Session;
 import javax.jcr.Value;
+import javax.jcr.Workspace;
 import javax.jcr.nodetype.PropertyDefinition;
 import org.jboss.dna.common.util.StringUtil;
 import org.jboss.dna.graph.ExecutionContext;
@@ -53,6 +55,10 @@
 
     private AbstractJcrProperty prop;
     @Mock
+    private Workspace workspace;
+    @Mock
+    private Repository repository;
+    @Mock
     private Session session;
     @Mock
     private Node node;
@@ -66,6 +72,8 @@
     @Before
     public void before() throws Exception {
         MockitoAnnotations.initMocks(this);
+        stub(session.getWorkspace()).toReturn(workspace);
+        stub(session.getRepository()).toReturn(repository);
         stub(node.getSession()).toReturn(session);
         stub(executionContext.getNamespaceRegistry()).toReturn(namespaceRegistry);
         prop = new MockAbstractJcrProperty(node, executionContext, name);

Modified: trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/JackrabbitJcrTckTest.java
===================================================================
--- trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/JackrabbitJcrTckTest.java	2009-03-04 00:36:43 UTC (rev 750)
+++ trunk/dna-jcr/src/test/java/org/jboss/dna/jcr/JackrabbitJcrTckTest.java	2009-03-04 00:54:32 UTC (rev 751)
@@ -73,7 +73,7 @@
             // See https://jira.jboss.org/jira/browse/DNA-285
 
             addTestSuite(org.apache.jackrabbit.test.api.RootNodeTest.class);
-            // addTestSuite(org.apache.jackrabbit.test.api.NodeReadMethodsTest.class);
+            addTestSuite(org.apache.jackrabbit.test.api.NodeReadMethodsTest.class);
             // addTestSuite(org.apache.jackrabbit.test.api.PropertyTypeTest.class);
             addTestSuite(org.apache.jackrabbit.test.api.NodeDiscoveringNodeTypesTest.class);
             addTestSuite(org.apache.jackrabbit.test.api.BinaryPropertyTest.class);




More information about the dna-commits mailing list