private void processSubInclude(Query query, CanInclude parentInclude, JsonNode includeNode) throws QueryException { if (includeNode instanceof ObjectNode) { ObjectNode innerInclude = (ObjectNode)includeNode; parentInclude.addInclude(parseInclude(query, innerInclude, null, parentInclude)); } else if (includeNode.isTextual()) { String includeName = includeNode.asText(); if (includeName.contains(":")) { parentInclude.addIncludeReference(getDefineFromFile(includeName, true), includeName); } else { Include otherInclude = query.getDefine(includeName); if (otherInclude == null) { throw new QueryException("Cannot find define \"" + includeName + "\""); } parentInclude.addIncludeReference(otherInclude, includeName); } } else { throw new QueryException("\"include\" must be of type object or string"); } }