protected void doNavigate() { if (navigated) // idempotent return; init(); // parse for syntax try { this.queryString = ParameterUtil.findParameterValue("QUERY", job.getParameterList()); if (queryString == null || queryString.length() == 0) throw new IllegalArgumentException("missing required parameter: QUERY"); statement = ParserUtil.receiveQuery(queryString); } catch (JSQLParserException e) { throw new IllegalArgumentException("failed to parse SQL", e); } // run all the navigators for (SelectNavigator sn : navigatorList) { log.debug("Navigated by: " + sn.getClass().getName()); ParserUtil.parseStatement(statement, sn); if (sn instanceof SelectListExtractor) { SelectListExpressionExtractor slen = (SelectListExpressionExtractor) sn.getExpressionNavigator(); selectList = slen.getSelectList(); } } navigated = true; }