You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fg...@apache.org on 2009/08/02 21:38:23 UTC

svn commit: r800139 - in /incubator/chemistry/trunk/chemistry: chemistry-api/src/main/java/org/apache/chemistry/ chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/ chemistry-commons/src/main/java/org/apache/chemistry/impl/simpl...

Author: fguillaume
Date: Sun Aug  2 19:38:23 2009
New Revision: 800139

URL: http://svn.apache.org/viewvc?rev=800139&view=rev
Log:
CMIS-44: removed returnToRoot SPI#getFolderParent, returns a single object

Modified:
    incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/CMISObject.java
    incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/Folder.java
    incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/SPI.java
    incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPConnection.java
    incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPFolder.java
    incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleConnection.java
    incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleFolder.java
    incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrConnection.java
    incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrFolder.java
    incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrNewFolder.java
    incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java

Modified: incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/CMISObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/CMISObject.java?rev=800139&r1=800138&r2=800139&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/CMISObject.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/CMISObject.java Sun Aug  2 19:38:23 2009
@@ -106,7 +106,6 @@
      * @return the parent folder, or {@code null}.
      *
      * @see #getParents
-     * @see Folder#getAncestors
      */
     Folder getParent();
 
@@ -118,7 +117,6 @@
      * @return the collection of parent folders
      *
      * @see #getParent
-     * @see Folder#getAncestors
      */
     Collection<Folder> getParents();
 

Modified: incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/Folder.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/Folder.java?rev=800139&r1=800138&r2=800139&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/Folder.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/Folder.java Sun Aug  2 19:38:23 2009
@@ -88,22 +88,6 @@
      */
 
     /**
-     * Gets the ancestors of this folder.
-     * <p>
-     * Returns an ordered list of all ancestor folders from this specified
-     * folder to the root folder. The resulting list is ordered by ancestry,
-     * closest this folder first.
-     * <p>
-     * Returns an empty list if this folder is the root folder.
-     *
-     * @return the list of ancestors
-     *
-     * @see CMISObject#getParent
-     * @see CMISObject#getParents
-     */
-    List<Folder> getAncestors();
-
-    /**
      * Gets the direct children of this folder.
      * <p>
      * The order of returned children is implementation-dependant.

Modified: incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/SPI.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/SPI.java?rev=800139&r1=800138&r2=800139&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/SPI.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/SPI.java Sun Aug  2 19:38:23 2009
@@ -162,26 +162,16 @@
      * Returns {@code null} if the specified folder is the root folder.
      * <p>
      * To find the parent of a non-folder, use {@link #getObjectParents}.
-     * <p>
-     * If returnToRoot is {@code false}, returns only the immediate parent of
-     * the folder. If {@code true}, return an ordered list of all ancestor
-     * folders from the specified folder to the root folder. The resulting list
-     * is ordered by ancestry, closest to specified folder first. However, as
-     * XML clients may not always respect ordering, repositories should always
-     * include the parent and the ObjectID property in the filter to allow
-     * re-ordering if necessary.
      *
      * @param folder the folder
      * @param filter the properties filter, or {@code null} for all properties
      * @param includeAllowableActions {@code true} to include allowable actions
      * @param includeRelationships {@code true} if relationships should be
      *            included as well
-     * @param returnToRoot {@code true} if all ancestors must be returned
      * @return the parents and optionally relationships
      */
-    List<ObjectEntry> getFolderParent(ObjectId folder, String filter,
-            boolean includeAllowableActions, boolean includeRelationships,
-            boolean returnToRoot);
+    ObjectEntry getFolderParent(ObjectId folder, String filter,
+            boolean includeAllowableActions, boolean includeRelationships);
 
     /**
      * Gets the direct parents of an object.

Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPConnection.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPConnection.java?rev=800139&r1=800138&r2=800139&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPConnection.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPConnection.java Sun Aug  2 19:38:23 2009
@@ -274,32 +274,28 @@
         return result;
     }
 
-    public List<ObjectEntry> getFolderParent(ObjectId folder, String filter,
-            boolean includeAllowableActions, boolean includeRelationships,
-            boolean returnToRoot) {
+    public ObjectEntry getFolderParent(ObjectId folder, String filter,
+            boolean includeAllowableActions, boolean includeRelationships) {
         // TODO filter, includeRelationship, includeAllowableActions
-        List<ObjectEntry> result = new LinkedList<ObjectEntry>();
         APPObjectEntry current = getObjectEntry(folder);
         if (!current.getBaseType().equals(BaseType.FOLDER)) {
             throw new IllegalArgumentException("Not a folder: " + folder);
         }
         String rootId = current.connection.getRootFolder().getId();
-        ReadContext ctx = new ReadContext(this);
-        do {
-            if (current.getId().equals(rootId)) {
-                break;
-            }
-            String href = current.getLink(Atom.LINK_UP);
-            Response resp = connector.get(new Request(href));
-            if (!resp.isOk()) {
-                throw new ContentManagerException(
-                        "Remote server returned error code: "
-                                + resp.getStatusCode());
-            }
-            current = (APPObjectEntry) resp.getObject(ctx);
-            result.add(current);
-        } while (returnToRoot);
-        return result;
+        if (current.getId().equals(rootId)) {
+            return null;
+        }
+        String href = current.getLink(Atom.LINK_UP);
+        if (href == null) {
+            return null;
+        }
+        Response resp = connector.get(new Request(href));
+        if (!resp.isOk()) {
+            throw new ContentManagerException(
+                    "Remote server returned error code: "
+                            + resp.getStatusCode());
+        }
+        return (APPObjectEntry) resp.getObject(new ReadContext(this));
     }
 
     public Collection<ObjectEntry> getObjectParents(ObjectId object,

Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPFolder.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPFolder.java?rev=800139&r1=800138&r2=800139&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPFolder.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPFolder.java Sun Aug  2 19:38:23 2009
@@ -56,11 +56,6 @@
         throw new UnsupportedOperationException();
     }
 
-    public List<Folder> getAncestors() {
-        // TODO Auto-generated method stub
-        throw new UnsupportedOperationException();
-    }
-
     public List<CMISObject> getChildren() {
         String href = entry.getLink(Atom.LINK_DOWN);
         Response resp = entry.connection.getConnector().get(new Request(href));

Modified: incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleConnection.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleConnection.java?rev=800139&r1=800138&r2=800139&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleConnection.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleConnection.java Sun Aug  2 19:38:23 2009
@@ -24,7 +24,6 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -248,12 +247,11 @@
         }
     }
 
-    public List<ObjectEntry> getFolderParent(ObjectId folder, String filter,
-            boolean includeAllowableActions, boolean includeRelationships,
-            boolean returnToRoot) {
+    public ObjectEntry getFolderParent(ObjectId folder, String filter,
+            boolean includeAllowableActions, boolean includeRelationships) {
         // TODO filter, includeRelationship, includeAllowableActions
-        List<ObjectEntry> result = new LinkedList<ObjectEntry>();
-        SimpleData data = repository.datas.get(folder.getId());
+        String folderId = folder.getId();
+        SimpleData data = repository.datas.get(folderId);
         if (data == null) {
             throw new RuntimeException("No such folder: " + folder);
         }
@@ -262,21 +260,16 @@
         if (!type.getBaseType().equals(BaseType.FOLDER)) {
             throw new IllegalArgumentException("Not a folder: " + folder);
         }
-        String currentId = (String) data.get(Property.ID);
-        do {
-            Set<String> parents = repository.parents.get(currentId);
-            if (parents == null || parents.isEmpty()) {
-                break;
-            }
-            if (parents.size() > 1) {
-                throw new AssertionError(currentId + " has " + parents.size()
-                        + " parents");
-            }
-            currentId = parents.iterator().next();
-            data = repository.datas.get(currentId);
-            result.add(new SimpleObjectEntry(data, this));
-        } while (returnToRoot);
-        return result;
+        Set<String> parents = repository.parents.get(folderId);
+        if (parents == null || parents.isEmpty()) {
+            return null;
+        }
+        if (parents.size() > 1) {
+            throw new AssertionError(folder + " has " + parents.size()
+                    + " parents");
+        }
+        String parentId = parents.iterator().next();
+        return new SimpleObjectEntry(repository.datas.get(parentId), this);
     }
 
     public Collection<ObjectEntry> getObjectParents(ObjectId object,

Modified: incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleFolder.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleFolder.java?rev=800139&r1=800138&r2=800139&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleFolder.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleFolder.java Sun Aug  2 19:38:23 2009
@@ -47,11 +47,6 @@
         return entry.connection.deleteTree(this, unfiling, true);
     }
 
-    public List<Folder> getAncestors() {
-        // TODO Auto-generated method stub
-        throw new UnsupportedOperationException();
-    }
-
     public List<CMISObject> getChildren() {
         SimpleRepository repository = entry.connection.repository;
         Set<String> ids = repository.children.get(getId());

Modified: incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrConnection.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrConnection.java?rev=800139&r1=800138&r2=800139&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrConnection.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrConnection.java Sun Aug  2 19:38:23 2009
@@ -344,9 +344,8 @@
         throw new UnsupportedOperationException();
     }
 
-    public List<ObjectEntry> getFolderParent(ObjectId folderId, String filter,
-            boolean includeAllowableActions, boolean includeRelationships,
-            boolean returnToRoot) {
+    public ObjectEntry getFolderParent(ObjectId folderId, String filter,
+            boolean includeAllowableActions, boolean includeRelationships) {
         // TODO Auto-generated method stub
         throw new UnsupportedOperationException();
     }

Modified: incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrFolder.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrFolder.java?rev=800139&r1=800138&r2=800139&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrFolder.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrFolder.java Sun Aug  2 19:38:23 2009
@@ -131,11 +131,6 @@
         return Collections.emptySet();
     }
 
-    public List<Folder> getAncestors() {
-        // TODO Auto-generated method stub
-        throw new UnsupportedOperationException();
-    }
-
     public BaseType getBaseType() {
         return BaseType.FOLDER;
     }

Modified: incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrNewFolder.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrNewFolder.java?rev=800139&r1=800138&r2=800139&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrNewFolder.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrNewFolder.java Sun Aug  2 19:38:23 2009
@@ -113,14 +113,6 @@
     }
 
     @Override
-    public List<Folder> getAncestors() {
-        if (!saved) {
-            throw new UnsupportedOperationException();
-        }
-        return super.getAncestors();
-    }
-
-    @Override
     public void save() {
         if (saved) {
             throw new UnsupportedOperationException();

Modified: incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java?rev=800139&r1=800138&r2=800139&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java Sun Aug  2 19:38:23 2009
@@ -196,13 +196,11 @@
 
     public void testGetFolderParent() {
         Folder root = conn.getRootFolder();
-        assertEquals(0,
-                spi.getFolderParent(root, null, false, false, false).size());
+        assertNull(spi.getFolderParent(root, null, false, false));
         ObjectId folder1 = root.getChildren().get(0);
-        assertEquals(1,
-                spi.getFolderParent(folder1, null, false, false, true).size());
-        assertEquals(root.getId(), spi.getFolderParent(folder1, null, false,
-                false, false).get(0).getId());
+        ObjectEntry p1 = spi.getFolderParent(folder1, null, false, false);
+        assertNotNull(p1);
+        assertEquals(root.getId(), p1.getId());
     }
 
     public void testGetObjectParents() {