public static boolean _call(PageContext pc, Object obj, UDF udf, boolean parallel, int maxThreads) throws PageException { ExecutorService execute = null; List<Future<Data<Object>>> futures = null; if (parallel) { execute = Executors.newFixedThreadPool(maxThreads); futures = new ArrayList<Future<Data<Object>>>(); } boolean res; // Array if (obj instanceof Array) { res = invoke(pc, (Array) obj, udf, execute, futures); } // Query else if (obj instanceof Query) { res = invoke(pc, (Query) obj, udf, execute, futures); } // Struct else if (obj instanceof Struct) { res = invoke(pc, (Struct) obj, udf, execute, futures); } // other Iteratorable else if (obj instanceof Iteratorable) { res = invoke(pc, (Iteratorable) obj, udf, execute, futures); } // Map else if (obj instanceof java.util.Map) { res = invoke(pc, (java.util.Map) obj, udf, execute, futures); } // List else if (obj instanceof List) { res = invoke(pc, (List) obj, udf, execute, futures); } // Iterator else if (obj instanceof Iterator) { res = invoke(pc, (Iterator) obj, udf, execute, futures); } // Enumeration else if (obj instanceof Enumeration) { res = invoke(pc, (Enumeration) obj, udf, execute, futures); } // String List else if (obj instanceof StringListData) { res = invoke(pc, (StringListData) obj, udf, execute, futures); } else throw new FunctionException( pc, "Every", 1, "data", "cannot iterate througth this type " + Caster.toTypeName(obj.getClass())); if (parallel) res = afterCall(pc, futures, execute); return res; }