diff --git a/.gitignore b/.gitignore
index 92c0e88382..2b1207ee74 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,7 +19,10 @@ atlassian-ide-plugin.xml
.java-version
.factorypath
.apt_generated
+.apt_generated_tests
.checkstyle
nb-configuration.xml
nbactions.xml
/.nb-gradle/
+dependency-reduced-pom.xml
+.vscode
diff --git a/apis/chef/src/main/java/org/jclouds/chef/config/ChefParserModule.java b/apis/chef/src/main/java/org/jclouds/chef/config/ChefParserModule.java
index da4084d6c2..fac073b8a0 100644
--- a/apis/chef/src/main/java/org/jclouds/chef/config/ChefParserModule.java
+++ b/apis/chef/src/main/java/org/jclouds/chef/config/ChefParserModule.java
@@ -37,6 +37,7 @@ import org.jclouds.crypto.Crypto;
import org.jclouds.crypto.Pems;
import org.jclouds.json.config.GsonModule.DateAdapter;
import org.jclouds.json.config.GsonModule.Iso8601DateAdapter;
+import org.jclouds.json.gson.internal.JsonReaderInternalAccess;
import org.jclouds.json.internal.NullFilteringTypeAdapterFactories;
import org.jclouds.json.internal.NullFilteringTypeAdapterFactories.MapTypeAdapterFactory;
import org.jclouds.json.internal.NullHackJsonLiteralAdapter;
@@ -53,7 +54,6 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSyntaxException;
import com.google.gson.TypeAdapter;
-import com.google.gson.internal.JsonReaderInternalAccess;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.inject.AbstractModule;
diff --git a/core/pom.xml b/core/pom.xml
index cfa23c60f5..674b93a23b 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -78,9 +78,8 @@
test
- com.google.code.gson
- gson
- 2.5
+ org.apache.jclouds
+ jclouds-gson
com.google.guava
diff --git a/core/src/main/java/org/jclouds/json/config/GsonModule.java b/core/src/main/java/org/jclouds/json/config/GsonModule.java
index 7b8bd0cddb..ebe8cf1ffb 100644
--- a/core/src/main/java/org/jclouds/json/config/GsonModule.java
+++ b/core/src/main/java/org/jclouds/json/config/GsonModule.java
@@ -37,6 +37,9 @@ import org.jclouds.domain.JsonBall;
import org.jclouds.domain.LoginCredentials;
import org.jclouds.json.Json;
import org.jclouds.json.SerializedNames;
+import org.jclouds.json.gson.internal.ConstructorConstructor;
+import org.jclouds.json.gson.internal.Excluder;
+import org.jclouds.json.gson.internal.JsonReaderInternalAccess;
import org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory;
import org.jclouds.json.internal.EnumTypeAdapterThatReturnsFromValue;
import org.jclouds.json.internal.GsonWrapper;
@@ -71,9 +74,6 @@ import com.google.gson.GsonBuilder;
import com.google.gson.InstanceCreator;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
-import com.google.gson.internal.ConstructorConstructor;
-import com.google.gson.internal.Excluder;
-import com.google.gson.internal.JsonReaderInternalAccess;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
diff --git a/core/src/main/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactory.java b/core/src/main/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactory.java
index ae0780986b..1df3f5ad2c 100644
--- a/core/src/main/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactory.java
+++ b/core/src/main/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactory.java
@@ -26,6 +26,9 @@ import java.lang.reflect.Modifier;
import java.util.List;
import java.util.Map;
+import org.jclouds.json.gson.internal.ConstructorConstructor;
+import org.jclouds.json.gson.internal.Excluder;
+import org.jclouds.json.gson.internal.bind.ReflectiveTypeAdapterFactory;
import org.jclouds.json.internal.NamingStrategies.AnnotationConstructorNamingStrategy;
import com.google.common.base.MoreObjects;
@@ -40,9 +43,6 @@ import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
-import com.google.gson.internal.ConstructorConstructor;
-import com.google.gson.internal.Excluder;
-import com.google.gson.internal.bind.ReflectiveTypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
diff --git a/core/src/main/java/org/jclouds/json/internal/NullFilteringTypeAdapterFactories.java b/core/src/main/java/org/jclouds/json/internal/NullFilteringTypeAdapterFactories.java
index 85dd545a0b..cdef883b7a 100644
--- a/core/src/main/java/org/jclouds/json/internal/NullFilteringTypeAdapterFactories.java
+++ b/core/src/main/java/org/jclouds/json/internal/NullFilteringTypeAdapterFactories.java
@@ -16,6 +16,20 @@
*/
package org.jclouds.json.internal;
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static com.google.common.base.Objects.equal;
+
+import java.io.IOException;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.jclouds.json.gson.internal.JsonReaderInternalAccess;
+
import com.google.common.base.Objects;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableCollection;
@@ -27,24 +41,11 @@ import com.google.common.collect.Multimap;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
-import com.google.gson.internal.JsonReaderInternalAccess;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
-import java.io.IOException;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import static com.google.common.base.Objects.equal;
-import static com.google.common.base.MoreObjects.toStringHelper;
-
/**
* Eliminates null values when deserializing Collections, Maps, and Multimaps
*
@@ -55,7 +56,7 @@ public class NullFilteringTypeAdapterFactories {
}
static TypeToken> resolve(TypeToken ownerType, Type param) {
- return TypeToken.get(com.google.gson.internal.$Gson$Types.resolve(ownerType.getType(), ownerType.getRawType(),
+ return TypeToken.get(org.jclouds.json.gson.internal.$Gson$Types.resolve(ownerType.getType(), ownerType.getRawType(),
param));
}
diff --git a/core/src/main/java/org/jclouds/json/internal/NullHackJsonLiteralAdapter.java b/core/src/main/java/org/jclouds/json/internal/NullHackJsonLiteralAdapter.java
index 15661763d2..e1f89098be 100644
--- a/core/src/main/java/org/jclouds/json/internal/NullHackJsonLiteralAdapter.java
+++ b/core/src/main/java/org/jclouds/json/internal/NullHackJsonLiteralAdapter.java
@@ -20,9 +20,10 @@ import java.io.IOException;
import java.io.Writer;
import java.lang.reflect.Field;
+import org.jclouds.json.gson.internal.bind.TypeAdapters;
+
import com.google.common.base.Throwables;
import com.google.gson.TypeAdapter;
-import com.google.gson.internal.bind.TypeAdapters;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
diff --git a/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java b/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java
index 1d54d09c61..8b6ce9c582 100644
--- a/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java
+++ b/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java
@@ -31,6 +31,8 @@ import javax.inject.Inject;
import javax.inject.Named;
import org.jclouds.json.SerializedNames;
+import org.jclouds.json.gson.internal.ConstructorConstructor;
+import org.jclouds.json.gson.internal.Excluder;
import org.jclouds.json.internal.NamingStrategies.AnnotationConstructorNamingStrategy;
import org.jclouds.json.internal.NamingStrategies.AnnotationOrNameFieldNamingStrategy;
import org.jclouds.json.internal.NamingStrategies.ExtractNamed;
@@ -48,8 +50,6 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.InstanceCreator;
import com.google.gson.TypeAdapter;
-import com.google.gson.internal.ConstructorConstructor;
-import com.google.gson.internal.Excluder;
import com.google.gson.reflect.TypeToken;
@Test(testName = "DeserializationConstructorTypeAdapterFactoryTest")
diff --git a/gson/pom.xml b/gson/pom.xml
new file mode 100644
index 0000000000..949fb158ee
--- /dev/null
+++ b/gson/pom.xml
@@ -0,0 +1,81 @@
+
+
+
+ 4.0.0
+
+ jclouds-project
+ org.apache.jclouds
+ 2.2.0-SNAPSHOT
+ ../project/pom.xml
+
+
+
+ jclouds-gson
+ jclouds gson copy without internal packages
+ bundle
+
+
+
+ com.google.code.gson
+ gson
+ 2.5
+
+
+
+
+
+
+ maven-shade-plugin
+ 2.2
+
+
+ shade
+ package
+
+ shade
+
+
+
+
+
+
+ com.google.code.gson:gson
+
+
+
+
+ com.google.gson.internal
+ org.jclouds.json.gson.internal
+
+
+
+
+
+ true
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
index fb4bf271fc..c16d8299dd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,6 +31,7 @@
project
resources
+ gson
core
common
compute
diff --git a/project/pom.xml b/project/pom.xml
index 9fe9136f7f..ec91ce1f4c 100644
--- a/project/pom.xml
+++ b/project/pom.xml
@@ -254,6 +254,27 @@
guava
${guava.version}
+
+ org.apache.jclouds
+ jclouds-gson
+ ${project.version}
+
+
+
+ com.google.code.gson
+ gson
+
+
+
com.google.code.findbugs
jsr305
@@ -517,9 +538,11 @@
**/modernizer_exclusions.txt
**/.factorypath
**/.apt_generated/**
+ **/.apt_generated_tests/**
**/.checkstyle
nb-configuration.xml
nbactions.xml
+ dependency-reduced-pom.xml
.repository/**
@@ -592,6 +615,32 @@
com.jcraft.jsch.agentproxy
+
+
+
+
+ org.apache.jclouds
+ jclouds-core
+ ${project.version}
+
+
+ org.apache.jclouds
+ jclouds-gson
+ ${project.version}
+
+
+
+ org.jclouds.json.gson.internal
+
+
diff --git a/resources/checkstyle.xml b/resources/checkstyle.xml
index 395ba67fac..d686ac73da 100644
--- a/resources/checkstyle.xml
+++ b/resources/checkstyle.xml
@@ -57,7 +57,7 @@
-
+