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 2010/01/14 00:50:39 UTC

svn commit: r899003 - in /incubator/chemistry/trunk/chemistry: chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/jaxrs/ chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/ chemistry-commons/src/main/java...

Author: fguillaume
Date: Wed Jan 13 23:50:39 2010
New Revision: 899003

URL: http://svn.apache.org/viewvc?rev=899003&view=rev
Log:
Make JAX-RS binding support DELETE on descendants and foldertree

Modified:
    incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/jaxrs/AbderaResource.java
    incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java
    incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleConnection.java

Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/jaxrs/AbderaResource.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/jaxrs/AbderaResource.java?rev=899003&r1=899002&r2=899003&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/jaxrs/AbderaResource.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/jaxrs/AbderaResource.java Wed Jan 13 23:50:39 2010
@@ -297,6 +297,20 @@
         return postAbderaEntry(2);
     }
 
+    @DELETE
+    @Path("descendants/{objectid}")
+    public Response deleteDescendants() {
+        // objectid decoded by Abdera getCollectionAdapter
+        return deleteAbderaEntry(2);
+    }
+
+    @DELETE
+    @Path("foldertree/{objectid}")
+    public Response deleteFolderTree() {
+        // objectid decoded by Abdera getCollectionAdapter
+        return deleteAbderaEntry(2);
+    }
+
     @GET
     @Produces(AtomPub.MEDIA_TYPE_ATOM_ENTRY)
     @Path("object")

Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java?rev=899003&r1=899002&r2=899003&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java Wed Jan 13 23:50:39 2010
@@ -74,6 +74,8 @@
 
     protected static String rootFolderId;
 
+    private static String folder1id;
+
     protected static String doc2id;
 
     protected static String doc3id;
@@ -149,6 +151,7 @@
         folder1.setValue("title", "The folder 1 description");
         folder1.setValue("description", "folder 1 title");
         folder1.save();
+        folder1id = folder1.getId();
 
         Folder folder2 = folder1.newFolder("fold");
         folder2.setName("folder2");
@@ -240,8 +243,7 @@
         assertNotNull(ch);
         resp.release();
 
-        resp = client.get(base + "/children/"
-                + repository.getInfo().getRootFolderId().getId() + "?"
+        resp = client.get(base + "/children/" + rootFolderId + "?"
                 + AtomPubCMIS.PARAM_MAX_ITEMS + "=4");
         assertEquals(HttpStatus.SC_OK, resp.getStatus());
         ch = resp.getDocument().getRoot();
@@ -344,12 +346,35 @@
 
     public void testDelete() {
         RequestOptions options = new RequestOptions();
-        options.setContentType(AtomPub.MEDIA_TYPE_ATOM_ENTRY);
         ClientResponse resp = client.delete(base + "/object/" + doc3id, options);
         assertEquals(HttpStatus.SC_NO_CONTENT, resp.getStatus());
         resp.release();
 
-        resp = client.delete(base + "/object/nosuchid", options);
+        resp = client.delete(base + "/object/no-such-id", options);
+        assertEquals(HttpStatus.SC_NOT_FOUND, resp.getStatus());
+        resp.release();
+    }
+
+    public void testDeleteDescendants() {
+        RequestOptions options = new RequestOptions();
+        ClientResponse resp = client.delete(base + "/descendants/" + folder1id,
+                options);
+        assertEquals(HttpStatus.SC_NO_CONTENT, resp.getStatus());
+        resp.release();
+
+        resp = client.delete(base + "/descendants/no-such-id", options);
+        assertEquals(HttpStatus.SC_NOT_FOUND, resp.getStatus());
+        resp.release();
+    }
+
+    public void testDeleteFolderTree() {
+        RequestOptions options = new RequestOptions();
+        ClientResponse resp = client.delete(base + "/foldertree/" + folder1id,
+                options);
+        assertEquals(HttpStatus.SC_NO_CONTENT, resp.getStatus());
+        resp.release();
+
+        resp = client.delete(base + "/foldertree/no-such-id", options);
         assertEquals(HttpStatus.SC_NOT_FOUND, resp.getStatus());
         resp.release();
     }

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=899003&r1=899002&r2=899003&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 Wed Jan 13 23:50:39 2010
@@ -712,15 +712,17 @@
         boolean allVersions = false; // TODO add in signature?
         String id = folder.getId();
         if (repository.rootId.equals(id)) {
-            throw new RuntimeException("Cannot delete root"); // TODO
+            throw new ConstraintViolationException("Cannot delete root");
         }
         SimpleData data = repository.datas.get(id);
         if (data == null) {
-            throw new RuntimeException("Not found: " + folder); // TODO
+            throw new ObjectNotFoundException("No such folder: "
+                    + folder.getId());
         }
         String typeId = (String) data.get(Property.TYPE_ID);
         if (repository.getType(typeId).getBaseType() != BaseType.FOLDER) {
-            throw new RuntimeException("Not a folder: " + folder); // TODO
+            throw new IllegalArgumentException("Not a folder: "
+                    + folder.getId());
         }
         for (String childId : new ArrayList<String>(repository.children.get(id))) {
             SimpleData childData = repository.datas.get(childId);