use of org.apache.commons.jexl2.parser.ASTStringLiteral in project datawave by NationalSecurityAgency.
the class ValidPatternVisitor method visit.
/**
* Visit an ASTFunctionNode to catch cases like #INCLUDE or #EXCLUDE that accept a regex as an argument
*
* @param node
* - an ASTFunctionNode
* @param data
* - the data
* @return
*/
@Override
public Object visit(ASTFunctionNode node, Object data) {
// Should pull back an EvaluationPhaseFilterFunctionsDescriptor
JexlArgumentDescriptor descriptor = JexlFunctionArgumentDescriptorFactory.F.getArgumentDescriptor(node);
if (descriptor == null) {
throw new IllegalStateException("Could not get descriptor for ASTFunctionNode");
}
if (descriptor.regexArguments()) {
// Extract the args for this function
FunctionJexlNodeVisitor functionVisitor = new FunctionJexlNodeVisitor();
functionVisitor.visit(node, null);
List<JexlNode> args = functionVisitor.args();
for (JexlNode arg : args) {
// Only take the literals
if (arg instanceof ASTStringLiteral) {
parseAndPutPattern(arg);
}
}
}
// Do not descend to children, the ValidPatternVisitor views a function node as a leaf node.
return data;
}
use of org.apache.commons.jexl2.parser.ASTStringLiteral in project datawave by NationalSecurityAgency.
the class DatawaveInterpreterTest method invocationFails_alwaysThrowsException.
@Test
public void invocationFails_alwaysThrowsException() {
JexlEngine engine = mock(JexlEngine.class);
JexlContext context = mock(JexlContext.class);
DatawaveInterpreter interpreter = new DatawaveInterpreter(engine, context, false, false);
JexlException exception = new JexlException(new ASTStringLiteral(1), "Function failure");
// Make mocks available.
EasyMock.replay(engine, context);
// Capture the expected exception.
Exception thrown = null;
try {
interpreter.invocationFailed(exception);
} catch (Exception e) {
thrown = e;
}
// Verify that an exception is thrown even when strict == false.
Assert.assertEquals(thrown, exception);
}
use of org.apache.commons.jexl2.parser.ASTStringLiteral in project datawave by NationalSecurityAgency.
the class AncestorUidIntersectorTest method setup.
@Before
public void setup() {
intersector = new AncestorUidIntersector();
uids1 = new TreeSet<>();
uids2 = new TreeSet<>();
node1 = new ASTEQNode(1);
JexlNode reference1 = new ASTReference(2);
node1.jjtAddChild(reference1, 0);
JexlNode name = new ASTIdentifier(3);
name.image = "fieldName1";
reference1.jjtAddChild(name, 0);
JexlNode reference2 = new ASTReference(4);
node1.jjtAddChild(reference2, 1);
JexlNode value = new ASTStringLiteral(5);
value.image = "fieldValue1";
reference2.jjtAddChild(value, 0);
node2 = new ASTEQNode(6);
reference1 = new ASTReference(7);
node2.jjtAddChild(reference1, 0);
name = new ASTIdentifier(8);
name.image = "fieldName2";
reference1.jjtAddChild(name, 0);
reference2 = new ASTReference(9);
node2.jjtAddChild(reference2, 1);
value = new ASTStringLiteral(10);
value.image = "fieldValue2";
reference2.jjtAddChild(value, 0);
}
use of org.apache.commons.jexl2.parser.ASTStringLiteral in project datawave by NationalSecurityAgency.
the class JexlASTHelper method normalizeLiteral.
public static ASTReference normalizeLiteral(JexlNode literal, Type<?> normalizer) throws NormalizationException {
String normalizedImg = normalizer.normalize(literal.image);
ASTStringLiteral normalizedLiteral = new ASTStringLiteral(ParserTreeConstants.JJTSTRINGLITERAL);
normalizedLiteral.image = normalizedImg;
return JexlNodes.makeRef(normalizedLiteral);
}
use of org.apache.commons.jexl2.parser.ASTStringLiteral in project datawave by NationalSecurityAgency.
the class JexlNodeFactory method shallowCopy.
/**
* A shallow copy of the given JexlNode, creates a new node of the same type with the same parent and image. Children are not copied
*
* @param original
* @return
*/
public static JexlNode shallowCopy(JexlNode original) {
if (null == original) {
throw new IllegalArgumentException();
}
JexlNode copy;
Class<?> clz = original.getClass();
if (ASTAndNode.class.isAssignableFrom(clz)) {
copy = new ASTAndNode(ParserTreeConstants.JJTANDNODE);
} else if (ASTBitwiseAndNode.class.isAssignableFrom(clz)) {
copy = new ASTBitwiseAndNode(ParserTreeConstants.JJTBITWISEANDNODE);
} else if (ASTBitwiseComplNode.class.isAssignableFrom(clz)) {
copy = new ASTBitwiseComplNode(ParserTreeConstants.JJTBITWISECOMPLNODE);
} else if (ASTBitwiseOrNode.class.isAssignableFrom(clz)) {
copy = new ASTBitwiseOrNode(ParserTreeConstants.JJTBITWISEORNODE);
} else if (ASTBitwiseXorNode.class.isAssignableFrom(clz)) {
copy = new ASTBitwiseXorNode(ParserTreeConstants.JJTBITWISEXORNODE);
} else if (ASTEmptyFunction.class.isAssignableFrom(clz)) {
copy = new ASTEmptyFunction(ParserTreeConstants.JJTEMPTYFUNCTION);
} else if (ASTEQNode.class.isAssignableFrom(clz)) {
copy = new ASTEQNode(ParserTreeConstants.JJTEQNODE);
} else if (ASTERNode.class.isAssignableFrom(clz)) {
copy = new ASTERNode(ParserTreeConstants.JJTERNODE);
} else if (ASTFalseNode.class.isAssignableFrom(clz)) {
copy = new ASTFalseNode(ParserTreeConstants.JJTFALSENODE);
} else if (ASTGENode.class.isAssignableFrom(clz)) {
copy = new ASTGENode(ParserTreeConstants.JJTGENODE);
} else if (ASTGTNode.class.isAssignableFrom(clz)) {
copy = new ASTGTNode(ParserTreeConstants.JJTGTNODE);
} else if (ASTIdentifier.class.isAssignableFrom(clz)) {
copy = new ASTIdentifier(ParserTreeConstants.JJTIDENTIFIER);
} else if (ASTLENode.class.isAssignableFrom(clz)) {
copy = new ASTLENode(ParserTreeConstants.JJTLENODE);
} else if (ASTLTNode.class.isAssignableFrom(clz)) {
copy = new ASTLTNode(ParserTreeConstants.JJTLTNODE);
} else if (ASTNENode.class.isAssignableFrom(clz)) {
copy = new ASTNENode(ParserTreeConstants.JJTNENODE);
} else if (ASTNRNode.class.isAssignableFrom(clz)) {
copy = new ASTNRNode(ParserTreeConstants.JJTNRNODE);
} else if (ASTNotNode.class.isAssignableFrom(clz)) {
copy = new ASTNotNode(ParserTreeConstants.JJTNOTNODE);
} else if (ASTNullLiteral.class.isAssignableFrom(clz)) {
copy = new ASTNullLiteral(ParserTreeConstants.JJTNULLLITERAL);
} else if (ASTNumberLiteral.class.isAssignableFrom(clz)) {
copy = new ASTNumberLiteral(ParserTreeConstants.JJTNUMBERLITERAL);
JexlNodes.setLiteral((ASTNumberLiteral) copy, ((ASTNumberLiteral) original).getLiteral());
} else if (ASTOrNode.class.isAssignableFrom(clz)) {
copy = new ASTOrNode(ParserTreeConstants.JJTORNODE);
} else if (ASTStringLiteral.class.isAssignableFrom(clz)) {
copy = new ASTStringLiteral(ParserTreeConstants.JJTSTRINGLITERAL);
JexlNodes.setLiteral((ASTStringLiteral) copy, ((ASTStringLiteral) original).getLiteral());
} else if (ASTTrueNode.class.isAssignableFrom(clz)) {
copy = new ASTTrueNode(ParserTreeConstants.JJTTRUENODE);
} else if (ASTReferenceExpression.class.isAssignableFrom(clz)) {
copy = new ASTReferenceExpression(ParserTreeConstants.JJTREFERENCEEXPRESSION);
} else if (ASTReference.class.isAssignableFrom(clz)) {
copy = new ASTReference(ParserTreeConstants.JJTREFERENCE);
} else if (ASTAdditiveNode.class.isAssignableFrom(clz)) {
copy = new ASTAdditiveNode(ParserTreeConstants.JJTADDITIVENODE);
} else if (ASTMethodNode.class.isAssignableFrom(clz)) {
copy = new ASTMethodNode(ParserTreeConstants.JJTMETHODNODE);
} else if (ASTFunctionNode.class.isAssignableFrom(clz)) {
copy = new ASTFunctionNode(ParserTreeConstants.JJTFUNCTIONNODE);
} else if (ASTMulNode.class.isAssignableFrom(clz)) {
copy = new ASTMulNode(ParserTreeConstants.JJTMULNODE);
} else if (ASTAssignment.class.isAssignableFrom(clz)) {
copy = new ASTAssignment(ParserTreeConstants.JJTASSIGNMENT);
} else {
throw new UnsupportedOperationException();
}
copy.jjtSetParent(original.jjtGetParent());
copy.image = original.image;
return copy;
}
Aggregations