You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sv...@apache.org on 2016/12/01 12:44:39 UTC

[1/3] brooklyn-server git commit: Revert "Replace MultimapSerializer with jackson-datatype-guava library"

Repository: brooklyn-server
Updated Branches:
  refs/heads/master d1ef42a1e -> 50826cbc2


Revert "Replace MultimapSerializer with jackson-datatype-guava library"

This reverts commit 53778394ac9eee9d62fca9535f3c49b8f54f8adf.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/cbc1b2c5
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/cbc1b2c5
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/cbc1b2c5

Branch: refs/heads/master
Commit: cbc1b2c53842490e149b8fcd29706606dbc629ea
Parents: 23f9a71
Author: Valentin Aitken <bo...@gmail.com>
Authored: Thu Dec 1 13:46:17 2016 +0200
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Thu Dec 1 13:46:17 2016 +0200

----------------------------------------------------------------------
 core/pom.xml                                    |  4 --
 .../core/json/BrooklynObjectsJsonMapper.java    |  6 +-
 .../util/core/json/MultimapSerializer.java      | 64 ++++++++++++++++++++
 karaf/features/src/main/feature/feature.xml     |  1 -
 parent/pom.xml                                  |  5 --
 5 files changed, 67 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cbc1b2c5/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index cda05c3..3a900d6 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -164,10 +164,6 @@
             <artifactId>commons-lang3</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.fasterxml.jackson.datatype</groupId>
-            <artifactId>jackson-datatype-guava</artifactId>
-        </dependency>
-        <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-annotations</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cbc1b2c5/core/src/main/java/org/apache/brooklyn/util/core/json/BrooklynObjectsJsonMapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/json/BrooklynObjectsJsonMapper.java b/core/src/main/java/org/apache/brooklyn/util/core/json/BrooklynObjectsJsonMapper.java
index 37601a5..7e96457 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/json/BrooklynObjectsJsonMapper.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/json/BrooklynObjectsJsonMapper.java
@@ -20,7 +20,6 @@ import org.apache.brooklyn.api.mgmt.ManagementContext;
 import com.fasterxml.jackson.core.Version;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.module.SimpleModule;
-import com.fasterxml.jackson.datatype.guava.GuavaModule;
 
 public class BrooklynObjectsJsonMapper {
     public static ObjectMapper newMapper(ManagementContext mgmt) {
@@ -29,7 +28,7 @@ public class BrooklynObjectsJsonMapper {
 
         ObjectMapper mapper = new ObjectMapper();
         mapper.setSerializerProvider(sp);
-        mapper.setVisibility(new PossiblyStrictPreferringFieldsVisibilityChecker());
+        mapper.setVisibilityChecker(new PossiblyStrictPreferringFieldsVisibilityChecker());
 
         SimpleModule mapperModule = new SimpleModule("Brooklyn", new Version(0, 0, 0, "ignored", null, null));
 
@@ -42,7 +41,8 @@ public class BrooklynObjectsJsonMapper {
         new BidiSerialization.TaskSerialization(mgmt).install(mapperModule);
         new BidiSerialization.ClassLoaderSerialization(mgmt).install(mapperModule);
 
-        mapper.registerModule(new GuavaModule()).registerModule(mapperModule);
+        mapperModule.addSerializer(new MultimapSerializer());
+        mapper.registerModule(mapperModule);
         return mapper;
     }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cbc1b2c5/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java b/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java
new file mode 100644
index 0000000..d825e3e
--- /dev/null
+++ b/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.util.core.json;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Map;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Multimap;
+
+/**
+ * Provides a serializer for {@link Multimap} instances.
+ * <p>
+ * When Brooklyn's Jackson dependency is updated from org.codehaus.jackson:1.9.13 to
+ * com.fasterxml.jackson:2.3+ then this class should be replaced with a dependency on
+ * jackson-datatype-guava and a GuavaModule registered with Brooklyn's ObjectMapper.
+ * Check the guava version when doing the switch as it could be incompatible with the
+ * version used by Brooklyn.
+ */
+@Beta
+public class MultimapSerializer extends StdSerializer<Multimap<?, ?>> {
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    protected MultimapSerializer() {
+        super((Class<Multimap<?, ?>>) (Class) Multimap.class);
+    }
+
+    @Override
+    public void serialize(Multimap<?, ?> value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
+        jgen.writeStartObject();
+        writeEntries(value, jgen, provider);
+        jgen.writeEndObject();
+    }
+
+    private void writeEntries(Multimap<?, ?> value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
+        for (Map.Entry<?, ? extends Collection<?>> entry : value.asMap().entrySet()) {
+            provider.findKeySerializer(provider.constructType(String.class), null)
+                    .serialize(entry.getKey(), jgen, provider);
+            provider.defaultSerializeValue(Lists.newArrayList(entry.getValue()), jgen);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cbc1b2c5/karaf/features/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/karaf/features/src/main/feature/feature.xml b/karaf/features/src/main/feature/feature.xml
index 3e6bb8f..5d4c919 100644
--- a/karaf/features/src/main/feature/feature.xml
+++ b/karaf/features/src/main/feature/feature.xml
@@ -195,7 +195,6 @@
 
         <feature>cxf-jaxrs</feature>
 
-        <bundle dependency="true">mvn:com.fasterxml.jackson.datatype/jackson-datatype-guava/${fasterxml.jackson.version}</bundle>
         <bundle dependency="true">mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${fasterxml.jackson.version}</bundle>
 
         <!-- should be deps of jax-rs-2.0 rest-api project -->

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cbc1b2c5/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 5f3ffb6..ebac367 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -176,11 +176,6 @@
                 <artifactId>jetty-schemas</artifactId>
                 <version>${jetty-schemas.version}</version>
             </dependency>
-           <dependency>
-                <groupId>com.fasterxml.jackson.datatype</groupId>
-                <artifactId>jackson-datatype-guava</artifactId>
-                <version>${fasterxml.jackson.version}</version>
-            </dependency>
             <dependency>
                 <groupId>com.fasterxml.jackson.core</groupId>
                 <artifactId>jackson-annotations</artifactId>


[2/3] brooklyn-server git commit: Add API test for format of retrieved multimap sensor

Posted by sv...@apache.org.
Add API test for format of retrieved multimap sensor

- unit test for deserializing multimap object


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/6d710b7a
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/6d710b7a
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/6d710b7a

Branch: refs/heads/master
Commit: 6d710b7a77220f5ecba82fd32d7d04480ffa5855
Parents: cbc1b2c
Author: Valentin Aitken <bo...@gmail.com>
Authored: Thu Dec 1 01:45:11 2016 +0200
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Thu Dec 1 13:50:31 2016 +0200

----------------------------------------------------------------------
 .../util/core/json/MultimapSerializer.java      |  2 +-
 .../json/BrooklynJacksonSerializerTest.java     |  9 +++
 .../BrooklynRestApiLauncherTestFixture.java     | 42 ++++++++++++-
 .../AbstractRestApiEntitlementsTest.java        | 25 --------
 .../brooklyn/rest/entity/SensorsApiTest.java    | 64 ++++++++++++++++++++
 5 files changed, 115 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6d710b7a/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java b/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java
index d825e3e..91287dd 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java
@@ -61,4 +61,4 @@ public class MultimapSerializer extends StdSerializer<Multimap<?, ?>> {
             provider.defaultSerializeValue(Lists.newArrayList(entry.getValue()), jgen);
         }
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6d710b7a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerTest.java
index eb91f0a..4f5a6ca 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerTest.java
@@ -32,6 +32,7 @@ import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.core.json.BidiSerialization;
 import org.apache.brooklyn.util.exceptions.Exceptions;
+import org.apache.brooklyn.util.net.UserAndHostAndPort;
 import org.apache.brooklyn.util.stream.Streams;
 import org.apache.brooklyn.util.text.Strings;
 import org.slf4j.Logger;
@@ -203,6 +204,14 @@ public class BrooklynJacksonSerializerTest {
     }
 
     @Test
+    public void testUserHostAndPortSerialization() throws Exception {
+        String result = checkSerializesAs(UserAndHostAndPort.fromParts("testHostUser", "1.2.3.4", 22), null);
+        log.info("UserHostAndPort serialized as: " + result);
+        Assert.assertFalse(result.contains("error"), "Shouldn't have had an error, instead got: "+result);
+        Assert.assertEquals(Strings.collapseWhitespace(result, ""), "{\"user\":\"testHostUser\",\"hostAndPort\":{\"host\":\"1.2.3.4\",\"port\":22,\"hasBracketlessColons\":false}}");
+    }
+
+    @Test
     public void testSupplierSerialization() throws Exception {
         String result = checkSerializesAs(Strings.toStringSupplier(Streams.byteArrayOfString("x")), null);
         log.info("SUPPLIER json is: "+result);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6d710b7a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTestFixture.java
----------------------------------------------------------------------
diff --git a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTestFixture.java b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTestFixture.java
index 53068c0..5a102bc 100644
--- a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTestFixture.java
+++ b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/BrooklynRestApiLauncherTestFixture.java
@@ -18,6 +18,7 @@
  */
 package org.apache.brooklyn.rest;
 
+import com.google.common.collect.ImmutableMap;
 import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.internal.BrooklynProperties;
@@ -27,6 +28,11 @@ import org.apache.brooklyn.core.server.BrooklynServiceAttributes;
 import org.apache.brooklyn.rest.security.provider.AnyoneSecurityProvider;
 import org.apache.brooklyn.util.core.osgi.Compat;
 import org.apache.brooklyn.util.exceptions.Exceptions;
+import org.apache.brooklyn.util.http.HttpAsserts;
+import org.apache.brooklyn.util.http.HttpTool;
+import org.apache.brooklyn.util.http.HttpToolResponse;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.HttpClient;
 import org.eclipse.jetty.server.NetworkConnector;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.handler.ContextHandler;
@@ -34,6 +40,11 @@ import org.reflections.util.ClasspathHelper;
 import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
 
+import java.net.URI;
+
+import static org.apache.brooklyn.util.http.HttpTool.httpClientBuilder;
+import static org.testng.Assert.assertTrue;
+
 public abstract class BrooklynRestApiLauncherTestFixture {
 
     Server server = null;
@@ -47,7 +58,7 @@ public abstract class BrooklynRestApiLauncherTestFixture {
             server = null;
         }
     }
-    
+
     protected Server newServer() {
         try {
             Server server = baseLauncher()
@@ -72,6 +83,35 @@ public abstract class BrooklynRestApiLauncherTestFixture {
         return BrooklynRestApiLauncher.launcher()
                 .securityProvider(AnyoneSecurityProvider.class);
     }
+
+    protected HttpClient newClient(String user) throws Exception {
+        HttpTool.HttpClientBuilder builder = httpClientBuilder()
+                .uri(getBaseUriRest());
+        if (user != null) {
+            builder.credentials(new UsernamePasswordCredentials(user, "ignoredPassword"));
+        }
+        return builder.build();
+    }
+
+    protected String httpGet(String path) throws Exception {
+        return httpGet(null, path);
+    }
+
+    protected String httpGet(String user, String path) throws Exception {
+        HttpToolResponse response = HttpTool.httpGet(newClient(user), URI.create(getBaseUriRest()).resolve(path), ImmutableMap.<String, String>of());
+        assertHealthyStatusCode(response);
+        return response.getContentAsString();
+    }
+
+    protected HttpToolResponse httpPost(String user, String path, byte[] body) throws Exception {
+        final ImmutableMap<String, String> headers = ImmutableMap.of();
+        final URI uri = URI.create(getBaseUriRest()).resolve(path);
+        return HttpTool.httpPost(newClient(user), uri, headers, body);
+    }
+
+    protected void assertHealthyStatusCode(HttpToolResponse response) {
+        assertTrue(HttpAsserts.isHealthyStatusCode(response.getResponseCode()), "code="+response.getResponseCode()+"; reason="+response.getReasonPhrase());
+    }
     
     /** @deprecated since 0.9.0 use {@link #getBaseUriHostAndPost(Server)} or {@link #getBaseUriRest(Server)} */
     public static String getBaseUri(Server server) {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6d710b7a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
index 1181e94..ad16226 100644
--- a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
+++ b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
@@ -85,27 +85,6 @@ public abstract class AbstractRestApiEntitlementsTest extends BrooklynRestApiLau
         if (mgmt != null) Entities.destroyAll(mgmt);
     }
     
-    protected HttpClient newClient(String user) throws Exception {
-        HttpClientBuilder builder = httpClientBuilder()
-                .uri(getBaseUriRest());
-        if (user != null) {
-            builder.credentials(new UsernamePasswordCredentials(user, "ignoredPassword"));
-        }
-        return builder.build();
-    }
-
-    protected String httpGet(String user, String path) throws Exception {
-        HttpToolResponse response = HttpTool.httpGet(newClient(user), URI.create(getBaseUriRest()).resolve(path), ImmutableMap.<String, String>of());
-        assertHealthyStatusCode(response);
-        return response.getContentAsString();
-    }
-
-    protected HttpToolResponse httpPost(String user, String path, byte[] body) throws Exception {
-        final ImmutableMap<String, String> headers = ImmutableMap.of();
-        final URI uri = URI.create(getBaseUriRest()).resolve(path);
-        return HttpTool.httpPost(newClient(user), uri, headers, body);
-    }
-
     protected String assertPermitted(String user, String path) throws Exception {
         return httpGet(user, path);
     }
@@ -115,10 +94,6 @@ public abstract class AbstractRestApiEntitlementsTest extends BrooklynRestApiLau
         assertHealthyStatusCode(response);
     }
 
-    protected void assertHealthyStatusCode(HttpToolResponse response) {
-        assertTrue(HttpAsserts.isHealthyStatusCode(response.getResponseCode()), "code="+response.getResponseCode()+"; reason="+response.getReasonPhrase());
-    }
-
     protected void assertForbidden(String user, String path) throws Exception {
         HttpToolResponse response = HttpTool.httpGet(newClient(user), URI.create(getBaseUriRest()).resolve(path), ImmutableMap.<String, String>of());
         assertStatusCodeEquals(response, 403);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6d710b7a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entity/SensorsApiTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entity/SensorsApiTest.java b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entity/SensorsApiTest.java
new file mode 100644
index 0000000..c2fc701
--- /dev/null
+++ b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entity/SensorsApiTest.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.rest.entity;
+
+import com.google.common.collect.Iterables;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.mgmt.ManagementContext;
+import org.apache.brooklyn.core.entity.Attributes;
+import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
+import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.core.test.entity.TestEntity;
+import org.apache.brooklyn.rest.BrooklynRestApiLauncherTestFixture;
+import org.apache.brooklyn.util.net.UserAndHostAndPort;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import static org.testng.Assert.assertEquals;
+
+public class SensorsApiTest extends BrooklynRestApiLauncherTestFixture {
+    protected ManagementContext mgmt;
+    protected TestApplication app;
+    protected TestEntity entity;
+
+    @BeforeMethod(alwaysRun=true)
+    public void setUp() throws Exception {
+        mgmt = LocalManagementContextForTests.builder(false).build();
+        app = mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class)
+                .child(EntitySpec.create(TestEntity.class)));
+        entity = (TestEntity) Iterables.getOnlyElement(app.getChildren());
+
+        useServerForTest(baseLauncher()
+                .managementContext(mgmt)
+                .forceUseOfDefaultCatalogWithJavaClassPath(true)
+                .start());
+    }
+
+    // TODO turn into unit tests, not spinning up real http server.
+    @Test(groups = "Integration")
+    public void testGetHostAndPortSensor() throws Exception {
+        entity.sensors().set(Attributes.SSH_ADDRESS, UserAndHostAndPort.fromParts("testHostUser", "1.2.3.4", 22));
+
+        String sensorGetPath = "/v1/applications/"+app.getId()+"/entities/"+entity.getId()+"/sensors/" + Attributes.SSH_ADDRESS.getName();
+        assertEquals(httpGet(sensorGetPath), "\"testHostUser@1.2.3.4:22\"");
+
+        String descendantSensorPath = "/v1/applications/"+app.getId()+"/descendants/sensor/" + Attributes.SSH_ADDRESS.getName();
+        assertEquals(httpGet(descendantSensorPath), "{\"" + entity.getId() + "\":{\"user\":\"testHostUser\",\"hostAndPort\":{\"host\":\"1.2.3.4\",\"port\":22,\"hasBracketlessColons\":false}}}");
+    }
+}


[3/3] brooklyn-server git commit: Closes #472

Posted by sv...@apache.org.
Closes #472

Revert 5377839: Replace MultimapSerializer with jackson-datatype-guava

Reverts https://github.com/apache/brooklyn-server/pull/339/commits/53778394ac9eee9d62fca9535f3c49b8f54f8adf in order to preserve the output format of `/v1/applications/{applicationId}/descendants/sensor/{sensor}`
The new library uses toString() rather than object representation used for this call.

Added simple test for retrieving map sensor.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/50826cbc
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/50826cbc
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/50826cbc

Branch: refs/heads/master
Commit: 50826cbc2081fbbb5d511bb922cfefd70f0f2aae
Parents: d1ef42a 6d710b7
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Thu Dec 1 14:44:26 2016 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Dec 1 14:44:26 2016 +0200

----------------------------------------------------------------------
 core/pom.xml                                    |  4 --
 .../core/json/BrooklynObjectsJsonMapper.java    |  6 +-
 .../util/core/json/MultimapSerializer.java      | 64 ++++++++++++++++++++
 karaf/features/src/main/feature/feature.xml     |  1 -
 parent/pom.xml                                  |  5 --
 .../json/BrooklynJacksonSerializerTest.java     |  9 +++
 .../BrooklynRestApiLauncherTestFixture.java     | 42 ++++++++++++-
 .../AbstractRestApiEntitlementsTest.java        | 25 --------
 .../brooklyn/rest/entity/SensorsApiTest.java    | 64 ++++++++++++++++++++
 9 files changed, 181 insertions(+), 39 deletions(-)
----------------------------------------------------------------------