001: /*
002: * BEGIN_HEADER - DO NOT EDIT
003: *
004: * The contents of this file are subject to the terms
005: * of the Common Development and Distribution License
006: * (the "License"). You may not use this file except
007: * in compliance with the License.
008: *
009: * You can obtain a copy of the license at
010: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
011: * See the License for the specific language governing
012: * permissions and limitations under the License.
013: *
014: * When distributing Covered Code, include this CDDL
015: * HEADER in each file and include the License file at
016: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
017: * If applicable add the following below this CDDL HEADER,
018: * with the fields enclosed by brackets "[]" replaced with
019: * your own identifying information: Portions Copyright
020: * [year] [name of copyright owner]
021: */
022:
023: /*
024: * @(#)RegistryCacheImpl.java
025: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
026: *
027: * END_HEADER - DO NOT EDIT
028: */
029: package com.sun.jbi.binding.jms.deploy;
030:
031: import com.sun.jbi.StringTranslator;
032:
033: import com.sun.jbi.binding.jms.EndpointBean;
034: import com.sun.jbi.binding.jms.JMSBindingContext;
035: import com.sun.jbi.binding.jms.JMSBindingResources;
036:
037: import java.util.HashMap;
038: import java.util.Iterator;
039:
040: import java.util.Set;
041:
042: import java.util.logging.Logger;
043:
044: /**
045: * This is a registry which maintains the servicename, endpoint name across
046: * the bean object.
047: *
048: * @author Sun Microsystems Inc.
049: */
050: public final class RegistryCacheImpl implements RegistryImplementor,
051: JMSBindingResources {
052: /**
053: * Singleton reference.
054: */
055: private static RegistryCacheImpl sMe;
056:
057: /**
058: * List of all registered channels.
059: */
060: private HashMap mDeployments;
061:
062: /**
063: * Logger object.
064: */
065: private Logger mLog;
066:
067: /**
068: * Helper for i18n.
069: */
070: private StringTranslator mTranslator;
071:
072: /**
073: * Private constructor.
074: */
075: public RegistryCacheImpl() {
076: mDeployments = new HashMap();
077: mLog = JMSBindingContext.getInstance().getLogger();
078: mTranslator = JMSBindingContext.getInstance()
079: .getStringTranslator();
080: }
081:
082: /**
083: * Returns the keys.
084: *
085: * @return Iterator to keys.
086: */
087: public Iterator getAllKeys() {
088: return mDeployments.keySet().iterator();
089: }
090:
091: /**
092: * Returns the values.
093: *
094: * @return Collection of values.
095: */
096: public java.util.Collection getAllValues() {
097: return mDeployments.values();
098: }
099:
100: /**
101: * Used to find a registered endpoint which matches the specified service.
102: *
103: * @param str the service to match against.
104: *
105: * @return the appropriate endpoint bean, or no such endpoint exists.
106: */
107: public Object getValue(String str) {
108: EndpointBean eb = null;
109:
110: try {
111: eb = (EndpointBean) mDeployments.get(str);
112: } catch (Exception e) {
113: ;
114: }
115:
116: return eb;
117: }
118:
119: /**
120: * Removes all the entries from the registry.
121: */
122: public void clearRegistry() {
123: if (mDeployments == null) {
124: return;
125: }
126:
127: mDeployments = new HashMap();
128: }
129:
130: /**
131: * Checks if the registry contains the given key.
132: *
133: * @param str key.
134: *
135: * @return true if it contains.
136: */
137: public boolean containsKey(String str) {
138: Set keyset = mDeployments.keySet();
139: Iterator iter = keyset.iterator();
140:
141: while (iter.hasNext()) {
142: String ser = (String) iter.next();
143: EndpointBean eb = (EndpointBean) mDeployments.get(ser);
144:
145: if (eb.getUniqueName().trim().equals(str)) {
146: return true;
147: }
148: }
149:
150: return false;
151: }
152:
153: /**
154: * Initialises the registry.
155: *
156: * @param properties properties.
157: *
158: * @throws javax.jbi.JBIException exception if registry cnnnot be cleared.
159: */
160: public void init(java.util.Properties properties)
161: throws javax.jbi.JBIException {
162: clearRegistry();
163: }
164:
165: /**
166: * Registers a key.
167: *
168: * @param str key.
169: * @param obj value.
170: *
171: * @return registered key.
172: */
173: public synchronized String registerKey(String str, Object obj) {
174: mLog.info(mTranslator.getString(JMS_REGISTER_ENDPOINT, str));
175:
176: try {
177: mDeployments.put(str, obj);
178: } catch (Exception e) {
179: ;
180: }
181:
182: return str;
183: }
184:
185: /**
186: * Removes the key.
187: *
188: * @param str key.
189: */
190: public synchronized void removeKey(String str) {
191: mLog.info(mTranslator.getString(JMS_DEREGISTER_ENDPOINT, str));
192:
193: EndpointBean eb = null;
194:
195: try {
196: eb = (EndpointBean) mDeployments.remove(str);
197: } catch (Exception e) {
198: ;
199: }
200:
201: if (eb == null) {
202: mLog.severe(mTranslator.getString(
203: JMS_DEREGISTER_ENDPOINT_FAILED, str));
204: }
205: }
206:
207: /**
208: * Serializes the registry.
209: *
210: * @throws javax.jbi.JBIException jbi exception.
211: */
212: public void serialize() throws javax.jbi.JBIException {
213: }
214: }
|