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 The Apache MINA Project (dev@mina.apache.org)
31   * @version $Rev: 586695 $, $Date: 2007-10-20 12:01:17 +0200 (sam, 20 oct 2007) $
32   */
33  public class Event {
34      public static final String WILDCARD_EVENT_ID = "*";
35      
36      private final Object id;
37      private final StateContext context;
38      private final Object[] arguments;
39      
40      /**
41       * Creates a new {@link Event} with the specified id and no arguments.
42       * 
43       * @param id the event id.
44       * @param context the {@link StateContext} the event was triggered for.
45       */
46      public Event(Object id, StateContext context) {
47          this(id, context, new Object[0]);
48      }
49  
50      /**
51       * Creates a new {@link Event} with the specified id and arguments.
52       * 
53       * @param id the event id.
54       * @param context the {@link StateContext} the event was triggered for.
55       * @param arguments the event arguments.
56       */
57      public Event(Object id, StateContext context, Object[] arguments) {
58          if (id == null) {
59              throw new NullPointerException("id");
60          }
61          if (context == null) {
62              throw new NullPointerException("context");
63          }
64          if (arguments == null) {
65              throw new NullPointerException("arguments");
66          }
67          this.id = id;
68          this.context = context;
69          this.arguments = arguments;
70      }
71  
72      /**
73       * Returns the {@link StateContext} this {@link Event} was triggered for.
74       * 
75       * @return the {@link StateContext}.
76       */
77      public StateContext getContext() {
78          return context;
79      }
80  
81      /**
82       * Returns the id of this {@link Event}.
83       * 
84       * @return the id.
85       */
86      public Object getId() {
87          return id;
88      }
89  
90      /**
91       * Returns the arguments of this {@link Event}.
92       * 
93       * @return the arguments. Returns an empty array if this {@link Event} has 
94       *         no arguments.
95       */
96      public Object[] getArguments() {
97          return arguments;
98      }
99      
100     public String toString() {
101         return new ToStringBuilder(this)
102             .append("id", id)
103             .append("context", context)
104             .append("arguments", arguments)
105             .toString();
106     }
107 }