Juan Hernandez has uploaded a new change for review.

Change subject: restapi: Move Affinity Group VM remove from collection to entity
......................................................................

restapi: Move Affinity Group VM remove from collection to entity

This patch moves the method that implements the DELETE operation from
the collection interface to the entity interface. This is needed to
avoid issues with newer versions of Resteasy.

Change-Id: Id474459945434e0b44ab17ab389e1c86ee731e9f
Related: https://gerrit.ovirt.org/41783
Signed-off-by: Juan Hernandez <juan.hernan...@redhat.com>
---
A 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AffinityGroupVmResource.java
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AffinityGroupVmsResource.java
A 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmsResource.java
A 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmsResourceTest.java
6 files changed, 140 insertions(+), 36 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/01/41801/1

diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AffinityGroupVmResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AffinityGroupVmResource.java
new file mode 100644
index 0000000..0a9c58c
--- /dev/null
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AffinityGroupVmResource.java
@@ -0,0 +1,11 @@
+package org.ovirt.engine.api.resource;
+
+import javax.ws.rs.DELETE;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Response;
+
+@Produces({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML })
+public interface AffinityGroupVmResource {
+    @DELETE
+    Response remove();
+}
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AffinityGroupVmsResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AffinityGroupVmsResource.java
index 78e5f16..7667981 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AffinityGroupVmsResource.java
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/AffinityGroupVmsResource.java
@@ -1,7 +1,6 @@
 package org.ovirt.engine.api.resource;
 
 import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
@@ -14,16 +13,13 @@
 
 @Produces({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML })
 public interface AffinityGroupVmsResource {
-
     @GET
-    public VMs list();
+    VMs list();
 
     @POST
     @Consumes({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML })
-    public Response add(VM vm);
+    Response add(VM vm);
 
-    @DELETE
     @Path("{id}")
-    public Response remove(@PathParam("id") String id);
-
+    AffinityGroupVmResource getAffinityGroupVmSubResource(@PathParam("id") 
String id);
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmResource.java
new file mode 100644
index 0000000..5b3593e
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmResource.java
@@ -0,0 +1,51 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import org.ovirt.engine.api.model.VM;
+import org.ovirt.engine.api.resource.AffinityGroupVmResource;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.common.scheduling.AffinityGroup;
+import 
org.ovirt.engine.core.common.scheduling.parameters.AffinityGroupCRUDParameters;
+import org.ovirt.engine.core.compat.Guid;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Response;
+
+public class BackendAffinityGroupVmResource
+        extends AbstractBackendActionableResource<VM, 
org.ovirt.engine.core.common.businessentities.VM>
+        implements AffinityGroupVmResource {
+
+    private Guid groupId;
+
+    public BackendAffinityGroupVmResource(Guid groupId, String vmId) {
+        super(vmId, VM.class, 
org.ovirt.engine.core.common.businessentities.VM.class);
+        this.groupId = groupId;
+    }
+
+    @Override
+    public Response remove() {
+        AffinityGroup group = getGroup();
+        if (group == null || !group.getEntityIds().remove(asGuid(id))) {
+            throw new WebApplicationException(Response.Status.NOT_FOUND);
+        }
+        return performAction(
+            VdcActionType.EditAffinityGroup,
+            new AffinityGroupCRUDParameters(groupId, group)
+        );
+    }
+
+    @Override
+    protected VM doPopulate(VM model, 
org.ovirt.engine.core.common.businessentities.VM entity) {
+        return model;
+    }
+
+    private org.ovirt.engine.core.common.scheduling.AffinityGroup getGroup() {
+        return getEntity(
+            org.ovirt.engine.core.common.scheduling.AffinityGroup.class,
+            VdcQueryType.GetAffinityGroupById,
+            new IdQueryParameters(groupId),
+            groupId.toString()
+        );
+    }
+}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmsResource.java
index 56cc460..925548a 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmsResource.java
@@ -1,10 +1,10 @@
 package org.ovirt.engine.api.restapi.resource;
 
-import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Response;
 
 import org.ovirt.engine.api.model.VM;
 import org.ovirt.engine.api.model.VMs;
+import org.ovirt.engine.api.resource.AffinityGroupVmResource;
 import org.ovirt.engine.api.resource.AffinityGroupVmsResource;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
@@ -58,17 +58,6 @@
     }
 
     @Override
-    protected Response performRemove(String id) {
-        AffinityGroup affinityGroup = getEntity();
-
-        if (!affinityGroup.getEntityIds().remove(asGuid(id))) {
-            throw new WebApplicationException(Response.Status.NOT_FOUND);
-        }
-        return performAction(VdcActionType.EditAffinityGroup, new 
AffinityGroupCRUDParameters(affinityGroup.getId(),
-                affinityGroup));
-    }
-
-    @Override
     protected org.ovirt.engine.core.common.scheduling.AffinityGroup 
getEntity() {
         return 
getEntity(org.ovirt.engine.core.common.scheduling.AffinityGroup.class,
                 VdcQueryType.GetAffinityGroupById,
@@ -76,4 +65,9 @@
                 affinityGroupId.toString());
     }
 
+    @Override
+    @SingleEntityResource
+    public AffinityGroupVmResource getAffinityGroupVmSubResource(String id) {
+        return inject(new BackendAffinityGroupVmResource(affinityGroupId, id));
+    }
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmResourceTest.java
new file mode 100644
index 0000000..9f67fb3
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmResourceTest.java
@@ -0,0 +1,69 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import org.junit.Test;
+import org.ovirt.engine.api.model.VM;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import 
org.ovirt.engine.core.common.scheduling.parameters.AffinityGroupCRUDParameters;
+import org.ovirt.engine.core.compat.Guid;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BackendAffinityGroupVmResourceTest
+        extends AbstractBackendSubResourceTest<VM, 
org.ovirt.engine.core.common.businessentities.VM, 
BackendAffinityGroupVmResource> {
+
+    public BackendAffinityGroupVmResourceTest() {
+        super(new BackendAffinityGroupVmResource(GUIDS[0], 
GUIDS[1].toString()));
+    }
+
+    @Test
+    public void testRemove() throws Exception {
+        setUriInfo(setUpBasicUriExpectations());
+        setUpGetGroupExpectations();
+        setUriInfo(
+            setUpActionExpectations(
+                VdcActionType.EditAffinityGroup,
+                AffinityGroupCRUDParameters.class,
+                new String[] {},
+                new Object[] {},
+                true,
+                true
+            )
+        );
+        verifyRemove(resource.remove());
+    }
+
+    private void setUpGetGroupExpectations() throws Exception {
+        setUpGetEntityExpectations(
+            VdcQueryType.GetAffinityGroupById,
+            IdQueryParameters.class,
+            new String[] { "Id" },
+            new Object[] { GUIDS[0] },
+            getGroup()
+        );
+    }
+
+    protected org.ovirt.engine.core.common.businessentities.VM getEntity(int 
index) {
+        org.ovirt.engine.core.common.businessentities.VM vm = new 
org.ovirt.engine.core.common.businessentities.VM();
+        vm.setId(GUIDS[index]);
+        vm.setName(NAMES[index]);
+        return vm;
+    }
+
+    private org.ovirt.engine.core.common.scheduling.AffinityGroup getGroup() {
+        org.ovirt.engine.core.common.scheduling.AffinityGroup group =
+            new org.ovirt.engine.core.common.scheduling.AffinityGroup();
+        List<Guid> vmIds = new ArrayList<>();
+        List<String> vmNames = new ArrayList<>();
+        for (int i = 0; i < NAMES.length; i++) {
+            org.ovirt.engine.core.common.businessentities.VM vm = getEntity(i);
+            vmIds.add(vm.getId());
+            vmNames.add(vm.getName());
+        }
+        group.setEntityIds(vmIds);
+        group.setEntityNames(vmNames);
+        return group;
+    }
+}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmsResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmsResourceTest.java
index d3248db..56f027d 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmsResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendAffinityGroupVmsResourceTest.java
@@ -57,23 +57,6 @@
         assertEquals(200, response.getStatus());
     }
 
-    @Test
-    public void testRemoveVmFromAffinityGroup() throws Exception {
-        setUriInfo(setUpBasicUriExpectations());
-        setUpGetEntityExpectations(true);
-
-        setUriInfo(setUpActionExpectations(VdcActionType.EditAffinityGroup,
-                AffinityGroupCRUDParameters.class,
-                new String[] {},
-                new Object[] {},
-                true,
-                true));
-
-        VM vm = new VM();
-        vm.setId(GUIDS[0].toString());
-        Response response = collection.remove(GUIDS[0].toString());
-        assertEquals(200, response.getStatus());
-    }
 
     private void setUpGetEntityExpectations(boolean withVms) throws Exception {
         setUpGetEntityExpectations(VdcQueryType.GetAffinityGroupById,


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id474459945434e0b44ab17ab389e1c86ee731e9f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Juan Hernandez <juan.hernan...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to