private Pattern[] includeRootPatternFirst(final Pattern... patterns) { return validateAndMergePatternInput(new Pattern(name), patterns); } }
/** * Add or override a named attribute.<br/> * <br/> * value will be converted to String using String.valueOf(value); * * @param name * The attribute name * @param value * The given value * @return This Node * @see #attribute(String, String) */ public Pattern attribute(final String name, final Object value) { return attribute(name, String.valueOf(value)); }
/** * {@inheritDoc} * * @see org.jboss.shrinkwrap.descriptor.spi.node.Query#execute(org.jboss.shrinkwrap.descriptor.spi.node.Node, * org.jboss.shrinkwrap.descriptor.spi.node.Pattern[]) */ @Override public Node execute(final Node node, final Pattern... patterns) { // Precondition checks QueryUtil.validateNodeAndPatterns(node, patterns); Node returnValue = node; for (final Pattern pattern : patterns) { returnValue = new Node(pattern.getName(), returnValue).text(pattern.getText()); for (Map.Entry<String, String> entry : pattern.getAttributes().entrySet()) { returnValue.attribute(entry.getKey(), entry.getValue()); } } return returnValue; } }
String[] attributes = attribute == null ? new String[0] : attribute.split(ATTR_SEPERATOR); Pattern pattern = new Pattern(name); pattern.text(text); for (String attr : attributes) { String[] nameValue = attr.split(ATTR_VALUE_SEPERATOR); + " in expression: " + queryExpression); pattern.attribute(nameValue[0], nameValue[1]);
protected List<Node> findMatch(Node start, List<Pattern> patterns) { // Get the next pattern in sequence final Pattern pattern = patterns.get(0); if (!pattern.matches(start)) { return Collections.emptyList(); } // Hold the matched Nodes final List<Node> matchedNodes = new ArrayList<Node>(); if (patterns.size() == 1) { matchedNodes.add(start); return matchedNodes; } for (final Node child : start.getChildren()) { // Only use patterns that haven't already matched final List<Pattern> remainingPatterns = patterns.subList(1, patterns.size()); // Recursion point matchedNodes.addAll(findMatch(child, remainingPatterns)); } return matchedNodes; }
/** * {@inheritDoc} * * @see org.jboss.shrinkwrap.descriptor.spi.node.Query#execute(org.jboss.shrinkwrap.descriptor.spi.node.Node, * org.jboss.shrinkwrap.descriptor.spi.node.Pattern[]) */ @Override public Node execute(final Node node, final Pattern... patterns) { // Precondition checks QueryUtil.validateNodeAndPatterns(node, patterns); Node returnValue = node; for (final Pattern pattern : patterns) { returnValue = new Node(pattern.getName(), returnValue).text(pattern.getText()); for (Map.Entry<String, String> entry : pattern.getAttributes().entrySet()) { returnValue.attribute(entry.getKey(), entry.getValue()); } } return returnValue; } }
String[] attributes = attribute == null ? new String[0] : attribute.split(ATTR_SEPERATOR); Pattern pattern = new Pattern(name); pattern.text(text); for (String attr : attributes) { String[] nameValue = attr.split(ATTR_VALUE_SEPERATOR); + " in expression: " + queryExpression); pattern.attribute(nameValue[0], nameValue[1]);
protected List<Node> findMatch(Node start, List<Pattern> patterns) { // Get the next pattern in sequence final Pattern pattern = patterns.get(0); if (!pattern.matches(start)) { return Collections.emptyList(); } // Hold the matched Nodes final List<Node> matchedNodes = new ArrayList<Node>(); if (patterns.size() == 1) { matchedNodes.add(start); return matchedNodes; } for (final Node child : start.getChildren()) { // Only use patterns that haven't already matched final List<Pattern> remainingPatterns = patterns.subList(1, patterns.size()); // Recursion point matchedNodes.addAll(findMatch(child, remainingPatterns)); } return matchedNodes; }
private List<Node> findMatch(final Node start, final List<Pattern> patternSequence, final List<Pattern> entirePatternSequence) { // Hold the matched Nodes final List<Node> matchedNodes = new ArrayList<Node>(); // Get the next pattern in sequence final Pattern pattern = patternSequence.get(0); // See if we've got a match if (pattern.matches(start)) { // If no more patterns to check, we're at the end of the line; just add this Node if (patternSequence.size() == 1) { matchedNodes.add(start); } else { for (final Node child : start.getChildren()) { // Only use patterns that haven't already matched final List<Pattern> remainingPatterns = patternSequence.subList(1, patternSequence.size()); // Recursion point matchedNodes.addAll(findMatch(child, remainingPatterns, entirePatternSequence)); } } } // Apply whole pattern sequence starting from the subtrees // created by node's children for (final Node child : start.getChildren()) { matchedNodes.addAll(findMatch(child, entirePatternSequence, entirePatternSequence)); } return matchedNodes; }
private Pattern[] includeRootPatternFirst(final Pattern... patterns) { return validateAndMergePatternInput(new Pattern(name), patterns); } }
/** * Add or override a named attribute.<br/> * <br/> * value will be converted to String using String.valueOf(value); * * @param name * The attribute name * @param value * The given value * @return This Node * @see #attribute(String, String) */ public Pattern attribute(final String name, final Object value) { return attribute(name, String.valueOf(value)); }
private List<Node> findMatch(final Node start, final List<Pattern> patternSequence, final List<Pattern> entirePatternSequence) { // Hold the matched Nodes final List<Node> matchedNodes = new ArrayList<Node>(); // Get the next pattern in sequence final Pattern pattern = patternSequence.get(0); // See if we've got a match if (pattern.matches(start)) { // If no more patterns to check, we're at the end of the line; just add this Node if (patternSequence.size() == 1) { matchedNodes.add(start); } else { for (final Node child : start.getChildren()) { // Only use patterns that haven't already matched final List<Pattern> remainingPatterns = patternSequence.subList(1, patternSequence.size()); // Recursion point matchedNodes.addAll(findMatch(child, remainingPatterns, entirePatternSequence)); } } } // Apply whole pattern sequence starting from the subtrees // created by node's children for (final Node child : start.getChildren()) { matchedNodes.addAll(findMatch(child, entirePatternSequence, entirePatternSequence)); } return matchedNodes; }