curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CURATOR-67) Issue with default JSONInstanceSerializer for discovery service builder
Date Fri, 01 Aug 2014 16:31:39 GMT

    [ https://issues.apache.org/jira/browse/CURATOR-67?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14082442#comment-14082442
] 

ASF GitHub Bot commented on CURATOR-67:
---------------------------------------

GitHub user madrob opened a pull request:

    https://github.com/apache/curator/pull/30

    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.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/madrob/curator CURATOR-67

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/curator/pull/30.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #30
    
----
commit f24e11bdc9ca45e94479b1c6fc981b8b7393f619
Author: Mike Drob <mdrob@cloudera.com>
Date:   2014-08-01T16:29:30Z

    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.

----


> Issue with default JSONInstanceSerializer for discovery service builder
> -----------------------------------------------------------------------
>
>                 Key: CURATOR-67
>                 URL: https://issues.apache.org/jira/browse/CURATOR-67
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 2.2.0-incubating
>            Reporter: Dan Diodati
>             Fix For: awaiting-response
>
>
> 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 {@link JsonInstanceSerializer}.
>   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 {@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);
>   43     }
> 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     {
>   52         return new ServiceDiscoveryImpl<T>(client, basePath, serializer, thisInstance);
>   53     }
> 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) {
>                    serializer = new JsonInstanceSerializer<T>(payloadClass);  //
NOTE Need to add payloadClass as a private data member too
>                 }
>   52         return new ServiceDiscoveryImpl<T>(client, basePath, serializer, thisInstance);
>   53     }



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message