Function newFunction(List<Expression> parameters, Literal fallback) throws Exception { // cache lookup if (FunctionExpression.class.isAssignableFrom(clazz)) { FunctionExpression function = (FunctionExpression) clazz.newInstance(); if (parameters != null) { function.setParameters(parameters); } if (fallback != null) { function.setFallbackValue(fallback); } return function; } if (FunctionImpl.class.isAssignableFrom(clazz)) { FunctionImpl function = (FunctionImpl) clazz.newInstance(); if (parameters != null) { function.setParameters(parameters); } if (fallback != null) { function.setFallbackValue(fallback); } return function; } // Function function = (Function) functionClass.newInstance(); Constructor<Function> constructor = clazz.getConstructor(new Class[] {List.class, Literal.class}); return constructor.newInstance(parameters, fallback); } }
f.setName("lower"); f.setParameters(Arrays.asList(left)); f.accept(this, Arrays.asList(leftContext)); f.setParameters(Arrays.asList(right)); f.accept(this, Arrays.asList(rightContext));
public void testToString() throws Exception { FunctionImpl func = new FunctionImpl(); Expression param = new LiteralExpressionImpl(42); func.setName("TestFunction"); func.setParameters(Collections.singletonList(param)); String result = func.toString(); assertEquals("TestFunction([42])", result); }
public void testTooFewArguments() throws Exception { StringInFunction f = new StringInFunction(); List params = Arrays.asList(ff.literal("foo"), ff.literal(true)); ((FunctionImpl) f).setParameters(params); try { f.evaluate(null); fail(); } catch (IllegalArgumentException e) { } } }
public void test() throws Exception { StringInFunction f = new StringInFunction(); List params = Arrays.asList( ff.literal("foo"), ff.literal(true), ff.literal("foo"), ff.literal("bar"), ff.literal("baz")); ((FunctionImpl) f).setParameters(params); assertEquals(Boolean.TRUE, f.evaluate(null)); params = Arrays.asList( ff.literal("foo"), ff.literal(true), ff.literal("FOO"), ff.literal("bar"), ff.literal("baz")); ((FunctionImpl) f).setParameters(params); assertEquals(Boolean.FALSE, f.evaluate(null)); }
Function newFunction(List<Expression> parameters, Literal fallback) throws Exception { // cache lookup if (FunctionExpression.class.isAssignableFrom(clazz)) { FunctionExpression function = (FunctionExpression) clazz.newInstance(); if(parameters != null) { function.setParameters(parameters); } if( fallback != null && function instanceof ClassificationFunction){ ClassificationFunction classification = (ClassificationFunction) function; classification.setFallbackValue( fallback ); } return function; } if(FunctionImpl.class.isAssignableFrom(clazz)) { FunctionImpl function = (FunctionImpl) clazz.newInstance(); if(parameters != null){ function.setParameters( (List) parameters ); } if(fallback != null) function.setFallbackValue( fallback ); return function; } //Function function = (Function) functionClass.newInstance(); Constructor<Function> constructor = clazz.getConstructor( new Class[]{ List.class, Literal.class} ); return constructor.newInstance( parameters, fallback ); } }
FunctionImpl function = (FunctionImpl) clazz.newInstance(); if(parameters != null) function.setParameters(parameters); return function;
f.setName("lower"); f.setParameters(Arrays.asList(left)); f.accept(this, Arrays.asList(leftContext)); f.setParameters(Arrays.asList(right)); f.accept(this, Arrays.asList(rightContext));