Repository: brooklyn-server
Updated Branches:
  refs/heads/master 1a9781546 -> 0a5f3e11c


Downgrade jackson2 version from 2.7.0. to 2.4.5

- remove usage of jackson-datatype-guava for incompatibility of guava


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

Branch: refs/heads/master
Commit: 5ccb6bfb59652fb170feb0830b9031a64480bdfa
Parents: 5b01f8f
Author: Andrea Turli <andrea.tu...@gmail.com>
Authored: Thu Feb 11 12:49:15 2016 +0100
Committer: Andrea Turli <andrea.tu...@gmail.com>
Committed: Thu Feb 11 19:50:42 2016 +0100

----------------------------------------------------------------------
 karaf/features/src/main/feature/feature.xml     |  1 -
 pom.xml                                         |  3 +-
 rest/rest-server/pom.xml                        |  4 --
 .../util/json/BrooklynJacksonJsonProvider.java  |  6 +-
 .../rest/util/json/MultimapSerializer.java      | 62 ++++++++++++++++++++
 5 files changed, 66 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5ccb6bfb/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 19d439e..0b22046 100644
--- a/karaf/features/src/main/feature/feature.xml
+++ b/karaf/features/src/main/feature/feature.xml
@@ -181,7 +181,6 @@
         <bundle 
dependency="true">mvn:com.sun.jersey/jersey-core/${jersey.version}</bundle>
         <bundle 
dependency="true">mvn:com.sun.jersey/jersey-servlet/${jersey.version}</bundle>
 
-        <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>
     </feature>
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5ccb6bfb/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index c1e2003..c41c691 100644
--- a/pom.xml
+++ b/pom.xml
@@ -97,7 +97,7 @@
         <slf4j.version>1.6.6</slf4j.version>  <!-- used for java.util.logging 
jul-to-slf4j interception -->
         <guava.version>17.0</guava.version>
         <xstream.version>1.4.7</xstream.version>
-        <fasterxml.jackson.version>2.7.0</fasterxml.jackson.version>  <!-- 
more recent jackson, but not compatible with old annotations! -->
+        <fasterxml.jackson.version>2.4.5</fasterxml.jackson.version>  <!-- 
more recent jackson, but not compatible with old annotations! -->
         <jersey.version>1.19</jersey.version>
         <httpclient.version>4.4.1</httpclient.version>
         <commons-lang3.version>3.3.2</commons-lang3.version>
@@ -148,7 +148,6 @@
         <maxmind.version>0.8.1</maxmind.version>
         <jna.version>4.0.0</jna.version>
         <winrm4j.version>0.3.1</winrm4j.version>
-        
         <!-- Transitive dependencies, declared explicitly to avoid version 
mismatch -->
         <clojure.version>1.4.0</clojure.version>
         <zookeeper.version>3.3.4</zookeeper.version>

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5ccb6bfb/rest/rest-server/pom.xml
----------------------------------------------------------------------
diff --git a/rest/rest-server/pom.xml b/rest/rest-server/pom.xml
index 9b36f69..06c137b 100644
--- a/rest/rest-server/pom.xml
+++ b/rest/rest-server/pom.xml
@@ -95,10 +95,6 @@
             <artifactId>slf4j-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.fasterxml.jackson.datatype</groupId>
-            <artifactId>jackson-datatype-guava</artifactId>
-        </dependency>
-        <dependency>
             <groupId>com.fasterxml.jackson.jaxrs</groupId>
             <artifactId>jackson-jaxrs-json-provider</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5ccb6bfb/rest/rest-server/src/main/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonJsonProvider.java
----------------------------------------------------------------------
diff --git 
a/rest/rest-server/src/main/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonJsonProvider.java
 
b/rest/rest-server/src/main/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonJsonProvider.java
index f6d2a08..08265c7 100644
--- 
a/rest/rest-server/src/main/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonJsonProvider.java
+++ 
b/rest/rest-server/src/main/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonJsonProvider.java
@@ -35,7 +35,6 @@ import org.slf4j.LoggerFactory;
 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;
 import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
 
 public class BrooklynJacksonJsonProvider extends JacksonJsonProvider 
implements ManagementContextInjectable {
@@ -141,7 +140,7 @@ public class BrooklynJacksonJsonProvider extends 
JacksonJsonProvider implements
 
         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"));
 
@@ -149,7 +148,8 @@ public class BrooklynJacksonJsonProvider extends 
JacksonJsonProvider implements
         new BidiSerialization.EntitySerialization(mgmt).install(mapperModule);
         new 
BidiSerialization.LocationSerialization(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/5ccb6bfb/rest/rest-server/src/main/java/org/apache/brooklyn/rest/util/json/MultimapSerializer.java
----------------------------------------------------------------------
diff --git 
a/rest/rest-server/src/main/java/org/apache/brooklyn/rest/util/json/MultimapSerializer.java
 
b/rest/rest-server/src/main/java/org/apache/brooklyn/rest/util/json/MultimapSerializer.java
new file mode 100644
index 0000000..c264e22
--- /dev/null
+++ 
b/rest/rest-server/src/main/java/org/apache/brooklyn/rest/util/json/MultimapSerializer.java
@@ -0,0 +1,62 @@
+/*
+ * 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.util.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.
+ */
+@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);
+        }
+    }
+}

Reply via email to