View Javadoc

    1   /*
    2    *  Licensed to the Apache Software Foundation (ASF) under one
    3    *  or more contributor license agreements.  See the NOTICE file
    4    *  distributed with this work for additional information
    5    *  regarding copyright ownership.  The ASF licenses this file
    6    *  to you under the Apache License, Version 2.0 (the
    7    *  "License"); you may not use this file except in compliance
    8    *  with the License.  You may obtain a copy of the License at
    9    *
    10   *    http://www.apache.org/licenses/LICENSE-2.0
    11   *
    12   *  Unless required by applicable law or agreed to in writing,
    13   *  software distributed under the License is distributed on an
    14   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    15   *  KIND, either express or implied.  See the License for the
    16   *  specific language governing permissions and limitations
    17   *  under the License.
    18   *
    19   */
    20  package org.apache.mina.statemachine.event;
    21
    22  import org.apache.commons.lang.builder.ToStringBuilder;
    23  import org.apache.mina.statemachine.context.StateContext;
    24
    25  /**
    26   * Represents an event which typically corresponds to a method call on a proxy.
    27   * An event has an id and zero or more arguments typically corresponding to
    28   * the method arguments.
    29   *
    30   * @author <a href="http://mina.apache.org">Apache MINA Project</a>
    31   */
    32  public class Event {
    33      public static final String WILDCARD_EVENT_ID = "*";
    34
    35      private final Object id;
    36
    37      private final StateContext context;
    38
    39      private final Object[] arguments;
    40
    41      /**
    42       * Creates a new {@link Event} with the specified id and no arguments.
    43       *
    44       * @param id the event id.
    45       * @param context the {@link StateContext} the event was triggered for.
    46       */
    47      public Event(Object id, StateContext context) {
    48          this(id, context, new Object[0]);
    49      }
    50
    51      /**
    52       * Creates a new {@link Event} with the specified id and arguments.
    53       *
    54       * @param id the event id.
    55       * @param context the {@link StateContext} the event was triggered for.
    56       * @param arguments the event arguments.
    57       */
    58      public Event(Object id, StateContext context, Object[] arguments) {
    59          if (id == null) {
    60              throw new IllegalArgumentException("id");
    61          }
    62          if (context == null) {
    63              throw new IllegalArgumentException("context");
    64          }
    65          if (arguments == null) {
    66              throw new IllegalArgumentException("arguments");
    67          }
    68          this.id = id;
    69          this.context = context;
    70          this.arguments = arguments;
    71      }
    72
    73      /**
    74       * Returns the {@link StateContext} this {@link Event} was triggered for.
    75       *
    76       * @return the {@link StateContext}.
    77       */
    78      public StateContext getContext() {
    79          return context;
    80      }
    81
    82      /**
    83       * Returns the id of this {@link Event}.
    84       *
    85       * @return the id.
    86       */
    87      public Object getId() {
    88          return id;
    89      }
    90
    91      /**
    92       * Returns the arguments of this {@link Event}.
    93       *
    94       * @return the arguments. Returns an empty array if this {@link Event} has
    95       *         no arguments.
    96       */
    97      public Object[] getArguments() {
    98          return arguments;
    99      }
    100
    101     public String toString() {
    102         return new ToStringBuilder(this).append("id", id).append("context", context).append("arguments", arguments)
    103                 .toString();
    104     }
    105 }