@Override public Boolean staticMethodCallValue(StaticMethodCallValue val, Boolean in) throws RuntimeException { if (val.getSignature().equals(TransformationClassAnalyzer.booleanValueOf)) return true; return super.staticMethodCallValue(val, in); } @Override
@Override public O binaryOpValue(TypedValue.BinaryOperationValue val, I in) throws E { val.left.visit(this, in); val.right.visit(this, in); return defaultValue(val, in); }
@Override public O virtualMethodCallValue(MethodCallValue.VirtualMethodCallValue val, I in) throws E { val.base.visit(this, in); return methodCallValue(val, in); } }
@Override public ColumnExpressions<?> castValue(TypedValue.CastValue val, Void in) throws TypedValueVisitorException { // TODO: Check if cast is consistent with the reader // SQLColumnValues toReturn = val.operand.visit(this, in); // if (!toReturn.reader.isCastConsistent(val.getType().getInternalName())) // throw new TypedValueVisitorException("Attempting to cast to an inconsistent type"); return val.operand.visit(this, in); }
@Override public boolean isFluentChaining(MethodSignature sig) { if (TransformationClassAnalyzer.stringBuilderAppendString.equals(sig)) return true; return false; }
public Value newValue(Type type) { // In practice, this will only be called with type==null for // uninitialized stack slot entries assert(type == null); return new TypedValue(type); }
public O thisValue(TypedValue.ThisValue val, I in) throws E { return varValue(val, in); } public O argValue(TypedValue.ArgValue val, I in) throws E
public O floatConstantValue(ConstantValue.FloatConstant val, I in) throws E { return constantValue(val, in); } public O doubleConstantValue(ConstantValue.DoubleConstant val, I in) throws E
public O castValue(TypedValue.CastValue val, I in) throws E { return unaryOpValue(val, in); } public O getFieldValue(TypedValue.GetFieldValue val, I in) throws E
public O methodCallValue(MethodCallValue val, I in) throws E { return defaultValue(val, in); } public O staticMethodCallValue(MethodCallValue.StaticMethodCallValue val, I in) throws E
@Override public <I,O,E extends Exception> O visit(TypedValueVisitor<I,O,E> visitor, I input) throws E { return visitor.booleanConstantValue(this, input); } @Override public Boolean getConstant() { return val; }
@Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + val; return result; } @Override
@Override public CastValue withNewChildren(TypedValue newOperand) { return new CastValue(type, newOperand); } }
public TypedValueRewriterWalker(TypedValueVisitor<I, TypedValue, E> rewriter) { this(rewriter, new TypedValueVisitor<I, I, E>() { @Override public I defaultValue(TypedValue val, I in) throws E { return in; }}); }
@Override public O unaryOpValue(TypedValue.UnaryOperationValue val, I in) throws E { val.operand.visit(this, in); return defaultValue(val, in); }
@Override public O methodCallValue(MethodCallValue val, I in) throws E { for (TypedValue arg: val.args) arg.visit(this, in); return defaultValue(val, in); } @Override public O staticMethodCallValue(MethodCallValue.StaticMethodCallValue val, I in) throws E