Chae Lee created THRIFT-4003:
--------------------------------

             Summary: Is there a reason why hexVal() in TJSONProtocol.java 
throws exception when uppercase alphabet is given?
                 Key: THRIFT-4003
                 URL: https://issues.apache.org/jira/browse/THRIFT-4003
             Project: Thrift
          Issue Type: Question
          Components: Java - Compiler, Java - Library
            Reporter: Chae Lee
            Priority: Trivial


Found out that passing unicode string "\uB300\uCE58" to Java server causes 
"Expected hex character" in lib/java/src/protocol/TJSONProtocol.java:306.

{code:title=TJSONProtocol.java|borderStyle=solid}
// Convert a byte containing a hex char ('0'-'9' or 'a'-'f') into its
// corresponding hex value
private static final byte hexVal(byte ch) throws TException {
    if ((ch >= '0') && (ch <= '9')) {
        return (byte)((char)ch - '0');
    }
    else if ((ch >= 'a') && (ch <= 'f')) {
        return (byte)((char)ch - 'a');
    }
    else {
        throw new TProtocolException(TProtocolException.INVALID_DATA,
                                    "Expected hex character");
    }
}{code}

This is due to alphabet 'B' is not between '0' ~ '9' or 'a' ~ 'f'.
Not that it's causing major issues or anything, just curious if the if~ else 
conditionals are set like this for a reason.





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to