@Override public <T> Query<T> createQuery(String queryString, Class<T> type) throws QueryException { if (queryString == null || queryString.trim().length() == 0) { return null; } try { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Processing query: {}", queryString); } // FiqlParser is a parser generated by javacc Expression expression = FiqlParser.parse(queryString); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Query expression: {}", expression); } // create Query and return; return new QueryImpl<T>(type, expression); } catch (Exception ex) { if (LOGGER.isDebugEnabled()) { LOGGER.error("Query processing failed = {}", queryString, ex); } throw new QueryException("Unable to parse query.", ex); } } }