示例#1
0
  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;
  }