1 package org.codehaus.xfire.plexus;
2
3 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
4 import org.codehaus.plexus.personality.plexus.lifecycle.phase.ServiceLocator;
5 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Serviceable;
6 import org.codehaus.xfire.DefaultXFire;
7 import org.codehaus.xfire.XFireRuntimeException;
8 import org.codehaus.xfire.service.ServiceRegistry;
9 import org.codehaus.xfire.transport.TransportManager;
10
11 /***
12 * An instance of XFire that is managed by Plexus.
13 *
14 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
15 * @since Sep 19, 2004
16 */
17 public class PlexusXFire
18 extends DefaultXFire
19 implements Serviceable
20 {
21 private ServiceLocator locator;
22
23 public PlexusXFire()
24 {
25 super();
26 }
27
28 public ServiceRegistry getServiceRegistry()
29 {
30 try
31 {
32 return (ServiceRegistry) locator.lookup(ServiceRegistry.ROLE);
33 }
34 catch (ComponentLookupException e)
35 {
36 throw new XFireRuntimeException("Couldn't find component.", e);
37 }
38 }
39
40 public TransportManager getTransportManager()
41 {
42 try
43 {
44 return (TransportManager) locator.lookup(TransportManager.ROLE);
45 }
46 catch (ComponentLookupException e)
47 {
48 throw new XFireRuntimeException("Couldn't find component.", e);
49 }
50 }
51
52 /***
53 * @see org.codehaus.plexus.personality.plexus.lifecycle.phase.Serviceable#service(org.codehaus.plexus.personality.plexus.lifecycle.phase.ServiceLocator)
54 */
55 public void service(ServiceLocator locator)
56 {
57 this.locator = locator;
58 }
59 }