public List<ValidationResult> validate(MappingNode root, String resourceLocation) { NodeVisitor nodeVisitor = new NodeVisitor(yamlValidator, resourceLoader, tagResolvers); yamlValidator.getContextPath().pushRoot(resourceLocation); errorMessage.addAll(preValidation(root)); nodeVisitor.visitDocument(root); return errorMessage; }
public NodeVisitor(NodeHandler nodeHandler, ResourceLoader resourceLoader, TagResolver... tagResolvers) { super(); this.nodeHandler = nodeHandler; this.resourceLoader = resourceLoader; this.tagResolvers = tagResolvers; initializeContextPathAware(tagResolvers); initializeResourceLoaderAware(); SchemaCompiler.getInstance().init(contextPath, resourceLoader); }
private void visit(Node node, TupleType tupleType) { if (node.getNodeId() == NodeId.mapping) { visitMappingNode((MappingNode) node, tupleType); } else if (node.getNodeId() == NodeId.scalar) { visitScalar((ScalarNode) node, tupleType); } else if (node.getNodeId() == NodeId.sequence) { visitSequence((SequenceNode) node, tupleType); } }
TagResolver currentTagResolver = getTagResolver(tag); Node resolvedNode = resolveTag(tag, currentTagResolver, originalValueNode); if (originalValueNode != resolvedNode) visit(keyNode, KEY); visitResolvedNode(originalValueNode, resolvedNode, currentTagResolver); nodeHandler.onTupleEnd(nodeTuple);
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); }
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(); } }
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); } }
public NodeVisitor(NodeHandler nodeHandler, ResourceLoader resourceLoader, TagResolver... tagResolvers) { super(); this.nodeHandler = nodeHandler; this.resourceLoader = resourceLoader; this.tagResolvers = tagResolvers; initializeContextPathAware(tagResolvers); }
TagResolver currentTagResolver = getTagResolver(tag); Node resolvedNode = resolveTag(tag, currentTagResolver, originalValueNode); if (originalValueNode != resolvedNode) visit(keyNode, KEY); visitResolvedNode(originalValueNode, resolvedNode, currentTagResolver); nodeHandler.onTupleEnd(nodeTuple);
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); }
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(); } }
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); } }
public List<ValidationResult> validate(MappingNode root, String resourceLocation) { NodeVisitor nodeVisitor = new NodeVisitor(yamlValidator, resourceLoader, tagResolvers); yamlValidator.getContextPath().pushRoot(resourceLocation); errorMessage.addAll(preValidation(root)); nodeVisitor.visitDocument(root); return errorMessage; }
private void visit(Node node, TupleType tupleType) { if (node.getNodeId() == NodeId.mapping) { visitMappingNode((MappingNode) node, tupleType); } else if (node.getNodeId() == NodeId.scalar) { visitScalar((ScalarNode) node, tupleType); } else if (node.getNodeId() == NodeId.sequence) { visitSequence((SequenceNode) node, tupleType); } }
public T build(Reader content, String resourceLocation) { try { Yaml yamlParser = new Yaml(); NodeVisitor nodeVisitor = new NodeVisitor(this, resourceLoader, tagResolvers); rootNode = (MappingNode) yamlParser.compose(content); contextPath.pushRoot(resourceLocation); preBuildProcess(); nodeVisitor.visitDocument(rootNode); postBuildProcess(); return documentObject; } finally { IOUtils.closeQuietly(content); } }
public T build(Reader content, String resourceLocation) { if (content == null) { throw new ResourceNotFoundException(resourceLocation); } try { Yaml yamlParser = new Yaml(); NodeVisitor nodeVisitor = new NodeVisitor(this, resourceLoader, tagResolvers); rootNode = (MappingNode) yamlParser.compose(content); contextPath.pushRoot(resourceLocation); preBuildProcess(); nodeVisitor.visitDocument(rootNode); postBuildProcess(); return documentObject; } finally { IOUtils.closeQuietly(content); } }
NodeVisitor nodeVisitor = new NodeVisitor(this, new DefaultResourceLoader()); MappingNode rootNode = null; Node compose = yamlParser.compose(new StringReader(suggestRaml)); nodeVisitor.visitDocument(rootNode);
NodeVisitor nodeVisitor = new NodeVisitor(this, new DefaultResourceLoader()); MappingNode rootNode = null; Node compose = yamlParser.compose(new StringReader(suggestRaml)); nodeVisitor.visitDocument(rootNode);