001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.modeler;
018
019 import javax.management.Notification;
020
021
022 /**
023 * Base JMX Notification. Supports in int code and notes - for faster
024 * access and dispatching.
025 *
026 * @author Costin Manolache
027 */
028 public final class BaseNotification extends Notification {
029
030 // ----------------------------------------------------------- Constructors
031 private int code;
032 private String type;
033 private Object source;
034 private long seq;
035 private long tstamp;
036
037 /**
038 * Private constructor.
039 */
040 private BaseNotification(String type,
041 Object source,
042 long seq,
043 long tstamp,
044 int code) {
045 super(type, source, seq, tstamp);
046 init( type, source, seq, tstamp, code );
047 this.code=code;
048 }
049
050 public void recycle() {
051
052 }
053
054 public void init( String type, Object source,
055 long seq, long tstamp, int code )
056 {
057 this.type=type;
058 this.source = source;
059 this.seq=seq;
060 this.tstamp=tstamp;
061 this.code = code;
062 }
063
064 // -------------------- Override base methods --------------------
065 // All base methods need to be overriden - in order to support recycling.
066
067
068 // -------------------- Information associated with the notification ----
069 // Like events ( which Notification extends ), notifications may store
070 // informations related with the event that trigered it. Source and type is
071 // one piece, but it is common to store more info.
072
073 /** Action id, useable in switches and table indexes
074 */
075 public int getCode() {
076 return code;
077 }
078
079 // XXX Make it customizable - or grow it
080 private Object notes[]=new Object[32];
081
082 public final Object getNote(int i ) {
083 return notes[i];
084 }
085
086 public final void setNote(int i, Object o ) {
087 notes[i]=o;
088 }
089 }