killbill-uncached

util: fix PerTenantConfig serialization Signed-off-by:

10/18/2018 12:38:46 PM

Details

diff --git a/api/src/main/java/org/killbill/billing/callcontext/CallContextBase.java b/api/src/main/java/org/killbill/billing/callcontext/CallContextBase.java
index 448a377..0fe2ce0 100644
--- a/api/src/main/java/org/killbill/billing/callcontext/CallContextBase.java
+++ b/api/src/main/java/org/killbill/billing/callcontext/CallContextBase.java
@@ -43,10 +43,6 @@ public abstract class CallContextBase implements CallContext, Externalizable {
     public CallContextBase() {
     }
 
-    public CallContextBase(@Nullable final UUID accountId, @Nullable final UUID tenantId, final String userName, final CallOrigin callOrigin, final UserType userType) {
-        this(accountId, tenantId, userName, callOrigin, userType, null);
-    }
-
     public CallContextBase(@Nullable final UUID accountId, @Nullable final UUID tenantId, final String userName, final CallOrigin callOrigin, final UserType userType, final UUID userToken) {
         this(accountId, tenantId, userName, callOrigin, userType, null, null, userToken);
     }
diff --git a/catalog/src/test/java/org/killbill/billing/catalog/caching/TestDefaultCatalogCache.java b/catalog/src/test/java/org/killbill/billing/catalog/caching/TestDefaultCatalogCache.java
index bbbe702..42d0040 100644
--- a/catalog/src/test/java/org/killbill/billing/catalog/caching/TestDefaultCatalogCache.java
+++ b/catalog/src/test/java/org/killbill/billing/catalog/caching/TestDefaultCatalogCache.java
@@ -54,6 +54,10 @@ public class TestDefaultCatalogCache extends CatalogTestSuiteNoDB {
 
     @BeforeMethod(groups = "fast")
     protected void beforeMethod() throws Exception {
+        if (hasFailed()) {
+            return;
+        }
+
         cacheControllerDispatcher.clearAll();
 
         multiTenantContext = Mockito.mock(InternalTenantContext.class);
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantConfigChangeInternalEvent.java b/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantConfigChangeInternalEvent.java
index f62e80d..9c03bf7 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantConfigChangeInternalEvent.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantConfigChangeInternalEvent.java
@@ -57,4 +57,41 @@ public class DefaultTenantConfigChangeInternalEvent extends BusEventBase impleme
     public BusInternalEventType getBusEventType() {
         return BusInternalEventType.TENANT_CONFIG_CHANGE;
     }
+
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("DefaultTenantConfigChangeInternalEvent{");
+        sb.append("id=").append(id);
+        sb.append(", key='").append(key).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+
+    @Override
+    public boolean equals(final Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        if (!super.equals(o)) {
+            return false;
+        }
+
+        final DefaultTenantConfigChangeInternalEvent that = (DefaultTenantConfigChangeInternalEvent) o;
+
+        if (id != null ? !id.equals(that.id) : that.id != null) {
+            return false;
+        }
+        return key != null ? key.equals(that.key) : that.key == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = super.hashCode();
+        result = 31 * result + (id != null ? id.hashCode() : 0);
+        result = 31 * result + (key != null ? key.hashCode() : 0);
+        return result;
+    }
 }
diff --git a/util/src/main/java/org/killbill/billing/util/config/tenant/PerTenantConfig.java b/util/src/main/java/org/killbill/billing/util/config/tenant/PerTenantConfig.java
index 74e5a16..1dae3c9 100644
--- a/util/src/main/java/org/killbill/billing/util/config/tenant/PerTenantConfig.java
+++ b/util/src/main/java/org/killbill/billing/util/config/tenant/PerTenantConfig.java
@@ -31,9 +31,12 @@ public class PerTenantConfig extends HashMap<String, String> implements External
     }
 
     @Override
-    public void readExternal(final ObjectInput in) throws IOException {
-        for (int i = 0; i < in.readInt(); i++) {
-            put(in.readUTF(), in.readUTF());
+    public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException {
+        final int size = in.readInt();
+        for (int i = 0; i < size; i++) {
+            final Object key = in.readObject();
+            final Object value = in.readObject();
+            put(String.valueOf(key), value == null ? null : String.valueOf(value));
         }
     }
 
@@ -41,8 +44,8 @@ public class PerTenantConfig extends HashMap<String, String> implements External
     public void writeExternal(final ObjectOutput oo) throws IOException {
         oo.writeInt(size());
         for (final String key : keySet()) {
-            oo.writeUTF(key);
-            oo.writeUTF(get(key));
+            oo.writeObject(key);
+            oo.writeObject(get(key));
         }
     }
 }