1 package org.codehaus.xfire.loom; 2 3 import java.net.URL; 4 import java.util.Map; 5 6 import org.apache.avalon.framework.activity.Initializable; 7 import org.apache.avalon.framework.logger.AbstractLogEnabled; 8 import org.apache.avalon.framework.service.ServiceException; 9 import org.apache.avalon.framework.service.ServiceManager; 10 import org.apache.avalon.framework.service.Serviceable; 11 import org.codehaus.xfire.aegis.AegisBindingProvider; 12 import org.codehaus.xfire.aegis.type.TypeMappingRegistry; 13 import org.codehaus.xfire.service.Service; 14 import org.codehaus.xfire.service.ServiceFactory; 15 import org.codehaus.xfire.service.binding.ObjectServiceFactory; 16 import org.codehaus.xfire.transport.TransportManager; 17 18 /*** 19 * Default implementation of a ServiceFactory 20 * 21 * @author <a href="mailto:peter.royal@pobox.com">peter royal</a> 22 */ 23 public class DefaultServiceFactory 24 extends AbstractLogEnabled 25 implements ServiceFactory, Serviceable, Initializable 26 { 27 private TypeMappingRegistry m_typeMappingRegistry; 28 private TransportManager m_transportManager; 29 30 private ObjectServiceFactory m_factory; 31 32 public void service(final ServiceManager manager) 33 throws ServiceException 34 { 35 m_typeMappingRegistry = (TypeMappingRegistry) manager.lookup(TypeMappingRegistry.ROLE); 36 m_transportManager = (TransportManager) manager.lookup(TransportManager.ROLE); 37 } 38 39 protected final TransportManager getTransportManager() 40 { 41 return m_transportManager; 42 } 43 44 protected final TypeMappingRegistry getTypeMappingRegistry() 45 { 46 return m_typeMappingRegistry; 47 } 48 49 protected final void setFactory(final ObjectServiceFactory factory) 50 { 51 m_factory = factory; 52 } 53 54 public void initialize() 55 throws Exception 56 { 57 setFactory(new ObjectServiceFactory(m_transportManager, 58 new AegisBindingProvider(m_typeMappingRegistry))); 59 } 60 61 public Service create(final Class clazz) 62 { 63 return m_factory.create(clazz); 64 } 65 66 public void addIgnoredMethods(String className) 67 { 68 m_factory.addIgnoredMethods(className); 69 } 70 71 public Service create(final Class clazz, final URL wsdlUrl) 72 throws Exception 73 { 74 return m_factory.create(clazz, wsdlUrl); 75 } 76 77 public Service create(Class clazz, Map properties) 78 { 79 return m_factory.create(clazz, properties); 80 } 81 82 public Service create(Class clazz, String name, String namespace, Map properties) 83 { 84 return m_factory.create(clazz, name, namespace, properties); 85 } 86 }