Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2010, Red Hat and individual contributors
   * as indicated by the @author tags. 
   * See the copyright.txt in the distribution for a full listing 
   * of individual contributors.
   * This copyrighted material is made available to anyone wishing to use,
   * modify, copy, or redistribute it subject to the terms and conditions
   * of the GNU Lesser General Public License, v. 2.1.
  * This program is distributed in the hope that it will be useful, but WITHOUT A
  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  * You should have received a copy of the GNU Lesser General Public License,
  * v.2.1 along with this distribution; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  * MA  02110-1301, USA.
  * 
  * (C) 2005-2010,
  * @author JBoss Inc.
  */
 /*
  * Copyright (C) 2002,
  *
  * Arjuna Technologies Limited,
  * Newcastle upon Tyne,
  * Tyne and Wear,
  * UK.
  *
  * $Id: ProtocolManager.java,v 1.13 2005/05/19 12:13:28 nmcl Exp $
  */
 
 package com.arjuna.mw.wscf.protocols;
 
 
 import java.util.*;

The ProtocolManager is the way in which protocol implementations may be registered with the system.

Author(s):
Mark Little (mark.little@arjuna.com)
Version:
$Id:$
Since:
1.0.
 
 
 public class ProtocolManager
 {

Parameters:
protocolName The name of the protocol.
Returns:
The class that implements the specified coordination protocol.
Throws:
com.arjuna.mw.wscf.exceptions.ProtocolNotRegisteredException Thrown if the requested coordination protocol has not been registered.
IllegalArgumentException Thrown if the parameter is invalid.
 
 
 	public Object getProtocolImplementation (String protocolName)
 	{
         synchronized (this)
         {
             if (protocolName == null)
             {
                 throw new IllegalArgumentException();
             }
 
             Object object = .get(protocolName);
 
             if (object == null) {
                         + protocolName);
             }
             return object;
         }
 	}
 
 	/*
 	 * install all registered protocol implementations which should be either context factories
 	 * or high level services
 	 */
 
 	public synchronized final void initialise ()
 	{
 			return;
 		else
 			 = true;
 
        WSCFEnvironmentBean wscfEnvironmentBean = XTSPropertyManager.getWSCFEnvironmentBean();
        List<StringprotocolImplementations = wscfEnvironmentBean.getProtocolImplementations();
        if (protocolImplementations == null) {
            return;
        }
        ListIterator<Stringiterator = protocolImplementations.listIterator();
        List<Class<?>> contextProviderClasses =  new ArrayList<Class<?>>();
        List<Class<?>> hlsProviderClasses =  new ArrayList<Class<?>>();
        // look for protocol implementations
        
		while (iterator.hasNext())
		{
			String className = (Stringiterator.next();
            Class<?> clazz = null;
            try {
                clazz = this.getClass().getClassLoader().loadClass(className);
                ContextProvider contextProvider = clazz.getAnnotation(ContextProvider.class);
                if (contextProvider !=  null) {
                    contextProviderClasses.add(clazz);
                } else {
                    HLSProvider hlsProvider = clazz.getAnnotation(HLSProvider.class);
                    if (hlsProvider !=  null) {
                        hlsProviderClasses.add(clazz);
                    } else {
                        ..error_protocols_ProtocolManager_2(className);
                    }
                }
            } catch (ClassNotFoundException cnfe) {
                ..error_protocols_ProtocolManager_3(classNamecnfe);
            }
        }
        // we need to create the high level services before context factories since the latter need to
        // cross-reference the former
        
        for (Class<?> clazz : hlsProviderClasses) {
            String className = clazz.getName();
            try
            {
                HLSProvider hlsProvider = clazz.getAnnotation(HLSProvider.class);
                String serviceType = hlsProvider.serviceType();
                ..info_protocols_ProtocolManager_4(classNameserviceType);
                Object object = clazz.newInstance();
                .put(serviceTypeobject);
            } catch (InstantiationException ie) {
                ..error_protocols_ProtocolManager_5(classNameie);
            } catch (IllegalAccessException iae) {
                ..error_protocols_ProtocolManager_5(classNameiae);
            }
		}
        for (Class<?> clazz : contextProviderClasses) {
            String className = clazz.getName();
            try
            {
                ContextProvider contextProvider = clazz.getAnnotation(ContextProvider.class);
                if (contextProvider !=  null) {
                    String coordinationType = contextProvider.coordinationType();
                    ..info_protocols_ProtocolManager_4(classNamecoordinationType);
                    Object object = clazz.newInstance();
                    .put(coordinationTypeobject);
                }
            } catch (InstantiationException ie) {
                ..error_protocols_ProtocolManager_5(classNameie);
                ie.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            } catch (IllegalAccessException iae) {
                ..error_protocols_ProtocolManager_5(classNameiae);
                iae.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            }
		}
	}
	private HashMap _protocols = new HashMap();
	private boolean _initialised = false;
New to GrepCode? Check out our FAQ X