private void checkParallelizable(Converter<?, ?> converter) { if (converter.isParallelizable()) { Assert.isTrue(converter instanceof Cloneable, "Parallelizable converters must implement " + Cloneable.class); Assert.isTrue(BeanUtil.findMethod(converterClass, "clone", (Class[]) null) != null, "Parallelizable converters must have a public clone() method"); } }
@Override public Object evaluate(Context context) { Expression<?>[] summands = { terms[0], terms[1] }; Assert.isTrue(summands.length > 1, "At least two summands needed"); Object result = summands[0].evaluate(context); for (int i = 1; i < summands.length; i++) result = ArithmeticEngine.defaultInstance().add(result, summands[i].evaluate(context)); return result; }
private static Expression<?> convertBeanSpec(CommonTree node) throws SyntaxError { Assert.isTrue(node.getType() == DatabeneScriptLexer.BEANSPEC, "BEANSPEC expected, found: " + node.getToken()); node = childAt(0, node); if (node.getType() == DatabeneScriptLexer.QUALIFIEDNAME) return new QNBeanSpecExpression(convertQualifiedNameToStringArray(node)); else if (node.getType() == DatabeneScriptLexer.IDENTIFIER) return new QNBeanSpecExpression(new String[] { node.getText() }); else if (node.getType() == DatabeneScriptLexer.BEAN) return convertBean(node); else return convertNode(node); }
private static WeightedTransition convertTransition(CommonTree node) throws SyntaxError { Assert.isTrue(node.getType() == DatabeneScriptLexer.ARROW, "expected transition, found: " + node.getToken()); Expression<?> from = convertNode(childAt(0, node)); Expression<?> to = convertNode(childAt(1, node)); Expression<Double> weight; if (node.getChildCount() > 2) weight = new TypeConvertingExpression<Double>(convertNode(childAt(2, node)), Double.class); else weight = new ConstantExpression<Double>(1.); return new WeightedTransition(from.evaluate(null), to.evaluate(null), weight.evaluate(null)); }
private static BeanSpec resolveBeanSpec(CommonTree node, Context context) throws SyntaxError { Assert.isTrue(node.getType() == DatabeneScriptLexer.BEANSPEC, "BEANSPEC expected, found: " + node.getToken()); node = childAt(0, node); if (node.getType() == DatabeneScriptLexer.QUALIFIEDNAME) return new QNBeanSpecExpression(convertQualifiedNameToStringArray(node)).resolve(context); else if (node.getType() == DatabeneScriptLexer.IDENTIFIER) return new QNBeanSpecExpression(new String[] { node.getText() }).resolve(context); else if (node.getType() == DatabeneScriptLexer.BEAN) return BeanSpec.createConstruction(convertBean(node).evaluate(context)); else if (node.getType() == DatabeneScriptLexer.CONSTRUCTOR) return BeanSpec.createConstruction(convertNode(node).evaluate(context)); else return BeanSpec.createReference(convertNode(node).evaluate(context)); }