Hi,

the method log(Object fmt, Object... arr) acessible via namespace is not found 
if it is called with (String, int[]) parameters.
All other types of parameters work well.
See the example below.

Best regards,
  Tomas


---------
public class Test03 {

        private final static String NS_UTIL = "util";
        private final static ScriptUtil mNsUtil = new ScriptUtil();

        private static class JCtx extends MapContext implements 
NamespaceResolver {
                @Override
                public Object resolveNamespace(String name) {
            if (name == null) {
                return this;
            }
            if (NS_UTIL.equals(name)) {
                return mNsUtil;
            }
            return null;
                }
        }
        
        private final static String[] SCRIPTS = {
                "var x = null; util:log('x = %s', x);",
                "var x = 'abc'; util:log('x = %s', x);",
                "var x = 333; util:log('x = %s', x);",
                "var x = [1, 2]; util:log('x = %s', x);", // === ERROR ===
                "var x = ['a', 'b']; util:log('x = %s', x);",
                "var x = {1:'A', 2:'B'}; util:log('x = %s', x);",
        };

        public static void main(String[] args) {
                JexlEngine jexl = new JexlEngine();
                JexlContext jc = new JCtx();
                Script script;

                for (String stext : SCRIPTS) {
                        System.out.println(stext);
                        script = jexl.createScript(stext);
                        script.execute(jc);
                }
                
        }

        public static class ScriptUtil {
                public void log(Object fmt, Object... arr) {
                        System.out.println(String.format(fmt.toString(), arr));
                }
        }

}

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to