public String getSourceAccessor(final OgnlContext context, final Object target, final Object index) { // This method is called during OGNL's bytecode enhancement optimizations in order to determine better- // performing methods to access the properties of an object. It's been written trying to mimic // what is done at MapPropertyAccessor#getSourceAccessor() method, removing all the parts related to indexed // access, which do not apply to IVariablesMap implementations. context.setCurrentAccessor(IContext.class); context.setCurrentType(Object.class); return ".getVariable(" + index + ")"; }
public String getSourceSetter(OgnlContext context, Object target, Object index) { context.setCurrentAccessor(Map.class); context.setCurrentType(Object.class); String indexStr = index.toString(); if (String.class.isInstance(index)) { String key = (indexStr.indexOf('"') >= 0? indexStr.replaceAll("\"", "") : indexStr); if (key.equals("size")) return ""; else if (key.equals("keys") || key.equals("keySet")) return ""; else if (key.equals("values")) return ""; else if (key.equals("isEmpty")) return ""; } return ".put(" + indexStr + ", $3)"; } }
public String getSourceSetter(OgnlContext context, Object target, Object index) { context.setCurrentAccessor(Map.class); context.setCurrentType(Object.class); String indexStr = index.toString(); if (String.class.isInstance(index)) { String key = (indexStr.indexOf('"') >= 0? indexStr.replaceAll("\"", "") : indexStr); if (key.equals("size")) return ""; else if (key.equals("keys") || key.equals("keySet")) return ""; else if (key.equals("values")) return ""; else if (key.equals("isEmpty")) return ""; } return ".put(" + indexStr + ", $3)"; } }
context.setCurrentAccessor(f.getDeclaringClass()); context.setCurrentAccessor(OgnlRuntime.getCompiler().getSuperOrInterfaceClass(m, m.getDeclaringClass()));
public String getSourceAccessor(OgnlContext context, Object target, Object index) { String indexStr = index.toString(); // need to convert to primitive for list index access // System.out.println("index class " + index.getClass() + " current type " + context.getCurrentType() + " current object class " + context.getCurrentObject().getClass()); if (context.getCurrentType() != null && !context.getCurrentType().isPrimitive() && Number.class.isAssignableFrom(context.getCurrentType())) { indexStr += "." + OgnlRuntime.getNumericValueGetter(context.getCurrentType()); } else if (context.getCurrentObject() != null && Number.class.isAssignableFrom(context.getCurrentObject().getClass()) && !context.getCurrentType().isPrimitive()) { // means it needs to be cast first as well String toString = String.class.isInstance(index) && context.getCurrentType() != Object.class ? "" : ".toString()"; indexStr = "ognl.OgnlOps#getIntValue(" + indexStr + toString + ")"; } context.setCurrentAccessor(target.getClass()); context.setCurrentType(target.getClass().getComponentType()); return "[" + indexStr + "]"; }
context.setCurrentAccessor(target.getClass()); context.setCurrentType(target.getClass().getComponentType());
context.setCurrentAccessor(target.getClass()); context.setCurrentType(target.getClass().getComponentType());
public String getSourceAccessor(OgnlContext context, Object target, Object index) { String indexStr = index.toString(); // need to convert to primitive for list index access // System.out.println("index class " + index.getClass() + " current type " + context.getCurrentType() + " current object class " + context.getCurrentObject().getClass()); if (context.getCurrentType() != null && !context.getCurrentType().isPrimitive() && Number.class.isAssignableFrom(context.getCurrentType())) { indexStr += "." + OgnlRuntime.getNumericValueGetter(context.getCurrentType()); } else if (context.getCurrentObject() != null && Number.class.isAssignableFrom(context.getCurrentObject().getClass()) && !context.getCurrentType().isPrimitive()) { // means it needs to be cast first as well String toString = String.class.isInstance(index) && context.getCurrentType() != Object.class ? "" : ".toString()"; indexStr = "ognl.OgnlOps#getIntValue(" + indexStr + toString + ")"; } context.setCurrentAccessor(target.getClass()); context.setCurrentType(target.getClass().getComponentType()); return "[" + indexStr + "]"; }
context.setCurrentAccessor(context.getRoot().getClass());
public String getSourceAccessor(OgnlContext context, Object target, Object name) { IBeanProvider provider = (IBeanProvider)target; String beanName = ((String)name).replaceAll("\"", ""); if (provider.canProvideBean(beanName)) { Class type = OgnlRuntime.getCompiler().getInterfaceClass(provider.getBean(beanName).getClass()); ExpressionCompiler.addCastString(context, "((" + type.getName() + ")"); context.setCurrentAccessor(IBeanProvider.class); context.setCurrentType(type); return ".getBean(" + name + "))"; } return super.getSourceAccessor(context, target, name); }
public String getSourceAccessor(OgnlContext context, Object target, Object name) { ListenerMap map = (ListenerMap) target; String listenerName = ((String)name).replaceAll("\"", ""); if (map.canProvideListener(listenerName)) { Class type = OgnlRuntime.getCompiler().getInterfaceClass(map.getListener(listenerName).getClass()); ExpressionCompiler.addCastString(context, "((" + type.getName() + ")"); context.setCurrentAccessor(ListenerMap.class); context.setCurrentType(type); return ".getListener(" + name + "))"; } return super.getSourceAccessor(context, target, name); }
public String getSourceAccessor(OgnlContext context, Object target, Object name) { IBeanProvider provider = (IBeanProvider)target; String beanName = ((String)name).replaceAll("\"", ""); if (provider.canProvideBean(beanName)) { Class type = OgnlRuntime.getCompiler().getInterfaceClass(provider.getBean(beanName).getClass()); ExpressionCompiler.addCastString(context, "((" + type.getName() + ")"); context.setCurrentAccessor(IBeanProvider.class); context.setCurrentType(type); return ".getBean(" + name + "))"; } return super.getSourceAccessor(context, target, name); }
public String getSourceAccessor(OgnlContext context, Object target, Object name) { ListenerMap map = (ListenerMap) target; String listenerName = ((String)name).replaceAll("\"", ""); if (map.canProvideListener(listenerName)) { Class type = OgnlRuntime.getCompiler().getInterfaceClass(map.getListener(listenerName).getClass()); ExpressionCompiler.addCastString(context, "((" + type.getName() + ")"); context.setCurrentAccessor(ListenerMap.class); context.setCurrentType(type); return ".getListener(" + name + "))"; } return super.getSourceAccessor(context, target, name); }
context.setCurrentAccessor(context.getRoot().getClass());
context.setCurrentAccessor(Map.class); context.setCurrentType(Object.class);
context.setCurrentAccessor(Map.class); context.setCurrentType(Object.class);
context.setCurrentAccessor(OgnlRuntime.getCompiler().getSuperOrInterfaceClass(m, m.getDeclaringClass()));
context.setCurrentAccessor(List.class);
context.setCurrentAccessor(context.getClass());
context.setCurrentAccessor(context.getClass());