/** * Parse the raw string properties input. */ private Response parse() { if (inputProperties == null || inputProperties.isEmpty()) { return EMPTY; } int pos = inputProperties.indexOf("+readonly"); if (pos > -1) { inputProperties = StringHelper.replaceString(inputProperties, "+readonly", ""); readOnly = true; } pos = inputProperties.indexOf("+cache"); if (pos > -1) { inputProperties = StringHelper.replaceString(inputProperties, "+cache", ""); cache = true; } pos = inputProperties.indexOf("+query"); if (pos > -1) { queryFetchBatch = parseBatchHint(pos, "+query"); } pos = inputProperties.indexOf("+lazy"); if (pos > -1) { lazyFetchBatch = parseBatchHint(pos, "+lazy"); } LinkedHashSet<String> included = parseIncluded(); String properties = (allProperties) ? "*" : outputProperties; return new Response(readOnly, cache, queryFetchBatch, lazyFetchBatch, properties, included); }