示例#1
0
  /**
   * Gibt alle Fields inkl. der Fields der Super-Interfaces zurück
   *
   * @return org.jacorb.ir.gui.typesystem.TypeSystemNode[]
   */
  public TypeSystemNode[] getAllFields() {
    if (this.allFields == null) {
      Vector fields = new java.util.Vector();
      // erstmal die Fields der superInterfaces sammeln
      Interface[] superInterfaces = this.getSuperInterfaces();
      for (int i = 0; i < superInterfaces.length; i++) {
        TypeSystemNode[] nextFields = superInterfaces[i].getAllFields();
        for (int n = 0; n < nextFields.length; n++) {
          fields.addElement(nextFields[n]);
        }
      }
      // dann unsere eigenen Fields (also die Attributes des Interfaces)
      ModelParticipant[] contents = this.contents();

      for (int i = 0; i < contents.length; i++) {
        if (contents[i] instanceof IRAttribute) {
          fields.addElement(contents[i]);
        }
      }

      this.allFields = new IRAttribute[fields.size()];
      int i = 0;
      for (Enumeration e = fields.elements(); e.hasMoreElements(); ) {
        allFields[i] = (IRAttribute) e.nextElement();
        i++;
      }
    } // if (allFields==null)
    return allFields;
  }
示例#2
0
  /**
   * Gibt alle Fields inkl. der Fields der Super-Interfaces zurück
   *
   * @return org.jacorb.ir.gui.typesystem.TypeSystemNode[]
   */
  public TypeSystemNode[] getAllOperations() {
    if (this.allOperations == null) {
      Vector operations = new java.util.Vector();
      // erstmal die Operationen der superInterfaces sammeln
      Interface[] superInterfaces = this.getSuperInterfaces();
      for (int i = 0; i < superInterfaces.length; i++) {
        TypeSystemNode[] nextOperations = superInterfaces[i].getAllOperations();
        for (int n = 0; n < nextOperations.length; n++) {
          operations.addElement(nextOperations[n]);
        }
      }

      // dann unsere eigenen Operationen

      ModelParticipant[] contents = this.contents();
      for (int i = 0; i < contents.length; i++) {
        if (contents[i] instanceof IROperation) {
          operations.addElement(contents[i]);
        }
      }

      this.allOperations = new IROperation[operations.size()];
      int i = 0;
      for (Enumeration e = operations.elements(); e.hasMoreElements(); ) {
        allOperations[i] = (IROperation) e.nextElement();
        i++;
      }
    } // if (allOperations==null)
    return allOperations;
  }
示例#3
0
  /**
   * Informs all registered objects an association has started.
   *
   * <p>The Control object which represents the transaction is given.
   *
   * <p>A flag is passed indicating whether this association is as a result of a Current.begin
   * operation.
   *
   * @param control The transaction whose association has started.
   * @param begin Indicates if this is a begin rather than a resume.
   * @return
   * @see
   */
  void distributeStart(ControlImpl control, boolean begin) {

    // Determine the Coordinator for the transaction.

    org.omg.CosTransactions.Coordinator coord = null;

    try {
      coord = control.get_coordinator();
    } catch (Unavailable exc) {
    }

    // Browse through the set, telling each that association is starting.

    if (coord != null) {

      for (int i = 0; i < registered.size(); i++) {

        StaticResource resource = (StaticResource) registered.elementAt(i);

        try {
          resource.startAssociation(coord, begin);
        } catch (INVALID_TRANSACTION exc) {
          // Catch INVALID_TRANSACTION exception, and allow it to
          // percolate. We need to inform all previously called
          // StaticResources that the association has ended
          // immediately.

          for (int j = i - 1; j >= 0; j--) {
            ((StaticResource) registered.elementAt(j)).endAssociation(coord, begin);
          }

          throw (INVALID_TRANSACTION) exc.fillInStackTrace();
        } catch (Throwable exc) {
          // discard any other exception
        }
      }
    }
  }
示例#4
0
  /**
   * Informs all registered StaticResource objects that a thread association has ended.
   *
   * <p>The Control object representing the transaction is given.
   *
   * <p>A flag is passed indicating whether this association is as a result of the transaction
   * completing.
   *
   * @param control The transaction whose association has ended.
   * @param complete Indicates that this is a commit/rollback rather than a suspend.
   * @return
   * @see
   */
  void distributeEnd(ControlImpl control, boolean complete) {

    // Determine the Coordinator for the transaction.

    org.omg.CosTransactions.Coordinator coord = null;

    try {
      coord = control.get_coordinator();
    } catch (Unavailable exc) {
    }

    // Browse through the set, telling each that the association is ending.

    if (coord != null) {
      for (int i = 0; i < registered.size(); i++) {
        StaticResource resource = (StaticResource) registered.elementAt(i);
        try {
          resource.endAssociation(coord, complete);
        } catch (Throwable e) {
          // Discard any exception.
        }
      }
    }
  }
示例#5
0
  /**
   * Adds the given StaticResource object to the set of those informed of thread association
   * changes.
   *
   * <p>If there is a current thread association, then the added StaticResource is called
   * immediately so that it is aware of the association.
   *
   * @param obj The StaticResource to be added.
   * @return
   * @see
   */
  void addStatic(StaticResource obj) {

    registered.addElement(obj);

    // Determine whether there is a current association.

    try {
      org.omg.CosTransactions.Coordinator coord = CurrentTransaction.getCurrentCoordinator();

      // Tell the StaticResource that the association has started.
      // Pretend that it is a begin association, as the
      // StaticResource has not seen the transaction before.

      if (coord != null) {
        obj.startAssociation(coord, true);
      }
    } catch (Throwable exc) {
      // Discard any exception.
    }
  }
示例#6
0
  /**
   * Removes the given StaticResource object from the set of those informed of thread association
   * changes.
   *
   * @param obj The StaticResource to be removed.
   * @return Indicates success of the operation.
   * @see
   */
  boolean removeStatic(StaticResource obj) {

    boolean result = registered.removeElement(obj);
    return result;
  }