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: * @(#)EventInfoFactory.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.proxy.connection;
030:
031: import com.sun.jbi.binding.proxy.LocalStringKeys;
032:
033: import com.sun.jbi.binding.proxy.util.Translator;
034:
035: import com.sun.jbi.binding.proxy.jms.JMSConnectionManager;
036:
037: import java.lang.reflect.Constructor;
038: import java.util.HashMap;
039:
040: /**
041: * Factory for different remote connection managers.
042: * @author Sun Microsystems, Inc
043: */
044: public class EventInfoFactory {
045: /**
046: * ConnectionManagerFactory singleton.
047: */
048: private static EventInfoFactory sCMF;
049: private HashMap mEventInfo;
050:
051: /**
052: * Constructor
053: * Private constructor to facilitate a singleton.
054: */
055: private EventInfoFactory() {
056: mEventInfo = new HashMap();
057: }
058:
059: /**
060: * Returns a singleton instance of the ConnectionManagerFactory class.
061: * @return The instance of the ConnectionManagerFactory
062: */
063: public static EventInfoFactory getInstance() {
064: if (null == sCMF) {
065: sCMF = new EventInfoFactory();
066: }
067: return sCMF;
068: }
069:
070: public void registerEventInfo(Class implementingClass,
071: String eventName)
072: throws com.sun.jbi.binding.proxy.connection.ConnectionException {
073: try {
074: Constructor c = implementingClass
075: .getDeclaredConstructor(new Class[] { Event.class });
076: mEventInfo.put(eventName, c);
077: } catch (java.lang.NoSuchMethodException nsmEx) {
078: throw new com.sun.jbi.binding.proxy.connection.ConnectionException(
079: nsmEx);
080: }
081: }
082:
083: public EventInfo newInstance(Event e)
084: throws com.sun.jbi.binding.proxy.connection.EventException {
085: try {
086: Constructor c = (Constructor) mEventInfo.get(e
087: .getEventName());
088: if (c != null) {
089: EventInfo ei = (EventInfo) c
090: .newInstance(new Object[] { e });
091: return (ei);
092: }
093: return (null);
094: } catch (java.lang.InstantiationException iEx) {
095: throw new com.sun.jbi.binding.proxy.connection.EventException(
096: iEx);
097: } catch (java.lang.IllegalAccessException iaEx) {
098: throw new com.sun.jbi.binding.proxy.connection.EventException(
099: iaEx);
100: } catch (java.lang.reflect.InvocationTargetException itEx) {
101: throw new com.sun.jbi.binding.proxy.connection.EventException(
102: itEx);
103: }
104: }
105: }
|