private static Class<? extends ITag> getTagImplFromTabLibs(ParserContext context, String ns, String tagName) { // search from tag libs Parser parser = context.getParser(); for (ITagLibrary lib : parser.getTagLibraries()) { if (ns != null && !ns.equals(lib.getNamespaceUri())) { continue; } Class<? extends ITag> clazz = lib.getTagImpl(tagName); if (clazz != null) { return clazz; } } return null; }
private Object getUtilFunctions(String name, Context context) { for (ITagLibrary tagLib : context.getPaxml().getParser().getTagLibraries()) { Class<? extends IUtilFunctionsFactory> clazz = tagLib.getUtilFunctionsFactory(name); if (clazz != null) { return ReflectUtils.createObject(clazz).getUtilFunctions(context); } } return null; } }
private Object getUtilFunctions(String name, Context context) { for (ITagLibrary tagLib : context.getPaxml().getParser().getTagLibraries()) { Class<? extends IUtilFunctionsFactory> clazz = tagLib.getUtilFunctionsFactory(name); if (clazz != null) { return ReflectUtils.createObject(clazz).getUtilFunctions(context); } } return null; } }
@Override protected Object doInvoke(Context context) throws Exception { Binding binding = new Binding(); // inject all context variables into groovy for (Map.Entry<String, Object> entry : context.getIdMap(true, true).entrySet()) { binding.setVariable(entry.getKey(), entry.getValue()); } // set the util functions for (ITagLibrary tagLib : context.getPaxml().getParser().getTagLibraries()) { for (String util : tagLib.getUtilFunctionsFactoryNames()) { Class<? extends IUtilFunctionsFactory> clazz = (Class<? extends IUtilFunctionsFactory>) tagLib .getUtilFunctionsFactory(util); if (clazz != null) { Object utilObj = ReflectUtils.createObject(clazz).getUtilFunctions(context); if (utilObj != null) { binding.setVariable(util, utilObj); } } } } GroovyShell shell = new GroovyShell(binding); Object value = getValue(); Object result = shell.evaluate(String.valueOf(value)); return result; }
@Override protected Object doInvoke(Context context) throws Exception { Binding binding = new Binding(); // inject all context variables into groovy for (Map.Entry<String, Object> entry : context.getIdMap(true, true).entrySet()) { binding.setVariable(entry.getKey(), entry.getValue()); } // set the util functions for (ITagLibrary tagLib : context.getPaxml().getParser().getTagLibraries()) { for (String util : tagLib.getUtilFunctionsFactoryNames()) { Class<? extends IUtilFunctionsFactory> clazz = (Class<? extends IUtilFunctionsFactory>) tagLib .getUtilFunctionsFactory(util); if (clazz != null) { Object utilObj = ReflectUtils.createObject(clazz).getUtilFunctions(context); if (utilObj != null) { binding.setVariable(util, utilObj); } } } } GroovyShell shell = new GroovyShell(binding); Object value = getValue(); Object result = shell.evaluate(String.valueOf(value)); return result; }
for (ITagLibrary lib : parser.getTagLibraries()) { clazz = lib.getTagImpl(tagName); if (clazz != null) { clazz = ConstTag.class; } else if (Namespaces.COMMAND.equals(ns)) { for (ITagLibrary lib : parser.getTagLibraries()) { clazz = lib.getTagImpl(tagName); if (clazz != null) {
private void setXpathFunctions(JXPathContext xpathContext) { Functions existing = xpathContext.getFunctions(); final FunctionLibrary funcLib; if (existing == null) { funcLib = new FunctionLibrary(); } else if (existing instanceof FunctionLibrary) { funcLib = (FunctionLibrary) existing; } else { funcLib = new FunctionLibrary(); funcLib.addFunctions(existing); } for (ITagLibrary lib : getPaxml().getParser().getTagLibraries()) { for (String name : lib.getUtilFunctionsFactoryNames()) { Class<? extends IUtilFunctionsFactory> clazz = lib.getUtilFunctionsFactory(name); Class<?> xpathFunClass = ReflectUtils.createObject(clazz).getXpathUtilFunctions(this); if (xpathFunClass == null) { // skip this one continue; } Util util = ReflectUtils.getAnnotation(clazz, Util.class); if (util == null) { throw new PaxmlRuntimeException("Internal error: util function factory is not annotated: " + clazz.getName()); } funcLib.addFunctions(new ClassFunctions(xpathFunClass, util.value())); } } xpathContext.setFunctions(funcLib); }
private void setXpathFunctions(JXPathContext xpathContext) { Functions existing = xpathContext.getFunctions(); final FunctionLibrary funcLib; if (existing == null) { funcLib = new FunctionLibrary(); } else if (existing instanceof FunctionLibrary) { funcLib = (FunctionLibrary) existing; } else { funcLib = new FunctionLibrary(); funcLib.addFunctions(existing); } for (ITagLibrary lib : getPaxml().getParser().getTagLibraries()) { for (String name : lib.getUtilFunctionsFactoryNames()) { Class<? extends IUtilFunctionsFactory> clazz = lib.getUtilFunctionsFactory(name); Class<?> xpathFunClass = ReflectUtils.createObject(clazz).getXpathUtilFunctions(this); if (xpathFunClass == null) { // skip this one continue; } Util util = ReflectUtils.getAnnotation(clazz, Util.class); if (util == null) { throw new PaxmlRuntimeException("Internal error: util function factory is not annotated: " + clazz.getName()); } funcLib.addFunctions(new ClassFunctions(xpathFunClass, util.value())); } } xpathContext.setFunctions(funcLib); }