1 package org.codehaus.xfire.plexus.transport.xmpp;
2
3 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
4 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Disposable;
5 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
6 import org.codehaus.plexus.personality.plexus.lifecycle.phase.ServiceLocator;
7 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Serviceable;
8 import org.codehaus.xfire.XFire;
9 import org.codehaus.xfire.XFireRuntimeException;
10 import org.codehaus.xfire.transport.TransportManager;
11 import org.codehaus.xfire.xmpp.XMPPTransport;
12
13 /***
14 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
15 */
16 public class DefaultXMPPTransportService
17 implements Initializable, Serviceable, Disposable
18 {
19 private String username;
20 private String password;
21 private String server;
22 private ServiceLocator locator;
23 private XMPPTransport transport;
24
25 /***
26 * @throws Exception
27 */
28 public void initialize()
29 {
30 transport = new XMPPTransport(getXFire(), server, username, password);
31 getTransportManager().register(transport);
32 }
33
34 public XFire getXFire()
35 {
36 try
37 {
38 return (XFire) locator.lookup(XFire.ROLE);
39 }
40 catch (ComponentLookupException e)
41 {
42 throw new XFireRuntimeException("Couldn't find component.", e);
43 }
44 }
45
46 public TransportManager getTransportManager()
47 {
48 try
49 {
50 return (TransportManager) locator.lookup(TransportManager.ROLE);
51 }
52 catch (ComponentLookupException e)
53 {
54 throw new XFireRuntimeException("Couldn't find component.", e);
55 }
56 }
57
58 /***
59 * @see org.codehaus.plexus.personality.plexus.lifecycle.phase.Serviceable#service(org.codehaus.plexus.personality.plexus.lifecycle.phase.ServiceLocator)
60 */
61 public void service(ServiceLocator locator)
62 {
63 this.locator = locator;
64 }
65
66 public void dispose()
67 {
68 transport.dispose();
69 }
70 }