Ori Liel has uploaded a new change for review.

Change subject: restapi: RSDL - report 'delete' on collections where exists
......................................................................

restapi: RSDL - report 'delete' on collections where exists

Currently RSDL does not report existing DELETE signatures on collection
level (e.g: DELETE 
.../api/clusters/{cluster:id}/glustervolumes/{glustervolume:id}/bricks)
This patch enhances RSDL to be able to deal with such signatures.

Bug-Url: http://bugzilla.redhat.com/1038663
Change-Id: I23461cb72df75766d1c09d2f9d979cfb0d8df38c
Signed-off-by: Ori Liel <[email protected]>
---
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/gluster/GlusterBricksResource.java
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlBuilder.java
2 files changed, 12 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/02/40002/1

diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/gluster/GlusterBricksResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/gluster/GlusterBricksResource.java
index 90d0d56..481dbe5 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/gluster/GlusterBricksResource.java
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/gluster/GlusterBricksResource.java
@@ -17,7 +17,6 @@
 import org.ovirt.engine.api.model.GlusterBricks;
 import org.ovirt.engine.api.resource.ActionResource;
 import org.ovirt.engine.api.resource.ApiMediaType;
-import org.ovirt.engine.api.resource.RsdlIgnore;
 
 /**
  * Resource interface for the 
"clusters/{cluster_id}/glustervolumes/{volume_id}/bricks" resource
@@ -51,7 +50,6 @@
      * @return
      */
     @DELETE
-    @RsdlIgnore //TODO: remove this when we have support for delete at 
collection level in yaml metadata
     public Response remove(GlusterBricks bricks);
 
     /**
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlBuilder.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlBuilder.java
index eaa95ab..f743ddf 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlBuilder.java
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlBuilder.java
@@ -347,18 +347,28 @@
     }
 
     private void handleDelete(String prefix, Collection<DetailedLink> results, 
Method m) {
+        boolean collectionLevel = m.getAnnotation(Path.class) == null;
         if (m.getParameterTypes().length>1) {
             Class<?>[] parameterTypes = m.getParameterTypes();
             Annotation[][] parameterAnnotations = m.getParameterAnnotations();
             for (int i=0; i<parameterTypes.length; i++) {
                 //ignore the id parameter (string), that's annotated with 
@PathParam
                 if (!( parameterTypes[i].equals(String.class) && 
(!(parameterAnnotations[i].length==0)))) {
-                    results.add(new RsdlBuilder.LinkBuilder().url(prefix + 
"/{" + getSingleForm(prefix) + 
":id}").rel(DELETE).requestParameter(parameterTypes[i].getSimpleName()).httpMethod(HttpMethod.DELETE).build());
+                    results.add(new RsdlBuilder.LinkBuilder().url(prefix
+                            + (collectionLevel ? "" : "/{" + 
getSingleForm(prefix) + ":id}"))
+                            .rel(DELETE)
+                            
.requestParameter(parameterTypes[i].getSimpleName())
+                            .httpMethod(HttpMethod.DELETE)
+                            .build());
                     return; //we can break, because we excpect only one 
parameter.
                 }
             }
         } else {
-            results.add(new RsdlBuilder.LinkBuilder().url(prefix + "/{" + 
getSingleForm(prefix) + 
":id}").rel(DELETE).httpMethod(HttpMethod.DELETE).build());
+            results.add(new RsdlBuilder.LinkBuilder().url(prefix
+                    + (collectionLevel ? "" : "/{" + getSingleForm(prefix) + 
":id}"))
+                    .rel(DELETE)
+                    .httpMethod(HttpMethod.DELETE)
+                    .build());
         }
     }
 


-- 
To view, visit https://gerrit.ovirt.org/40002
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I23461cb72df75766d1c09d2f9d979cfb0d8df38c
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ori Liel <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to