You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ca...@apache.org on 2014/08/05 00:55:06 UTC

[1/3] git commit: CURATOR-67 defer creation of serializer

Repository: curator
Updated Branches:
  refs/heads/CURATOR-67 [created] 756fd5fd9


CURATOR-67 defer creation of serializer

Instead of immediately creating a new JSONInstanceSerializer we can
defer until build() is actually called. This lets users specify their
own serializers and avoids issues where there may be version conflicts.


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

Branch: refs/heads/CURATOR-67
Commit: f24e11bdc9ca45e94479b1c6fc981b8b7393f619
Parents: f5767c8
Author: Mike Drob <md...@cloudera.com>
Authored: Fri Aug 1 11:29:30 2014 -0500
Committer: Mike Drob <md...@cloudera.com>
Committed: Fri Aug 1 11:29:30 2014 -0500

----------------------------------------------------------------------
 .../x/discovery/ServiceDiscoveryBuilder.java    |  7 +-
 .../details/TestServiceDiscoveryBuilder.java    | 68 ++++++++++++++++++++
 2 files changed, 74 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/f24e11bd/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceDiscoveryBuilder.java
----------------------------------------------------------------------
diff --git a/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceDiscoveryBuilder.java b/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceDiscoveryBuilder.java
index ab62004..28fc31c 100644
--- a/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceDiscoveryBuilder.java
+++ b/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceDiscoveryBuilder.java
@@ -29,6 +29,7 @@ public class ServiceDiscoveryBuilder<T>
     private String                  basePath;
     private InstanceSerializer<T>   serializer;
     private ServiceInstance<T>      thisInstance;
+    private Class<T>                payloadClass;
 
     /**
      * Return a new builder. The builder will be defaulted with a {@link JsonInstanceSerializer}.
@@ -39,7 +40,7 @@ public class ServiceDiscoveryBuilder<T>
      */
     public static<T> ServiceDiscoveryBuilder<T>     builder(Class<T> payloadClass)
     {
-        return new ServiceDiscoveryBuilder<T>(payloadClass).serializer(new JsonInstanceSerializer<T>(payloadClass));
+        return new ServiceDiscoveryBuilder<T>(payloadClass);
     }
 
     /**
@@ -49,6 +50,9 @@ public class ServiceDiscoveryBuilder<T>
      */
     public ServiceDiscovery<T>      build()
     {
+        if ( serializer == null ) {
+            serializer(new JsonInstanceSerializer<T>(payloadClass));
+        }
         return new ServiceDiscoveryImpl<T>(client, basePath, serializer, thisInstance);
     }
 
@@ -102,5 +106,6 @@ public class ServiceDiscoveryBuilder<T>
 
     ServiceDiscoveryBuilder(Class<T> payloadClass)
     {
+        this.payloadClass = payloadClass;
     }
 }

http://git-wip-us.apache.org/repos/asf/curator/blob/f24e11bd/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/details/TestServiceDiscoveryBuilder.java
----------------------------------------------------------------------
diff --git a/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/details/TestServiceDiscoveryBuilder.java b/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/details/TestServiceDiscoveryBuilder.java
new file mode 100644
index 0000000..072eabf
--- /dev/null
+++ b/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/details/TestServiceDiscoveryBuilder.java
@@ -0,0 +1,68 @@
+/**
+ * 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.curator.x.discovery.details;
+
+import org.apache.curator.framework.CuratorFramework;
+import org.apache.curator.framework.CuratorFrameworkFactory;
+import org.apache.curator.retry.RetryOneTime;
+import org.apache.curator.test.BaseClassForTests;
+import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;
+import org.apache.curator.x.discovery.ServiceInstance;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+public class TestServiceDiscoveryBuilder extends BaseClassForTests
+{
+    @Test
+    public void testDefaultSerializer() throws Exception
+    {        
+        CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), new RetryOneTime(1));
+        ServiceDiscoveryBuilder<Object> builder = ServiceDiscoveryBuilder.builder(Object.class).client(client);
+        ServiceDiscoveryImpl<?> discovery = (ServiceDiscoveryImpl<?>) builder.basePath("/path").build();
+
+        Assert.assertNotNull(discovery.getSerializer(), "default serializer not set");
+        Assert.assertTrue(discovery.getSerializer() instanceof JsonInstanceSerializer, "default serializer not JSON");
+    }
+
+    @Test
+    public void testSetSerializer() throws Exception
+    {
+        CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), new RetryOneTime(1));
+        ServiceDiscoveryBuilder<Object> builder = ServiceDiscoveryBuilder.builder(Object.class).client(client);
+        builder.serializer(new InstanceSerializer<Object>()
+        {
+            @Override
+            public byte[] serialize(ServiceInstance<Object> instance)
+            {
+                return null;
+            }
+
+            @Override
+            public ServiceInstance<Object> deserialize(byte[] bytes)
+            {
+                return null;
+            }
+        });
+
+        ServiceDiscoveryImpl<?> discovery = (ServiceDiscoveryImpl<?>) builder.basePath("/path").build();
+        Assert.assertNotNull(discovery.getSerializer(), "default serializer not set");
+        Assert.assertFalse(discovery.getSerializer() instanceof JsonInstanceSerializer, "set serializer is JSON");
+    }
+}


[3/3] git commit: Merge branch 'CURATOR-67' of https://github.com/madrob/curator into CURATOR-67

Posted by ca...@apache.org.
Merge branch 'CURATOR-67' of https://github.com/madrob/curator into CURATOR-67


Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/756fd5fd
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/756fd5fd
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/756fd5fd

Branch: refs/heads/CURATOR-67
Commit: 756fd5fd94ac7de5c7600bc4e67a9e158310836b
Parents: f24e11b c744c64
Author: Cam McKenzie <ca...@apache.org>
Authored: Tue Aug 5 08:54:12 2014 +1000
Committer: Cam McKenzie <ca...@apache.org>
Committed: Tue Aug 5 08:54:12 2014 +1000

----------------------------------------------------------------------
 .../x/discovery/ServiceDiscoveryBuilder.java    |  5 +-
 .../discovery/TestServiceDiscoveryBuilder.java  | 71 ++++++++++++++++++++
 2 files changed, 74 insertions(+), 2 deletions(-)
----------------------------------------------------------------------



[2/3] git commit: CURATOR-67 defer creation of serializer

Posted by ca...@apache.org.
CURATOR-67 defer creation of serializer

Instead of immediately creating a new JSONInstanceSerializer we can
defer until build() is actually called. This lets users specify their
own serializers and avoids issues where there may be version conflicts.

This closes #30


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

Branch: refs/heads/CURATOR-67
Commit: c744c646b9ad66831ab771d2dab4a38535683959
Parents: f5767c8
Author: Mike Drob <md...@cloudera.com>
Authored: Fri Aug 1 11:29:30 2014 -0500
Committer: Mike Drob <md...@cloudera.com>
Committed: Mon Aug 4 08:50:03 2014 -0500

----------------------------------------------------------------------
 .../x/discovery/ServiceDiscoveryBuilder.java    | 12 +++-
 .../discovery/TestServiceDiscoveryBuilder.java  | 71 ++++++++++++++++++++
 2 files changed, 80 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/c744c646/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceDiscoveryBuilder.java
----------------------------------------------------------------------
diff --git a/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceDiscoveryBuilder.java b/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceDiscoveryBuilder.java
index ab62004..2b972ca 100644
--- a/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceDiscoveryBuilder.java
+++ b/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceDiscoveryBuilder.java
@@ -29,9 +29,10 @@ public class ServiceDiscoveryBuilder<T>
     private String                  basePath;
     private InstanceSerializer<T>   serializer;
     private ServiceInstance<T>      thisInstance;
+    private Class<T>                payloadClass;
 
     /**
-     * Return a new builder. The builder will be defaulted with a {@link JsonInstanceSerializer}.
+     * Return a new builder.
      *
      * @param payloadClass the class of the payload of your service instance (you can use {@link Void}
      * if your instances don't need a payload)
@@ -39,16 +40,20 @@ public class ServiceDiscoveryBuilder<T>
      */
     public static<T> ServiceDiscoveryBuilder<T>     builder(Class<T> payloadClass)
     {
-        return new ServiceDiscoveryBuilder<T>(payloadClass).serializer(new JsonInstanceSerializer<T>(payloadClass));
+        return new ServiceDiscoveryBuilder<T>(payloadClass);
     }
 
     /**
-     * Build a new service discovery with the currently set values
+     * Build a new service discovery with the currently set values. If not set, the builder will be
+     * defaulted with a {@link JsonInstanceSerializer}.
      *
      * @return new service discovery
      */
     public ServiceDiscovery<T>      build()
     {
+        if ( serializer == null ) {
+            serializer(new JsonInstanceSerializer<T>(payloadClass));
+        }
         return new ServiceDiscoveryImpl<T>(client, basePath, serializer, thisInstance);
     }
 
@@ -102,5 +107,6 @@ public class ServiceDiscoveryBuilder<T>
 
     ServiceDiscoveryBuilder(Class<T> payloadClass)
     {
+        this.payloadClass = payloadClass;
     }
 }

http://git-wip-us.apache.org/repos/asf/curator/blob/c744c646/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/TestServiceDiscoveryBuilder.java
----------------------------------------------------------------------
diff --git a/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/TestServiceDiscoveryBuilder.java b/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/TestServiceDiscoveryBuilder.java
new file mode 100644
index 0000000..68716ed
--- /dev/null
+++ b/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/TestServiceDiscoveryBuilder.java
@@ -0,0 +1,71 @@
+/**
+ * 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.curator.x.discovery;
+
+import org.apache.curator.framework.CuratorFramework;
+import org.apache.curator.framework.CuratorFrameworkFactory;
+import org.apache.curator.retry.RetryOneTime;
+import org.apache.curator.test.BaseClassForTests;
+import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;
+import org.apache.curator.x.discovery.ServiceInstance;
+import org.apache.curator.x.discovery.details.InstanceSerializer;
+import org.apache.curator.x.discovery.details.JsonInstanceSerializer;
+import org.apache.curator.x.discovery.details.ServiceDiscoveryImpl;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+public class TestServiceDiscoveryBuilder extends BaseClassForTests
+{
+    @Test
+    public void testDefaultSerializer() throws Exception
+    {        
+        CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), new RetryOneTime(1));
+        ServiceDiscoveryBuilder<Object> builder = ServiceDiscoveryBuilder.builder(Object.class).client(client);
+        ServiceDiscoveryImpl<?> discovery = (ServiceDiscoveryImpl<?>) builder.basePath("/path").build();
+
+        Assert.assertNotNull(discovery.getSerializer(), "default serializer not set");
+        Assert.assertTrue(discovery.getSerializer() instanceof JsonInstanceSerializer, "default serializer not JSON");
+    }
+
+    @Test
+    public void testSetSerializer() throws Exception
+    {
+        CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), new RetryOneTime(1));
+        ServiceDiscoveryBuilder<Object> builder = ServiceDiscoveryBuilder.builder(Object.class).client(client);
+        builder.serializer(new InstanceSerializer<Object>()
+        {
+            @Override
+            public byte[] serialize(ServiceInstance<Object> instance)
+            {
+                return null;
+            }
+
+            @Override
+            public ServiceInstance<Object> deserialize(byte[] bytes)
+            {
+                return null;
+            }
+        });
+
+        ServiceDiscoveryImpl<?> discovery = (ServiceDiscoveryImpl<?>) builder.basePath("/path").build();
+        Assert.assertNotNull(discovery.getSerializer(), "default serializer not set");
+        Assert.assertFalse(discovery.getSerializer() instanceof JsonInstanceSerializer, "set serializer is JSON");
+    }
+}