.mailmap
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/Link.java
| 4
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/helper/LinkDeserializer.java
| 68 ++++++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/helper/LinkSerializer.java
| 1
modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/ResourcesTest.java
| 77 ++++++++++
5 files changed, 153 insertions(+)
New commits:
commit ee5692d34ae5e06542744a9f480002d4c3df5690
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Jun 27 17:53:11 2013 +0200
Add some more email aliases to .mailmap
diff --git a/.mailmap b/.mailmap
index ac0fdc9..3081ced 100644
--- a/.mailmap
+++ b/.mailmap
@@ -36,6 +36,7 @@ Jeff Ortel <jortel(a)redhat.com>
Jessica Sant <jsant(a)redhat.com>
Jijun Liu <lxjijun(a)gmail.com>
Jirka Kremser <jkremser(a)redhat.com> <jkremser(a)jkremser-tp520.(none)>
+Jirka Kremser <jkremser(a)redhat.com> <jiri.kremser(a)gmail.com>
Jirka Kremser <jkremser(a)redhat.com>
John Matthews <jmatthews(a)redhat.com>
John Mazzitelli <mazz(a)redhat.com>
@@ -47,6 +48,8 @@ John Sanda <jsanda(a)redhat.com>
Joseph Marques <jmarques(a)redhat.com> <joseph(a)redhat.com>
Justin Harris <jharris(a)redhat.com>
Larry O'Leary <loleary(a)redhat.com>
+Libor Zoubek <lzoubek(a)redhat.com>
+Libor Zoubek <lzoubek(a)redhat.com> <lzoubek(a)jezzovo.net>
Lukas Krejci <lkrejci(a)redhat.com>
Mark Spritzler <mspritzl(a)redhat.com>
Mattias Nilsson Grip <matn(a)redpill-linpro.com>
commit a4b1412282bb4423cb7fbafc67ad8d03a6b08727
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 24 17:41:04 2013 +0200
BZ 976813 add a deserializer for incoming links.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/Link.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/Link.java
index 6eecf3e..0aac348 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/Link.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/Link.java
@@ -7,8 +7,11 @@ import javax.xml.bind.annotation.XmlRootElement;
import com.wordnik.swagger.annotations.ApiClass;
import com.wordnik.swagger.annotations.ApiProperty;
+import org.codehaus.jackson.map.JsonDeserializer;
+import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.codehaus.jackson.map.annotate.JsonSerialize;
+import org.rhq.enterprise.server.rest.helper.LinkDeserializer;
import org.rhq.enterprise.server.rest.helper.LinkSerializer;
/**
@@ -18,6 +21,7 @@ import org.rhq.enterprise.server.rest.helper.LinkSerializer;
@ApiClass("Link between two resources")
@XmlRootElement
@JsonSerialize(using = LinkSerializer.class)
+@JsonDeserialize(using = LinkDeserializer.class)
@Produces({"application/json","application/xml"})
public class Link {
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/helper/LinkDeserializer.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/helper/LinkDeserializer.java
new file mode 100644
index 0000000..e9582d4
--- /dev/null
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/helper/LinkDeserializer.java
@@ -0,0 +1,68 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+package org.rhq.enterprise.server.rest.helper;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonParser;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.DeserializationContext;
+import org.codehaus.jackson.map.JsonDeserializer;
+
+import org.rhq.enterprise.server.rest.domain.Link;
+
+/**
+ * Deserialize incoming json Links into Link objects
+ * Our input is like this:
+ *
+<pre>
+ {
+ "operationDefinitions": {
+ "href":
"http://localhost:7080/rest/operation/definitions?resourceId=10584"
+ }
+ }
+ </pre>
+ * @author Heiko W. Rupp
+ * @see LinkSerializer
+ */
+public class LinkDeserializer extends JsonDeserializer<Link>{
+
+ @Override
+ public Link deserialize(JsonParser jp, DeserializationContext ctxt) throws
IOException, JsonProcessingException {
+
+ String tmp = jp.getText(); // {
+ jp.nextToken(); // skip over { to the rel
+ String rel = jp.getText();
+ jp.nextToken(); // skip over {
+ tmp = jp.getText();
+ jp.nextToken(); // skip over "href"
+ tmp = jp.getText();
+// jp.nextToken(); // skip over :
+ jp.nextToken(); // skip to "http:// ... "
+ String href = jp.getText();
+ jp.nextToken(); // skip }
+ tmp = jp.getText();
+ jp.nextToken(); // skip }
+
+ Link link = new Link(rel,href);
+
+ return link;
+ }
+}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/helper/LinkSerializer.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/helper/LinkSerializer.java
index a58efd3..cdb796d 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/helper/LinkSerializer.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/helper/LinkSerializer.java
@@ -34,6 +34,7 @@ import org.rhq.enterprise.server.rest.domain.Link;
* clients to access the link.
* See also
https://bugzilla.redhat.com/show_bug.cgi?id=845244
* @author Heiko W. Rupp
+ * @see LinkDeserializer
*/
public class LinkSerializer extends JsonSerializer<Link> {
diff --git
a/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/ResourcesTest.java
b/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/ResourcesTest.java
index 32c8bce..4c47960 100644
---
a/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/ResourcesTest.java
+++
b/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/ResourcesTest.java
@@ -24,8 +24,11 @@ package org.rhq.modules.integrationTests.restApi;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import com.jayway.restassured.http.ContentType;
@@ -38,6 +41,7 @@ import org.apache.http.HttpStatus;
import org.junit.Test;
import org.rhq.modules.integrationTests.restApi.d.Availability;
+import org.rhq.modules.integrationTests.restApi.d.Link;
import org.rhq.modules.integrationTests.restApi.d.Resource;
import static com.jayway.restassured.RestAssured.expect;
@@ -566,6 +570,79 @@ public class ResourcesTest extends AbstractBase {
}
@Test
+ public void testCreateUpdateWithLinksRemovePlatform() throws Exception {
+
+ Resource resource = new Resource();
+ resource.setResourceName("dummy-test");
+ resource.setTypeName("Linux");
+
+ Response response =
+ given()
+ .header(acceptXml)
+ .contentType(ContentType.JSON)
+ .body(resource)
+ .expect()
+ .statusCode(201)
+ .log().ifError()
+ .when()
+ .post("/resource/platforms");
+
+ int platformId=0;
+ try {
+ XmlPath xmlPath = response.xmlPath();
+ Node resource1 = xmlPath.get("resource");
+ Node platformIdNode = resource1.get("resourceId");
+ platformId = Integer.parseInt(platformIdNode.value());
+
+ // Now update the description
+ resource.setDescription("li la lu");
+ resource.setLocation("Datacenter 1");
+ resource.setResourceName("DummY");
+
+ /* Now add links -- JSON looks like this:
+ "links": [
+ {
+ "operationDefinitions": {
+ "href":
"http://localhost:7080/rest/operation/definitions?resourceId=10584"
+ }
+ },
+ */
+
+ List<Map> links = new ArrayList<Map>(1);
+ Map<String,Map<String,String>> map = new HashMap<String,
Map<String,String>>(1);
+ Map<String,String> link = new HashMap<String, String>(1);
+ link.put("href","http:/abc");
+ map.put("self",link);
+ links.add(map);
+ resource.setLinks(links);
+
+
+ given()
+ .pathParam("id",platformId)
+ .body(resource)
+ .contentType(ContentType.JSON)
+ .header(acceptJson)
+ .log().everything()
+ .expect()
+ .statusCode(200)
+ .log().everything()
+ .body("location",is("Datacenter 1"))
+ .body("description",is("li la lu"))
+ .body("resourceName",is("DummY"))
+ .when()
+ .put("/resource/{id}");
+
+ } finally {
+ given()
+ .pathParam("id", platformId)
+ .expect()
+ .statusCode(HttpStatus.SC_NO_CONTENT)
+ .when()
+ .delete("/resource/{id}");
+ }
+ }
+
+ @Test
public void testCreatePlatformUpdateAvailabilityAndRemove() throws Exception {
Resource resource = new Resource();