01: /*
02: * Copyright (c) 2003, Intracom S.A. - www.intracom.com
03: *
04: * This library is free software; you can redistribute it and/or
05: * modify it under the terms of the GNU Lesser General Public
06: * License as published by the Free Software Foundation; either
07: * version 2 of the License, or (at your option) any later version
08: *
09: * This library is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12: * Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public
15: * License along with this library; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: *
18: * This package and its source code is available at www.jboss.org
19: **/
20: package org.jboss.jmx.adaptor.snmp.agent;
21:
22: import javax.management.Notification;
23:
24: /**
25: * <tt>NotificationWrapper</tt> is a "wide" read only interface
26: * providing "unstructured" access to agent internals and paylod carried by
27: * notifications.
28: *
29: * The alternatives were:
30: *
31: * 1. Precompile assumptions regarding the notification stucture and its
32: * payload in the trap factory
33: * 2. Use introspection but with a potential large execution overhead.
34: *
35: * The use of delegated wrappers stands somewhere in the middle. Trap
36: * factory can be extended with the definition and use of new wpappers
37: * that will be able to cope with any kind of notfications. Run time overhead
38: * is minimal as wrappers can be instantiated only once.
39: *
40: * Tags used to locate attributes in the notification fixed (i.e. excluding
41: * user defined fields) payload are defined. Implementations should not use
42: * these tags in any of the notification payload. To avoid conflicts the
43: * following convention is proposed: standard notification payload is qualified
44: * by the "n:" prefix. Agent properties are qualified by the "a:" prefix. User
45: * defined payload can be qualified with e.g. the "u:" prefix
46: *
47: * @version $Revision: 23902 $
48: *
49: * @author <a href="mailto:spol@intracom.gr">Spyros Pollatos</a>
50: * @author <a href="mailto:dimitris@jboss.org">Dimitris Andreadis</a>
51: **/
52: public interface NotificationWrapper {
53: // Notification content
54: public static final String MESSAGE_TAG = "n:message";
55: public static final String SEQNO_TAG = "n:sequenceNumber";
56: public static final String TSTAMP_TAG = "n:timeStamp";
57: public static final String TYPE_TAG = "n:type";
58: public static final String ALL_TAG = "n:all";
59: public static final String CLASS_TAG = "n:class";
60:
61: // Agent properties
62: public static final String STARTTIME_TAG = "a:startTime";
63: public static final String UPTIME_TAG = "a:uptime";
64: public static final String TRAPCOUNT_TAG = "a:trapCount";
65:
66: /**
67: * Sets the uptime clock and trap counter
68: **/
69: public void set(Clock uptime, Counter count);
70:
71: /**
72: * Sets notification to be used as the data source
73: *
74: * @param n the notification to be used as a data source at subsequent calls
75: * of method get
76: **/
77: public void prime(Notification n);
78:
79: /**
80: * Defines the communication protocol between the caller and the data
81: * source (notification). Implementations are expected to map the provided
82: * attribute name to some aspect of the notification payload. The later is
83: * defined by method prime.
84: *
85: * @param attrTag the tag of the attribute the value of which is required
86: * @return the content attrTag maps to
87: * @throws MappingFailedException if for any reason the requested attribute
88: * can not be found
89: **/
90: public Object get(String attrTag) throws MappingFailedException;
91:
92: } // interface NotificationWrapper
|