1 package org.codehaus.xfire.plexus;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
6 import org.codehaus.plexus.personality.plexus.lifecycle.phase.ServiceLocator;
7 import org.codehaus.xfire.fault.XFireFault;
8 import org.codehaus.xfire.service.Service;
9 import org.codehaus.xfire.service.binding.ObjectInvoker;
10
11 /***
12 * Invokes a Plexus service.
13 *
14 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
15 * @since Nov 18, 2004
16 */
17 public class ServiceInvoker
18 extends ObjectInvoker
19 {
20 private static Log logger = LogFactory.getLog(ServiceInvoker.class.getName());
21
22 private ServiceLocator locator;
23 private String role;
24
25 public ServiceInvoker( String role, ServiceLocator locator )
26 {
27 this.role = role;
28 this.locator = locator;
29 }
30
31 public Object createServiceObject(Service service)
32 throws XFireFault
33 {
34 try
35 {
36 return locator.lookup(role);
37 }
38 catch (ComponentLookupException e)
39 {
40 throw new XFireFault("Couldn't find service object.", e, XFireFault.RECEIVER);
41 }
42 }
43
44 }