[PATCH] Can't add custom Hessian serializers to the client
----------------------------------------------------------

                 Key: CAY-1629
                 URL: https://issues.apache.org/jira/browse/CAY-1629
             Project: Cayenne
          Issue Type: Improvement
          Components: ROP
    Affects Versions: 3.1M4
         Environment: Mac 10.6
            Reporter: John Huss
            Priority: Minor
         Attachments: client_custom_serializers_patch.txt

There isn't any way to register custom Hessian serializers to the client in an 
ROP setup.  They can be registered with the server by doing this:

public class SampleServlet extends ROPHessianServlet {
        public void init(ServletConfig configuration) throws ServletException {
                super.init(configuration);
                getSerializerFactory().addFactory(new MySerializerFactory());
        }
}

The attached patch saves and exposes a reference to the serializerFactory on 
the client so that the same thing can be done there as well, like so:

ClientRuntime clientRuntime = new ClientRuntime(...);
((HessianConnection) 
clientRuntime.getConnection()).getSerializerFactory().addFactory(new 
MySerializerFactory());

In either case these custom serializers will not be reflected when using the 
static methods in HessianUtil since those factories are completely internal. 
This could be considered an existing bug since the server already supports 
adding custom factories.  Perhaps the better solution would be to make the 
CLIENT_SERIALIZER_FACTORIES and SERVER_SERIALIZER_FACTORIES variables 
modifiable, but that feels ugly.  

For the time being though, the patch provides some essential functionality that 
is missing.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to