private void visitMappingNode(MappingNode mappingNode, TupleType tupleType) { if (checkLoop(mappingNode)) { nodeHandler.onCustomTagError(LOOP_TAG, mappingNode, "Circular reference detected"); return; } boolean keepOnVisiting = nodeHandler.onMappingNodeStart(mappingNode, tupleType); if (tupleType == VALUE && keepOnVisiting) { doVisitMappingNode(mappingNode); } nodeHandler.onMappingNodeEnd(mappingNode, tupleType); if (mappingNode.getStartMark() != null) { loopDetector.pop(); } }
private void visitScalar(ScalarNode node, TupleType tupleType) { nodeHandler.onScalar(node, tupleType); }
private void visitSequence(SequenceNode node, TupleType tupleType) { boolean keepVisitingElements = nodeHandler.onSequenceStart(node, tupleType); if (tupleType == VALUE && keepVisitingElements) { List<Node> value = node.getValue(); for (int i = 0; i < value.size(); i++) { Node originalNode = value.get(i); TagResolver currentTagResolver = getTagResolver(originalNode.getTag()); Node resolvedNode = resolveTag(originalNode.getTag(), currentTagResolver, originalNode); if (originalNode != resolvedNode) { node.getValue().remove(i); node.getValue().add(i, resolvedNode); } nodeHandler.onSequenceElementStart(resolvedNode); visitResolvedNode(originalNode, resolvedNode, currentTagResolver); nodeHandler.onSequenceElementEnd(resolvedNode); } } nodeHandler.onSequenceEnd(node, tupleType); }
public void visitDocument(MappingNode node) { boolean keepOnVisitingDocument = nodeHandler.onDocumentStart(node); if (node != null && keepOnVisitingDocument) { if (contextPath.size() == 0) { contextPath.pushRoot(""); } doVisitMappingNode(node); } nodeHandler.onDocumentEnd(node); }
private void visitResolvedNode(Node originalValueNode, Node resolvedNode, TagResolver tagResolver) { Tag tag = originalValueNode.getTag(); boolean tagResolved = tagResolver != null; if (tagResolved) { tagResolver.beforeProcessingResolvedNode(tag, originalValueNode, resolvedNode); nodeHandler.onCustomTagStart(tag, originalValueNode, resolvedNode); } visit(resolvedNode, VALUE); if (tagResolved) { nodeHandler.onCustomTagEnd(tag, originalValueNode, resolvedNode); tagResolver.afterProcessingResolvedNode(tag, originalValueNode, resolvedNode); } }
@Override public Node resolve(Node node, ResourceLoader resourceLoader, NodeHandler nodeHandler) { String className = ((ScalarNode) node).getValue(); try { Thread.currentThread().getContextClassLoader().loadClass(className); } //error thrown when class name differ in case catch (NoClassDefFoundError e) { nodeHandler.onCustomTagError(node.getTag(), node, "Class not found " + className); } catch (ClassNotFoundException e) { nodeHandler.onCustomTagError(node.getTag(), node, "Class not found " + className); } return node; }
private void visitSequence(SequenceNode node, TupleType tupleType) { boolean keepVisitingElements = nodeHandler.onSequenceStart(node, tupleType); if (tupleType == VALUE && keepVisitingElements) { List<Node> value = node.getValue(); for (int i = 0; i < value.size(); i++) { Node originalNode = value.get(i); TagResolver currentTagResolver = getTagResolver(originalNode.getTag()); Node resolvedNode = resolveTag(originalNode.getTag(), currentTagResolver, originalNode); if (originalNode != resolvedNode) { node.getValue().remove(i); node.getValue().add(i, resolvedNode); } nodeHandler.onSequenceElementStart(resolvedNode); visitResolvedNode(originalNode, resolvedNode, currentTagResolver); nodeHandler.onSequenceElementEnd(resolvedNode); } } nodeHandler.onSequenceEnd(node, tupleType); }
public void visitDocument(MappingNode node) { boolean keepOnVisitingDocument = nodeHandler.onDocumentStart(node); if (node != null && keepOnVisitingDocument) { if (contextPath.size() == 0) { contextPath.pushRoot(""); } doVisitMappingNode(node); } nodeHandler.onDocumentEnd(node); }
private void visitResolvedNode(Node originalValueNode, Node resolvedNode, TagResolver tagResolver) { Tag tag = originalValueNode.getTag(); boolean tagResolved = tagResolver != null; if (tagResolved) { tagResolver.beforeProcessingResolvedNode(tag, originalValueNode, resolvedNode); nodeHandler.onCustomTagStart(tag, originalValueNode, resolvedNode); } visit(resolvedNode, VALUE); if (tagResolved) { nodeHandler.onCustomTagEnd(tag, originalValueNode, resolvedNode); tagResolver.afterProcessingResolvedNode(tag, originalValueNode, resolvedNode); } }
@Override public Node resolve(Node node, ResourceLoader resourceLoader, NodeHandler nodeHandler) { String className = ((ScalarNode) node).getValue(); try { Thread.currentThread().getContextClassLoader().loadClass(className); } //error thrown when class name differ in case catch (NoClassDefFoundError e) { nodeHandler.onCustomTagError(node.getTag(), node, "Class not found " + className); } catch (ClassNotFoundException e) { nodeHandler.onCustomTagError(node.getTag(), node, "Class not found " + className); } return node; }
private void visitMappingNode(MappingNode mappingNode, TupleType tupleType) { if (checkLoop(mappingNode)) { nodeHandler.onCustomTagError(LOOP_TAG, mappingNode, "Circular reference detected"); return; } boolean keepOnVisiting = nodeHandler.onMappingNodeStart(mappingNode, tupleType); if (tupleType == VALUE && keepOnVisiting) { doVisitMappingNode(mappingNode); } nodeHandler.onMappingNodeEnd(mappingNode, tupleType); if (mappingNode.getStartMark() != null) { loopDetector.pop(); } }
private Node resolveTag(Tag tag, TagResolver tagResolver, Node valueNode) { if (tagResolver != null) { valueNode = tagResolver.resolve(valueNode, resourceLoader, nodeHandler); } else if (!isStandardTag(tag)) { nodeHandler.onCustomTagError(tag, valueNode, "Unknown tag " + tag); } return valueNode; }
private void visitScalar(ScalarNode node, TupleType tupleType) { nodeHandler.onScalar(node, tupleType); }
private Node resolveTag(Tag tag, TagResolver tagResolver, Node valueNode) { if (tagResolver != null) { valueNode = tagResolver.resolve(valueNode, resourceLoader, nodeHandler); } else if (!isStandardTag(tag)) { nodeHandler.onCustomTagError(tag, valueNode, "Unknown tag " + tag); } return valueNode; }
if (node.getNodeId() != scalar) nodeHandler.onCustomTagError(INCLUDE_TAG, node, "Include cannot be non-scalar"); return mockInclude(node); nodeHandler.onCustomTagError(INCLUDE_TAG, node, "Include cannot be resolved " + resourceName); return mockInclude(node); nodeHandler.onCustomTagError(INCLUDE_TAG, node, "Include file is empty " + resourceName); return mockInclude(node);
if (node.getNodeId() != scalar) nodeHandler.onCustomTagError(INCLUDE_TAG, node, "Include cannot be non-scalar"); return mockInclude(node); nodeHandler.onCustomTagError(INCLUDE_TAG, node, "Failed to resolve the include using any resource loader " + resourceName); nodeHandler.onCustomTagError(INCLUDE_TAG, node, "Include file is empty " + resourceName); return mockInclude(node);