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 }