Refine search
@Override protected void addInstanceRules(RuleStore rs) { super.addInstanceRules(rs); rs.addRule(new ElementSelector("configuration/appender"), new AppenderAction<ILoggingEvent>()); }
String last = selector.peekLast(); String first = null; if(selector.size() > 1) { first = selector.get(0); List<String> copyOfPartList = selector.getCopyOfPartList(); if(copyOfPartList.size() > 2) { copyOfPartList.remove(0); ElementSelector clone = new ElementSelector(copyOfPartList); if(clone.isContainedIn(path)) { r = clone.size();
List<Action> prefixMatch(ElementPath elementPath) { int max = 0; ElementSelector longestMatchingElementSelector = null; for (ElementSelector selector : rules.keySet()) { String last = selector.peekLast(); if (isKleeneStar(last)) { int r = selector.getPrefixMatchLength(elementPath); // to qualify the match length must equal p's size omitting the '*' if ((r == selector.size() - 1) && (r > max)) { max = r; longestMatchingElementSelector = selector; } } } if (longestMatchingElementSelector != null) { return rules.get(longestMatchingElementSelector); } else { return null; } }
@Override public boolean equals(Object o) { if ((o == null) || !(o instanceof ElementSelector)) { return false; } ElementSelector r = (ElementSelector) o; if (r.size() != size()) { return false; } int len = size(); for (int i = 0; i < len; i++) { if (!equalityCheck(get(i), r.get(i))) { return false; } } // if everything matches, then the two patterns are equal return true; }
@Test public void test1() { ElementSelector p = new ElementSelector("a"); assertEquals(1, p.size()); assertEquals("a", p.peekLast()); assertEquals("a", p.get(0)); }
@Test public void test5() { ElementSelector p = new ElementSelector("//a"); assertEquals(1, p.size()); assertEquals("a", p.get(0)); }
@Before public void setUp() throws Exception { FileTestUtil.makeTestOutputDir(); HashMap<ElementSelector, Action> rulesMap = new HashMap<ElementSelector, Action>(); rulesMap.put(new ElementSelector("x"), new NOPAction()); rulesMap.put(new ElementSelector("x/include"), new IncludeAction()); rulesMap.put(new ElementSelector("x/findInclude"), new FindIncludeAction()); rulesMap.put(new ElementSelector("x/findInclude/include"), new ConditionalIncludeAction()); stackAction = new StackAction(); rulesMap.put(new ElementSelector("x/stack"), stackAction); tc = new TrivialConfigurator(rulesMap); tc.setContext(context); }
ElementSelector ruleElementSelector = new ElementSelector("/x/*"); assertEquals(0, ruleElementSelector.getPrefixMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("/x/*"); assertEquals(0, ruleElementSelector.getPrefixMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("/a/*"); assertEquals(1, ruleElementSelector.getPrefixMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("/A/*"); assertEquals(1, ruleElementSelector.getPrefixMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("/a/*"); assertEquals(1, ruleElementSelector.getPrefixMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("/a/b/*"); assertEquals(2, ruleElementSelector.getPrefixMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("/*"); assertEquals(0, ruleElementSelector.getPrefixMatchLength(p));
ElementSelector ruleElementSelector = new ElementSelector("*"); assertEquals(0, ruleElementSelector.getTailMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("*/a"); assertEquals(1, ruleElementSelector.getTailMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("*/a"); assertEquals(1, ruleElementSelector.getTailMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("*/A"); assertEquals(1, ruleElementSelector.getTailMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("*/b"); assertEquals(1, ruleElementSelector.getTailMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("*/b"); assertEquals(1, ruleElementSelector.getTailMatchLength(p)); ElementSelector ruleElementSelector = new ElementSelector("*/b/c"); assertEquals(2, ruleElementSelector.getTailMatchLength(p));
/** * Returns the number of "prefix" components that this pattern has in common * with the pattern p passed as parameter. By "prefix" components we mean the * components at the beginning of the pattern. */ public int getPrefixMatchLength(ElementPath p) { if (p == null) { return 0; } int lSize = this.partList.size(); int rSize = p.partList.size(); // no match possible for empty sets if ((lSize == 0) || (rSize == 0)) { return 0; } int minLen = (lSize <= rSize) ? lSize : rSize; int match = 0; for (int i = 0; i < minLen; i++) { String l = this.partList.get(i); String r = p.partList.get(i); if (equalityCheck(l, r)) { match++; } else { break; } } return match; }
List<Action> suffixMatch(ElementPath elementPath) { int max = 0; ElementSelector longestMatchingElementSelector = null; for (ElementSelector selector : rules.keySet()) { if (isSuffixPattern(selector)) { int r = selector.getTailMatchLength(elementPath); if (r > max) { max = r; longestMatchingElementSelector = selector; } } } if (longestMatchingElementSelector != null) { return rules.get(longestMatchingElementSelector); } else { return null; } }
List<Action> fullPathMatch(ElementPath elementPath) { for (ElementSelector selector : rules.keySet()) { if(selector.fullPathMatch(elementPath)) return rules.get(selector); } return null; }
public boolean fullPathMatch(ElementPath path) { if (path.size() != size()) { return false; } int len = size(); for (int i = 0; i < len; i++) { if (!equalityCheck(get(i), path.get(i))) { return false; } } // if everything matches, then the two patterns are equal return true; }
@Test public void testSuffix() { ElementSelector p = new ElementSelector("a/"); assertEquals(1, p.size()); assertEquals("a", p.peekLast()); assertEquals("a", p.get(0)); }
@Test public void test3() { ElementSelector p = new ElementSelector("a123/b1234/cvvsdf"); assertEquals(3, p.size()); assertEquals("a123", p.get(0)); assertEquals("b1234", p.get(1)); assertEquals("cvvsdf", p.get(2)); }
@Before public void setUp() throws Exception { FileTestUtil.makeTestOutputDir(); HashMap<ElementSelector, Action> rulesMap = new HashMap<ElementSelector, Action>(); rulesMap.put(new ElementSelector("x"), new NOPAction()); rulesMap.put(new ElementSelector("x/include"), new IncludeAction()); rulesMap.put(new ElementSelector("x/stack"), stackAction); tc = new TrivialConfigurator(rulesMap); tc.setContext(context); }
/** * Returns the number of "tail" components that this pattern has in common * with the pattern p passed as parameter. By "tail" components we mean the * components at the end of the pattern. */ public int getTailMatchLength(ElementPath p) { if (p == null) { return 0; } int lSize = this.partList.size(); int rSize = p.partList.size(); // no match possible for empty sets if ((lSize == 0) || (rSize == 0)) { return 0; } int minLen = (lSize <= rSize) ? lSize : rSize; int match = 0; // loop from the end to the front for (int i = 1; i <= minLen; i++) { String l = this.partList.get(lSize - i); String r = p.partList.get(rSize - i); if (equalityCheck(l, r)) { match++; } else { break; } } return match; }
List<Action> suffixMatch(ElementPath elementPath) { int max = 0; ElementSelector longestMatchingElementSelector = null; for (ElementSelector selector : rules.keySet()) { if (isSuffixPattern(selector)) { int r = selector.getTailMatchLength(elementPath); if (r > max) { max = r; longestMatchingElementSelector = selector; } } } if (longestMatchingElementSelector != null) { return rules.get(longestMatchingElementSelector); } else { return null; } }