/** * Copyright (c) 2004-2011 Wang Jinbao(Julian Wong), http://www.ralasafe.com * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php */ package org.ralasafe.script; import org.ralasafe.SystemConstant; public class HintValue extends DefineVariable { private String hint; private String key; public String getHint() { return hint; } public void setHint( String hint ) { this.hint=hint; } public String getKey() { return key; } public void setKey( String key ) { this.key=key; } /** * Script likes: * Object v=null; * Object hintObj = context.get("hint"); * if(hintObj instanceof hintObj org.ralasafe.db.MapStorgeObject){ * v = ((org.ralasafe.db.MapStorgeObject)hintObj).get("key"); * }else{ * //java bean * Class clazz=hintObj.getClass(); * String getterStr="get"+key.substring( 0, 1 ).toUpperCase()+key.substring( 1 ); * java.lang.reflect.Method getter=clazz.getMethod( getterStr, new Class[] {} ); * v=getter.invoke( o, new Object[] {} ); * } * */ public String toScript() { String v=getVariableName(); String context=SystemConstant.CONTEXT; String hintObj="hintObj_" + getVariableName(); StringBuffer buff=new StringBuffer(); buff.append( "Object "+v+"=null; \n" ); buff.append( "Object hintObj = "+context+".get(\""+hint+"\"); \n" ); buff.append( "if(hintObj instanceof org.ralasafe.db.MapStorgeObject){ \n" ); buff.append( " "+v+"=((org.ralasafe.db.MapStorgeObject)hintObj).get(\""+key+"\"); \n" ); buff.append( "}else{ \n" ); buff.append( " Class clazz=hintObj.getClass(); \n" ); //buff.append( " String getterStr=\"get\"+\""+key+"\".substring( 0, 1 ).toUpperCase()+\""+key+"\".substring( 1 ); \n" ); //buff.append( " java.lang.reflect.Method getter=clazz.getMethod( getterStr, new Class[] {} ); \n" ); buff.append( " java.lang.reflect.Method getter=org.ralasafe.util.Util.getJavabeanGetMethod( clazz.getName(), \""+key+"\" ); \n" ); buff.append( " "+v+"=getter.invoke( hintObj, new Object[] {} ); \n" ); buff.append( "} \n" ); return buff.toString(); } }