> On Nov. 26, 2014, 12:52 a.m., Jarek Cecho wrote: > > server/src/main/java/org/apache/sqoop/server/RequestContext.java, lines > > 112-117 > > <https://reviews.apache.org/r/28434/diff/1/?file=775517#file775517line112> > > > > I'm wondering whether this method would return the JSON correctly as > > expected if I would send POST request as this one: > > > > POST /page?argument=value HTTP/1.0 > > > > {"json":"value"} > > > > E.g. in this case I would expect that the getParametersMap will return > > Map of size two and then it will depend on the Map ordering whether we get > > the correct one or not. Let's perhaps add unit tests to ensure that we have > > the behaviour that we're expecting? > > Qian Xu wrote: > Thanks. It seems the approach does not work. Sorry, we still have to > stick with `getReader()` and to be very carefully.
We cannot avoid abuse of `getRequest().getReader()`. But I think we should guard `JsonBean.restore()`. In case of unexpected result, it should throw an exception (i.e. `TextException` or `DecodeException`) instead of NPE. Any ideas? - Qian ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/28434/#review62997 ----------------------------------------------------------- On Nov. 27, 2014, 5:01 p.m., Qian Xu wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/28434/ > ----------------------------------------------------------- > > (Updated Nov. 27, 2014, 5:01 p.m.) > > > Review request for Sqoop. > > > Bugs: SQOOP-1795 > https://issues.apache.org/jira/browse/SQOOP-1795 > > > Repository: sqoop-sqoop2 > > > Description > ------- > > Sqoop client posts parameters as JSON to server. As it is not query string > based pattern, HttpServletRequest is not able to return the JSON using > `getParameterValue(...)`. The current solution is to call `getReader()` to > get raw post data. There is a danger, if the method is NOT called at the > first place. You do not know, whether the reading position is at the > beginning. You might get unexpected result without notice. > > Expectedly: > 1. For query string based pattern, caller should always use > `getParameterValue(...)`. > 2. For raw post data usage, the post data is parsed as the first parameter's > key. > > The patch proposes to add `RequestContext.getFirstParameterName()`. so that > we can keep fingers away from `getReader()`. > > > Diffs > ----- > > server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java > 75a069a > server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java > d2d080b > server/src/main/java/org/apache/sqoop/server/RequestContext.java d0963f5 > > Diff: https://reviews.apache.org/r/28434/diff/ > > > Testing > ------- > > All passed. (Nits: adding unit tests) > > > Thanks, > > Qian Xu > >
