Description
There is a problem with the ServiceDiscoveryBuilder.java not letting me provide a custom InstanceSerializer.
This build creates a new instance of the JsonInstanceSerailzer in the main builder method before I get a chance to provide my own instance in the serializer method.
In my case it ends up giving me a incompatible class error due to the fact that I have a legacy system which is using an older version of Jackson library( ~1.5) which is not binary compatible with the jackson version used by ServiceDiscovery (~1.9).
So I tried to provide my own serializer but the default instance is always being created.
Look at https://git-wip-us.apache.org/repos/asf?p=incubator-curator.git;a=blob;f=curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceDiscoveryBuilder.java;h=ab62004e72d138e1195e01ce4d3e2f1a7d4825a6;hb=HEAD
/**
34 * Return a new builder. The builder will be defaulted with a
35 *
36 * @param payloadClass the class of the payload of your service instance (you can use {@link Void}
37 * if your instances don't need a payload)
38 * @return new builder
39 */
40 public static<T> ServiceDiscoveryBuilder<T> builder(Class<T> payloadClass)
41 { 42 return new ServiceDiscoveryBuilder<T>(payloadClass).serializer(new JsonInstanceSerializer<T>(payloadClass)); 43 }
So to fix this can we change this to :
/**
34 * Return a new builder. The builder will be defaulted with a {@link JsonInstanceSerializer}
.
35 *
36 * @param payloadClass the class of the payload of your service instance (you can use
37 * if your instances don't need a payload)
38 * @return new builder
39 */
40 public static<T> ServiceDiscoveryBuilder<T> builder(Class<T> payloadClass)
41
Then in the build method from:
45 /**
46 * Build a new service discovery with the currently set values
47 *
48 * @return new service discovery
49 */
50 public ServiceDiscovery<T> build()
51
To something like:
44
45 /**
46 * Build a new service discovery with the currently set values
47 *
48 * @return new service discovery
49 */
50 public ServiceDiscovery<T> build()
51 {
If (serializer == null)
52 return new ServiceDiscoveryImpl<T>(client, basePath, serializer, thisInstance);
53 }