diff --git a/pom.xml b/pom.xml
index 7a691b27..3e4b914e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -209,7 +209,6 @@
io.reactivex:*
io.zipkin.java:*
io.netty:*
- com.google.guava:*
commons-*:*
diff --git a/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceConfiguration.java b/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceConfiguration.java
index c60cd9ac..b7b6651c 100644
--- a/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceConfiguration.java
+++ b/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceConfiguration.java
@@ -17,7 +17,6 @@
package org.springframework.cloud.kubernetes.archaius;
-import com.google.common.base.Strings;
import com.netflix.config.WatchedConfigurationSource;
import com.netflix.config.WatchedUpdateListener;
import com.netflix.config.WatchedUpdateResult;
@@ -26,8 +25,10 @@ import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClientException;
import io.fabric8.kubernetes.client.Watch;
import io.fabric8.kubernetes.client.Watcher;
+
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
+import org.springframework.util.StringUtils;
import java.io.Closeable;
import java.io.IOException;
@@ -72,14 +73,14 @@ public class ArchaiusConfigMapSourceConfiguration implements InitializingBean, D
public void start() {
- ConfigMap map = Strings.isNullOrEmpty(namespace)
+ ConfigMap map = StringUtils.isEmpty(namespace)
? client.configMaps().withName(name).get()
: client.configMaps().inNamespace(namespace).withName(name).get();
if (map != null) {
currentData.set(asObjectMap(map.getData()));
}
- watch = Strings.isNullOrEmpty(namespace)
+ watch = StringUtils.isEmpty(namespace)
? client.configMaps().withName(name).watch(watcher)
: client.configMaps().inNamespace(namespace).withName(namespace).watch(watcher);
started.set(true);
diff --git a/spring-cloud-kubernetes-ribbon/pom.xml b/spring-cloud-kubernetes-ribbon/pom.xml
index c930af98..456904b0 100644
--- a/spring-cloud-kubernetes-ribbon/pom.xml
+++ b/spring-cloud-kubernetes-ribbon/pom.xml
@@ -98,11 +98,6 @@
true
-
- com.google.guava
- guava
-
-
org.springframework.boot
spring-boot-starter-test
diff --git a/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesConfigKey.java b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesConfigKey.java
index 37c98957..4df09787 100644
--- a/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesConfigKey.java
+++ b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesConfigKey.java
@@ -26,7 +26,6 @@ import java.util.Set;
import org.springframework.util.Assert;
-import com.google.common.reflect.TypeToken;
import com.netflix.client.config.IClientConfigKey;
public abstract class KubernetesConfigKey implements IClientConfigKey {
@@ -93,7 +92,7 @@ public abstract class KubernetesConfigKey implements IClientConfigKey {
Assert.isTrue(superclass instanceof ParameterizedType,
superclass + " isn't parameterized");
Type runtimeType = ((ParameterizedType) superclass).getActualTypeArguments()[0];
- type = (Class) TypeToken.of(runtimeType).getRawType();
+ type = (Class) Types.rawType(runtimeType);
}
@Override
diff --git a/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/Types.java b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/Types.java
new file mode 100644
index 00000000..89eedf0a
--- /dev/null
+++ b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/Types.java
@@ -0,0 +1,36 @@
+package org.springframework.cloud.kubernetes.ribbon;
+
+
+import java.lang.reflect.GenericArrayType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.lang.reflect.WildcardType;
+import java.util.Set;
+
+final class Types {
+
+ private Types() {
+ //Utlity
+ }
+
+ static Class rawType(Type type) {
+ if (type instanceof Class) {
+ return (Class) type;
+ } else if (type instanceof TypeVariable) {
+ return rawType(firstOrObject(((TypeVariable) type).getBounds()));
+ } else if (type instanceof WildcardType) {
+ return rawType(firstOrObject(((WildcardType) type).getUpperBounds()));
+ } else if (type instanceof GenericArrayType) {
+ return rawType(((GenericArrayType) type).getGenericComponentType());
+ }
+ return Object.class;
+ }
+
+ private static Type firstOrObject(Type[] types) {
+ if (types.length > 0) {
+ return rawType(types[0]);
+ } else {
+ return Void.class;
+ }
+ }
+}
diff --git a/spring-cloud-kubernetes-ribbon/src/test/java/org/springframework/cloud/kubernetes/ribbon/KubernetesConfigKeyTest.java b/spring-cloud-kubernetes-ribbon/src/test/java/org/springframework/cloud/kubernetes/ribbon/KubernetesConfigKeyTest.java
new file mode 100644
index 00000000..549635b7
--- /dev/null
+++ b/spring-cloud-kubernetes-ribbon/src/test/java/org/springframework/cloud/kubernetes/ribbon/KubernetesConfigKeyTest.java
@@ -0,0 +1,27 @@
+package org.springframework.cloud.kubernetes.ribbon;
+
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class KubernetesConfigKeyTest {
+
+ private class TypeOne {}
+
+ @Test
+ public void testTypes() {
+ //with class
+ KubernetesConfigKey key1 = new KubernetesConfigKey("key1"){};
+
+ //with type variable
+ KubernetesConfigKey key2 = new KubernetesConfigKey("key2"){};
+
+ //with type variable with no bounds
+ KubernetesConfigKey key3 = new KubernetesConfigKey("key3"){};
+
+ Assert.assertEquals(String.class, key1.type());
+ Assert.assertEquals(TypeOne.class, key2.type());
+ Assert.assertEquals(Object.class, key3.type());
+ }
+
+}
\ No newline at end of file