コード例 #1
0
ファイル: Initiators.java プロジェクト: zkoss/zk
  /**
   * Invokes {@link Initiator#doInit}, if any, and returns an instance of{@link Initiators}.
   *
   * @param sysinits the system-level initiators
   */
  @SuppressWarnings("unchecked")
  public static final Initiators doInit(PageDefinition pagedef, Page page, Initiator[] sysinits) {
    if (sysinits != null)
      try {
        for (int j = 0; j < sysinits.length; ++j) sysinits[j].doInit(page, Collections.EMPTY_MAP);
      } catch (Throwable ex) {
        throw UiException.Aide.wrap(ex);
      }

    final List<Initiator> inits = pagedef != null ? pagedef.doInit(page) : null;
    boolean sysinitEx = false;
    if (sysinits != null)
      for (int j = 0; j < sysinits.length; ++j)
        if (sysinits[j] instanceof InitiatorExt) {
          sysinitEx = true;
          break;
        }

    boolean initEx = false;
    if (inits != null)
      for (Initiator init : inits)
        if (init instanceof InitiatorExt) {
          initEx = true;
          break;
        }

    if (!sysinitEx && !initEx) return new Initiators();
    return new RealInits(sysinits, inits, sysinitEx, initEx);
  }