> On Nov. 26, 2014, 12:52 a.m., Jarek Cecho wrote: > > server/src/main/java/org/apache/sqoop/server/RequestContext.java, lines > > 49-51 > > <https://reviews.apache.org/r/28434/diff/1/?file=775517#file775517line49> > > > > Do you think that it would make sense to make this method private, so > > that users of this class don't have the option to call the getReader() > > themselves and have to go through methods of this class (wrapper) to obtain > > all they need?
Many occurences (such as doPost, doGet) out of the class require `HttpServletRequest`, so I don't know how to make it private. A way I know is that `getRequest()` will return a wrapped `HttpServletRequest` with both `getReader()` and `getInputStream()` override. When user call one these two methods, it will print a warning log first. Any ideas? > 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? Thanks. It seems the approach does not work. Sorry, we still have to stick with `getReader()` and to be very carefully. - Qian ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/28434/#review62997 ----------------------------------------------------------- On Nov. 25, 2014, 4:34 p.m., Qian Xu wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/28434/ > ----------------------------------------------------------- > > (Updated Nov. 25, 2014, 4:34 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 > 75a069a227b04e045b76c09e721deb45a35cb9eb > server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java > d2d080bbe2c2f55feb349089b93da7f41bc13bc6 > server/src/main/java/org/apache/sqoop/server/RequestContext.java > d0963f5bcd09a5f31601f677304165d513cc7de3 > > Diff: https://reviews.apache.org/r/28434/diff/ > > > Testing > ------- > > All passed. (Nits: adding unit tests) > > > Thanks, > > Qian Xu > >
