From 576fb0e9f68b188183ca4931d3db05bd0965daf3 Mon Sep 17 00:00:00 2001 From: "jesus m. rodriguez" Date: Thu, 27 Aug 2009 15:37:47 -0400 Subject: consumer api work (not done yet) --- .../org/fedoraproject/candlepin/api/BaseApi.java | 6 +-- .../fedoraproject/candlepin/api/ConsumerApi.java | 35 +++++++++++++++++- .../org/fedoraproject/candlepin/api/TestApi.java | 2 + .../candlepin/api/test/ConsumerApiTest.java | 43 +++++++++++++++++++--- .../candlepin/api/test/TestApiTest.java | 14 ++++++- .../candlepin/model/ConsumerInfo.java | 11 +++++- .../candlepin/model/JsonTestObject.java | 13 +++++++ 7 files changed, 111 insertions(+), 13 deletions(-) (limited to 'proxy/code/src') diff --git a/proxy/code/src/org/fedoraproject/candlepin/api/BaseApi.java b/proxy/code/src/org/fedoraproject/candlepin/api/BaseApi.java index d30ca22..768b6ef 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/api/BaseApi.java +++ b/proxy/code/src/org/fedoraproject/candlepin/api/BaseApi.java @@ -47,9 +47,9 @@ public abstract class BaseApi { return o; } - @POST - @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED}) - @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) +// @POST +// @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED}) +// @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public Object create(Form form) { String newuuid = BaseModel.generateUUID(); Object args[] = new Object[1]; diff --git a/proxy/code/src/org/fedoraproject/candlepin/api/ConsumerApi.java b/proxy/code/src/org/fedoraproject/candlepin/api/ConsumerApi.java index 013ea19..a672055 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/api/ConsumerApi.java +++ b/proxy/code/src/org/fedoraproject/candlepin/api/ConsumerApi.java @@ -14,13 +14,19 @@ */ package org.fedoraproject.candlepin.api; +import org.fedoraproject.candlepin.model.BaseModel; import org.fedoraproject.candlepin.model.Consumer; +import org.fedoraproject.candlepin.model.ConsumerInfo; import org.fedoraproject.candlepin.model.ObjectFactory; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import javax.ws.rs.Consumes; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @@ -33,7 +39,6 @@ public class ConsumerApi extends BaseApi { return Consumer.class; } - @GET @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public List list() { @@ -45,4 +50,32 @@ public class ConsumerApi extends BaseApi { return consumers; } + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) + public Consumer create(ConsumerInfo ci) { + System.out.println("metadata: " + ci.getMetadata()); + System.out.println("ci: " + ci); + //Owner owner = (Owner) ObjectFactory.get().lookupByUUID(Owner.class, owneruuid); + Consumer c = new Consumer(BaseModel.generateUUID()); + //c.setOwner(owner); + c.setInfo(ci); + return c; + } + + @GET @Path("/info") + @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) + public ConsumerInfo getInfo() { + ConsumerInfo ci = new ConsumerInfo(); + ci.setType(ConsumerInfo.TYPE_SYSTEM); + ci.setParent(null); +// Map m = new HashMap(); +// m.put("cpu", "i386"); +// m.put("hey", "biteme"); +// ci.setMetadata(m); + ci.setMetadataField("cpu", "i386"); + ci.setMetadataField("hey", "foobar"); + System.out.println(ci.getMetadata()); + return ci; + } } diff --git a/proxy/code/src/org/fedoraproject/candlepin/api/TestApi.java b/proxy/code/src/org/fedoraproject/candlepin/api/TestApi.java index ddef6dc..f352c4d 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/api/TestApi.java +++ b/proxy/code/src/org/fedoraproject/candlepin/api/TestApi.java @@ -50,5 +50,7 @@ public class TestApi { jto = obj; System.out.println("object.name:" + obj.getName()); System.out.println("jto.name:" + jto.getName()); + System.out.println("jto.uuid:" + jto.getUuid()); + System.out.println("jto.list:" + jto.getStringList()); } } diff --git a/proxy/code/src/org/fedoraproject/candlepin/api/test/ConsumerApiTest.java b/proxy/code/src/org/fedoraproject/candlepin/api/test/ConsumerApiTest.java index 8020dec..aaac3b3 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/api/test/ConsumerApiTest.java +++ b/proxy/code/src/org/fedoraproject/candlepin/api/test/ConsumerApiTest.java @@ -14,17 +14,18 @@ */ package org.fedoraproject.candlepin.api.test; +import org.fedoraproject.candlepin.api.ConsumerApi; +import org.fedoraproject.candlepin.model.Consumer; +import org.fedoraproject.candlepin.model.ConsumerInfo; +import org.fedoraproject.candlepin.model.ObjectFactory; +import org.fedoraproject.candlepin.model.test.TestUtil; + import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.config.ClientConfig; import com.sun.jersey.api.client.config.DefaultClientConfig; import com.sun.jersey.api.representation.Form; -import org.fedoraproject.candlepin.api.ConsumerApi; -import org.fedoraproject.candlepin.model.Consumer; -import org.fedoraproject.candlepin.model.ObjectFactory; -import org.fedoraproject.candlepin.model.test.TestUtil; - import junit.framework.TestCase; @@ -69,5 +70,37 @@ public class ConsumerApiTest extends TestCase { assertNull(ObjectFactory.get().lookupByUUID(c.getClass(), uuid)); + public void testJson() { + ClientConfig cc = new DefaultClientConfig(); + Client c = Client.create(cc); + ConsumerInfo ci = new ConsumerInfo(); + ci.setParent(null); + ci.setType("system"); + ci.setMetadataField("mata1", "value1"); + WebResource postresource = c.resource("http://localhost:8080/candlepin/consumer"); + ConsumerInfo pci = postresource.accept("application/json").type("application/json").post(ConsumerInfo.class, ci); + assertNotNull(pci); + assertEquals("system", pci.getType()); + assertNotNull(pci.getMetadata()); + assertEquals("value1", pci.getMetadataField("mata1")); + +// WebResource getresource = c.resource("http://localhost:8080/candlepin/consumer/info"); +// ConsumerInfo nci = getresource.accept("application/json").get(ConsumerInfo.class); +// assertNotNull(nci); +// assertEquals("system", nci.getType()); +// assertNotNull(nci.getMetadata()); +// assertEquals("value1", nci.getMetadataField("mata1")); +// System.out.println(nci.getType()); +// System.out.println(nci.getMetadata()); + + + +// WebResource postresource = c.resource("http://localhost:8080/candlepin/test/"); +// postresource.accept("application/json").type("application/json").post(jto); +// +// System.out.println(jto.getName()); +// jto = getresource.accept("application/json").get(JsonTestObject.class); +// assertEquals("testname", jto.getName()); +// assertEquals("AEF", jto.getUuid()); } } diff --git a/proxy/code/src/org/fedoraproject/candlepin/api/test/TestApiTest.java b/proxy/code/src/org/fedoraproject/candlepin/api/test/TestApiTest.java index 52ef21f..6a3d0dc 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/api/test/TestApiTest.java +++ b/proxy/code/src/org/fedoraproject/candlepin/api/test/TestApiTest.java @@ -21,6 +21,9 @@ import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.config.ClientConfig; import com.sun.jersey.api.client.config.DefaultClientConfig; +import java.util.ArrayList; +import java.util.List; + import junit.framework.TestCase; @@ -33,18 +36,25 @@ public class TestApiTest extends TestCase { ClientConfig cc = new DefaultClientConfig(); Client c = Client.create(cc); - WebResource getresource = c.resource("http://localhost:8080/candlepin/test/"); + JsonTestObject jto = new JsonTestObject(); jto.setName("testname"); jto.setUuid("AEF"); + List l = new ArrayList(); + l.add("hey there"); + l.add("how are you?"); + jto.setStringList(l); WebResource postresource = c.resource("http://localhost:8080/candlepin/test/"); postresource.accept("application/json").type("application/json").post(jto); + WebResource getresource = c.resource("http://localhost:8080/candlepin/test/"); System.out.println(jto.getName()); jto = getresource.accept("application/json").get(JsonTestObject.class); assertEquals("testname", jto.getName()); assertEquals("AEF", jto.getUuid()); - + assertNotNull(jto.getStringList()); + assertEquals(2, jto.getStringList().size()); + System.out.println(jto.getStringList()); } } diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java index 7b2ea37..05c32c9 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java @@ -17,9 +17,13 @@ package org.fedoraproject.candlepin.model; import java.util.HashMap; import java.util.Map; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; - +@XmlRootElement +@XmlAccessorType(XmlAccessType.PROPERTY) public class ConsumerInfo { private Consumer parent; @@ -70,6 +74,7 @@ public class ConsumerInfo { * @param metadataIn The metadata to set. */ public void setMetadata(Map metadataIn) { + System.out.println("set metadata called"); metadata = metadataIn; } @@ -79,9 +84,11 @@ public class ConsumerInfo { * @param value to set */ public void setMetadataField(String name, String value) { + System.out.println("set meta field called"); if (this.metadata == null) { - metadata = new HashMap(); + metadata = new HashMap(); } + metadata.put(name, value); } diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/JsonTestObject.java b/proxy/code/src/org/fedoraproject/candlepin/model/JsonTestObject.java index cb372c6..99ed8b3 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/JsonTestObject.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/JsonTestObject.java @@ -14,6 +14,9 @@ */ package org.fedoraproject.candlepin.model; +import java.util.ArrayList; +import java.util.List; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; @@ -27,4 +30,14 @@ import javax.xml.bind.annotation.XmlRootElement; @XmlAccessorType(XmlAccessType.PROPERTY) public class JsonTestObject extends BaseModel { + private List stringlist = new ArrayList(); + //private String[] stringarray = new String[1]; + + public void setStringList(List items) { + stringlist = items; + } + + public List getStringList() { + return stringlist; + } } -- cgit