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

Benjamin Gould commented on THRIFT-4082:
----------------------------------------

I used a Java server with browser Javascript all the time, with no issues.  You 
might be right about the code in a try/catch for ProcessFunction.process()... 
if there is code being generated there and it doesn't have readStructEnd() that 
would be a problem.  You are also correct about this not being an issue for the 
binary protocol; for that protocol readStructEnd() is a no-op function:

https://github.com/apache/thrift/blob/e1832c354391deb0e0ce94a62ff32e8ce1c83fd3/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java#L246

IIRC in the Thrift whitepaper it explicitly says readStructEnd() was not 
strictly necessary to add to the Thrift semantics (because they included a STOP 
field) but it was included anyways to facilitate things like JSON and XML that 
have both initiating and terminating delimiters for their structures.

It is also possible this is not covered by the Thrift test suite... there is a 
phantomjs test runner for the javascript library but it doesn't look like there 
is an HTTP transport for Java in tests.json so I presume this combination does 
not get tested.  However I would sort of expect that some test combination does 
end up testing the JSON protocol with Java so if there is a bug in the Java 
implementation here, I think it is possible that this is an edge case for which 
there is not test coverage.

> Java library can't parse JSON generated by javascript TJSONProtocol
> -------------------------------------------------------------------
>
>                 Key: THRIFT-4082
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4082
>             Project: Thrift
>          Issue Type: Bug
>          Components: Java - Compiler
>    Affects Versions: 0.10.0
>            Reporter: Christopher Wright
>            Priority: Critical
>
> Thrift definition:
> struct Entity {
>   1: string id;
> }
> service EntityService {
>   void save(1: Entity entity);
> }
> JSON document: [1,"save",1,0,{"1":{"rec":{"1":{"str":"q19786052"}}}}]
> Error:
> org.apache.thrift.protocol.TProtocolException: Unexpected character:}
> (Additionally, the parser would ideally state where it found the unexpected 
> character.)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to