KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > snmp4j > agent > mo > jmx > util > AbstractSyntheticJMXIndexSupport


1 /*_############################################################################
2   _##
3   _## SNMP4J-AgentJMX - AbstractSyntheticJMXIndexSupport.java
4   _##
5   _## Copyright (C) 2006-2007 Frank Fock (SNMP4J.org)
6   _##
7   _## This program is free software; you can redistribute it and/or modify
8   _## it under the terms of the GNU General Public License version 2 as
9   _## published by the Free Software Foundation.
10   _##
11   _## This program is distributed in the hope that it will be useful,
12   _## but WITHOUT ANY WARRANTY; without even the implied warranty of
13   _## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   _## GNU General Public License for more details.
15   _##
16   _## You should have received a copy of the GNU General Public License
17   _## along with this program; if not, write to the Free Software
18   _## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19   _## MA 02110-1301 USA
20   _##
21   _##########################################################################*/

22 package org.snmp4j.agent.mo.jmx.util;
23
24 import javax.management.ObjectName JavaDoc;
25
26 import org.snmp4j.agent.mo.jmx.JMXIndexSupport;
27 import org.snmp4j.smi.OID;
28
29 /**
30  * @author Frank Fock
31  */

32 public abstract class AbstractSyntheticJMXIndexSupport
33     implements JMXIndexSupport
34 {
35
36   protected KeyIndexRelation keyIndexRelation;
37
38   public AbstractSyntheticJMXIndexSupport() {
39     this(50);
40   }
41
42   public AbstractSyntheticJMXIndexSupport(int initialSize) {
43     keyIndexRelation = new KeyIndexRelation(initialSize);
44   }
45
46   public OID mapToIndex(Object JavaDoc rowIdentifier) {
47     OID index = keyIndexRelation.getKeys().get(rowIdentifier);
48     if (index == null) {
49       return allocateNewIndex(rowIdentifier);
50     }
51     return index;
52   }
53
54   protected OID allocateNewIndex(Object JavaDoc rowIdentifier) {
55     int hashCode = rowIdentifier.hashCode();
56     OID index = new OID(new int[] { hashCode });
57     while (keyIndexRelation.getIndexes().containsKey(index)) {
58       hashCode++;
59       index.set(0, hashCode);
60     }
61     keyIndexRelation.getKeys().put(rowIdentifier, index);
62     keyIndexRelation.getIndexes().put(index, rowIdentifier);
63     return index;
64   }
65
66   public abstract ObjectName JavaDoc mapToRowMBean(Object JavaDoc rowIdentifier);
67
68   public Object JavaDoc mapToRowIdentifier(OID rowIndex) {
69     if (rowIndex == null) {
70       return null;
71     }
72     return keyIndexRelation.getIndexes().get(rowIndex);
73   }
74
75   public Object JavaDoc getRowIdentifier(Object JavaDoc nativeRowId, int nativeRowIndex) {
76     return nativeRowId;
77   }
78 }
79
Popular Tags