@Test(dataProvider = "getParameterTestValueProvider") public void testGetParameterValue(Map<String, JsonNode> parameterMap, String parameter, String jsonPtrExpr, JsonNode expectedResult) { ReferenceReplacementResult referenceReplacementResult = new ReferenceReplacementResult(); Assert.assertEquals(jsonReferenceReplacer.getParameterValue(parameterMap, parameter, jsonPtrExpr, referenceReplacementResult), expectedResult); }
protected JsonNode getParameterValue(Map<String, JsonNode> parameterMap, String parameter, String jsonPtrExpr, ReferenceReplacementResult report) { if(!parameterMap.containsKey(parameter)) { report.addMissingReference(generateReference(parameter, jsonPtrExpr)); return null; } JsonNode parameterValue = parameterMap.get(parameter); if(StringUtils.isBlank(jsonPtrExpr) || StringUtils.equals(jsonPtrExpr, JACKSON_PATH_SEPARATOR)) { return parameterValue; } String[] splitPtr = StringUtils.split(jsonPtrExpr, CONTEXT_FALLBACK_VALUE_SEPARATOR, 2); String jsonPointer = splitPtr[0]; JsonNode atNode = parameterValue.at(StringUtils.prependIfMissing(jsonPointer, JACKSON_PATH_SEPARATOR)); if(atNode.isMissingNode()) { if(splitPtr.length == 1 && jsonPtrExpr.endsWith(CONTEXT_FALLBACK_VALUE_SEPARATOR)) { return NullNode.getInstance(); } else if(splitPtr.length > 1) { return new TextNode(splitPtr[1]); } else { report.addInvalidReference(generateReference(parameter, jsonPointer)); return null; } } return atNode; }
JsonReferenceReplacer { protected JsonNode getParameterValue(Map<String, JsonNode> parameterMap, String parameter, String jsonPtrExpr, ReferenceReplacementResult report) { if(!parameterMap.containsKey(parameter)) { report.addMissingReference(generateReference(parameter, jsonPtrExpr)); return null; } JsonNode parameterValue = parameterMap.get(parameter); if(StringUtils.isBlank(jsonPtrExpr) || StringUtils.equals(jsonPtrExpr, JACKSON_PATH_SEPARATOR)) { return parameterValue; } String[] splitPtr = StringUtils.split(jsonPtrExpr, CONTEXT_FALLBACK_VALUE_SEPARATOR, 2); String jsonPointer = splitPtr[0]; JsonNode atNode = parameterValue.at(StringUtils.prependIfMissing(jsonPointer, JACKSON_PATH_SEPARATOR)); if(atNode.isMissingNode()) { if(splitPtr.length == 1 && jsonPtrExpr.endsWith(CONTEXT_FALLBACK_VALUE_SEPARATOR)) { return NullNode.getInstance(); } else if(splitPtr.length > 1) { return new TextNode(splitPtr[1]); } else { report.addInvalidReference(generateReference(parameter, jsonPointer)); return null; } } return atNode; } }
JsonReferenceReplacer { protected JsonNode getParameterValue(Map<String, JsonNode> parameterMap, String parameter, String jsonPtrExpr, ReferenceReplacementResult report) { if(!parameterMap.containsKey(parameter)) { report.addMissingReference(generateReference(parameter, jsonPtrExpr)); return null; } JsonNode parameterValue = parameterMap.get(parameter); if(StringUtils.isBlank(jsonPtrExpr) || StringUtils.equals(jsonPtrExpr, JACKSON_PATH_SEPARATOR)) { return parameterValue; } String[] splitPtr = StringUtils.split(jsonPtrExpr, CONTEXT_FALLBACK_VALUE_SEPARATOR, 2); String jsonPointer = splitPtr[0]; JsonNode atNode = parameterValue.at(StringUtils.prependIfMissing(jsonPointer, JACKSON_PATH_SEPARATOR)); if(atNode.isMissingNode()) { if(splitPtr.length == 1 && jsonPtrExpr.endsWith(CONTEXT_FALLBACK_VALUE_SEPARATOR)) { return NullNode.getInstance(); } else if(splitPtr.length > 1) { return new TextNode(splitPtr[1]); } else { report.addInvalidReference(generateReference(parameter, jsonPointer)); return null; } } return atNode; } JsonReferenceReplacer();  JsonReferenceReplacer(String referencePrefix, String referenceSeparator, String referenceSuffix, String fallbackValueSeparator); }
JsonReferenceReplacer { protected JsonNode getParameterValue(Map<String, JsonNode> parameterMap, String parameter, String jsonPtrExpr, ReferenceReplacementResult report) { if(!parameterMap.containsKey(parameter)) { report.addMissingReference(generateReference(parameter, jsonPtrExpr)); return null; } JsonNode parameterValue = parameterMap.get(parameter); if(StringUtils.isBlank(jsonPtrExpr) || StringUtils.equals(jsonPtrExpr, JACKSON_PATH_SEPARATOR)) { return parameterValue; } String[] splitPtr = StringUtils.split(jsonPtrExpr, CONTEXT_FALLBACK_VALUE_SEPARATOR, 2); String jsonPointer = splitPtr[0]; JsonNode atNode = parameterValue.at(StringUtils.prependIfMissing(jsonPointer, JACKSON_PATH_SEPARATOR)); if(atNode.isMissingNode()) { if(splitPtr.length == 1 && jsonPtrExpr.endsWith(CONTEXT_FALLBACK_VALUE_SEPARATOR)) { return NullNode.getInstance(); } else if(splitPtr.length > 1) { return new TextNode(splitPtr[1]); } else { report.addInvalidReference(generateReference(parameter, jsonPointer)); return null; } } return atNode; } JsonReferenceReplacer();  JsonReferenceReplacer(String referencePrefix, String referenceSeparator, String referenceSuffix, String fallbackValueSeparator); String getPrefix(); String getSuffix(); String getSeparator(); String generateReference(String referenceName, String jsonPtrExpr); JsonReferenceComponents extractComponents(String input); ReferenceReplacementResult replaceReferences(JsonNode rootNode, Map<String, JsonNode> referenceMap); ArrayNodeReplacer getArrayNodeReplacer(); void setArrayNodeReplacer(ArrayNodeReplacer arrayNodeReplacer); ObjectNodeReplacer getObjectNodeReplacer(); void setObjectNodeReplacer(ObjectNodeReplacer objectNodeReplacer); String getReferenceName(String reference); }
JsonReferenceReplacer { protected JsonNode getParameterValue(Map<String, JsonNode> parameterMap, String parameter, String jsonPtrExpr, ReferenceReplacementResult report) { if(!parameterMap.containsKey(parameter)) { report.addMissingReference(generateReference(parameter, jsonPtrExpr)); return null; } JsonNode parameterValue = parameterMap.get(parameter); if(StringUtils.isBlank(jsonPtrExpr) || StringUtils.equals(jsonPtrExpr, JACKSON_PATH_SEPARATOR)) { return parameterValue; } String[] splitPtr = StringUtils.split(jsonPtrExpr, CONTEXT_FALLBACK_VALUE_SEPARATOR, 2); String jsonPointer = splitPtr[0]; JsonNode atNode = parameterValue.at(StringUtils.prependIfMissing(jsonPointer, JACKSON_PATH_SEPARATOR)); if(atNode.isMissingNode()) { if(splitPtr.length == 1 && jsonPtrExpr.endsWith(CONTEXT_FALLBACK_VALUE_SEPARATOR)) { return NullNode.getInstance(); } else if(splitPtr.length > 1) { return new TextNode(splitPtr[1]); } else { report.addInvalidReference(generateReference(parameter, jsonPointer)); return null; } } return atNode; } JsonReferenceReplacer();  JsonReferenceReplacer(String referencePrefix, String referenceSeparator, String referenceSuffix, String fallbackValueSeparator); String getPrefix(); String getSuffix(); String getSeparator(); String generateReference(String referenceName, String jsonPtrExpr); JsonReferenceComponents extractComponents(String input); ReferenceReplacementResult replaceReferences(JsonNode rootNode, Map<String, JsonNode> referenceMap); ArrayNodeReplacer getArrayNodeReplacer(); void setArrayNodeReplacer(ArrayNodeReplacer arrayNodeReplacer); ObjectNodeReplacer getObjectNodeReplacer(); void setObjectNodeReplacer(ObjectNodeReplacer objectNodeReplacer); String getReferenceName(String reference); static final String DEFAULT_REFERENCE_PREFIX; static final String DEFAULT_REFERENCE_SUFFIX; static final String DEFAULT_REFERENCE_SEPARATOR; static final String DEFAULT_FALLBACK_VALUE_SEPARATOR; static final String JACKSON_PATH_SEPARATOR; static final String REFERENCE_GROUP_NAME; static final String PATH_GROUP_NAME; }