/** * Parse the given property name returning a Property instance for the property. * * @param propertyName is the property name to parse * @param isRootedDynamic is true to indicate that the property is already rooted in a dynamic * property and therefore all child properties should be dynamic properties as well * @return Property instance for property */ public static Property parse(String propertyName, boolean isRootedDynamic) { Tree tree = parse(propertyName); if ((ExecutionPathDebugLog.isDebugEnabled) && (log.isDebugEnabled())) { ASTUtil.dumpAST(tree); } if (tree.getChildCount() == 1) { return makeProperty(tree.getChild(0), isRootedDynamic); } List<Property> properties = new LinkedList<Property>(); boolean isRootedInDynamic = isRootedDynamic; for (int i = 0; i < tree.getChildCount(); i++) { Tree child = tree.getChild(i); Property property = makeProperty(child, isRootedInDynamic); if (property instanceof DynamicSimpleProperty) { isRootedInDynamic = true; } properties.add(property); } return new NestedProperty(properties); }
public void testGetPropertyNameEscaped() throws Exception { final String PROPERTY = "a\\.b\\.c"; Pair<Tree, CommonTokenStream> parsed = SupportParserHelper.parseEventProperty(PROPERTY); Tree propertyNameExprNode = parsed.getFirst(); ASTUtil.dumpAST(propertyNameExprNode); String propertyName = ASTFilterSpecHelper.getPropertyName(propertyNameExprNode, 0); assertEquals(PROPERTY, propertyName); }
public void testGetPropertyName() throws Exception { final String PROPERTY = "a('aa').b[1].c"; // Should parse and result in the exact same property name Pair<Tree, CommonTokenStream> parsed = SupportParserHelper.parseEventProperty(PROPERTY); Tree propertyNameExprNode = parsed.getFirst(); ASTUtil.dumpAST(propertyNameExprNode); String propertyName = ASTFilterSpecHelper.getPropertyName(propertyNameExprNode, 0); assertEquals(PROPERTY, propertyName); // Try AST with tokens separated, same property name parsed = SupportParserHelper.parseEventProperty("a( 'aa' ). b [ 1 ] . c"); propertyNameExprNode = parsed.getFirst(); propertyName = ASTFilterSpecHelper.getPropertyName(propertyNameExprNode, 0); assertEquals(PROPERTY, propertyName); }