[infinispan-issues] [JBoss JIRA] (ISPN-7580) Use of marsheller is not consistent in all places

Ramesh Reddy (JIRA) issues at jboss.org
Tue Mar 21 07:34:00 EDT 2017


    [ https://issues.jboss.org/browse/ISPN-7580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13381492#comment-13381492 ] 

Ramesh Reddy commented on ISPN-7580:
------------------------------------

[~anistor] to be honest there isn't much magic in my code, I just extended the serialization context then injected the a marshaller in place. I would liked if all the logic would have just depend on Marshallar interface based on the "descriptor name" not class name, and {{BaseMarshaller}} interface contain the marshall/unmarshall methods rather than delegating to the {{MarshallDelegate}} interface. For me to do that, means lot more changes in your code, thus I resisted.

Anyway my git repo is at [1], note this is work very much in progress. The extended marshaller and serialization context seen here [2], the most important to you may be seen in my test case here [3] which shows few scenarios, marshalling simple and complex objects how interchangeably used the stock marshellers or my custom marshaller to test the validity. 

Thanks for taking a look, let me know of any suggestions. 

[1] https://github.com/rareddy/infinispan  
[2] https://github.com/rareddy/infinispan/tree/master/infinispan-api/src/main/java/org/teiid/infinispan/api
[3] https://github.com/rareddy/infinispan/blob/master/translator-infinispan-hotrod/src/test/java/org/teiid/translator/infinispan/hotrod/TestTeiidTableMarsheller.java


> Use of marsheller is not consistent in all places
> -------------------------------------------------
>
>                 Key: ISPN-7580
>                 URL: https://issues.jboss.org/browse/ISPN-7580
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Marshalling, Remote Querying
>            Reporter: Ramesh Reddy
>            Assignee: Adrian Nistor
>
> Usage of extended ProtoStreamMarshaller is not consistent across all the code paths. For the purposes of Teiid translator, I have extended ProtoStreamMarshaller which knows to read/write byte streams in portable fashion for given message type, which are representions of a relational table in Teiid. This works fine, if I just use cache's get/put calls.
> However, the same fails when used with RemoteQuery or Continuous query. The reason is, these classes circumvent extended Marsheller and go directly to serialization context registered to do the wrapping/unwrapping. Not only that there are few places code will type cast the SerializationContext to SerializationContextImpl object. Thus I can not even provide my own Serializer nor I can extend this as SerializationContextImpl is declared as final. These need to be corrected such that extended marsheller is used rather than hard coding them.
> I am guessing this is first time anyone has even done this without using dedicated java classes as marshellers. 
> This is extremely critical for me to be fixed to move forward, I can provide the pull request for  it?



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the infinispan-issues mailing list