package org.mvel2.tests.core.res;
import org.mvel2.asm.MethodVisitor;
import static org.mvel2.asm.Opcodes.CHECKCAST;
import static org.mvel2.asm.Opcodes.INVOKEVIRTUAL;
import org.mvel2.integration.PropertyHandler;
import org.mvel2.integration.VariableResolverFactory;
import org.mvel2.optimizers.impl.asm.ProducesBytecode;
public class SampleBeanAccessor implements PropertyHandler, ProducesBytecode {
public Object getProperty(String name, Object contextObj, VariableResolverFactory variableFactory) {
return ((SampleBean) contextObj).getProperty(name);
}
public Object setProperty(String name, Object contextObj, VariableResolverFactory variableFactory, Object value) {
return ((SampleBean) contextObj).setProperty(name, value);
}
// implement the bytecode generation stubs to work with the JIT.
public void produceBytecodeGet(MethodVisitor mv, String propertyName, VariableResolverFactory variableResolverFactory) {
mv.visitTypeInsn(CHECKCAST, "org/mvel2/tests/core/res/SampleBean");
mv.visitLdcInsn(propertyName);
mv.visitMethodInsn(INVOKEVIRTUAL, "org/mvel2/tests/core/res/SampleBean", "getProperty", "(Ljava/lang/String;)Ljava/lang/Object;");
}
public void produceBytecodePut(MethodVisitor mv, String propertyName, VariableResolverFactory variableResolverFactory) {
throw new RuntimeException("not implemented");
}
}