View Javadoc

1   package org.codehaus.xfire.plexus.config;
2   
3   import java.lang.reflect.Constructor;
4   
5   import org.codehaus.plexus.configuration.PlexusConfiguration;
6   import org.codehaus.xfire.annotations.AnnotationServiceFactory;
7   import org.codehaus.xfire.annotations.WebAnnotations;
8   import org.codehaus.xfire.annotations.commons.CommonsWebAttributes;
9   import org.codehaus.xfire.service.binding.BindingProvider;
10  import org.codehaus.xfire.service.binding.ObjectServiceFactory;
11  import org.codehaus.xfire.transport.TransportManager;
12  
13  public class AnnotationServiceConfigurator
14      extends ObjectServiceConfigurator
15  {
16  
17      public ObjectServiceFactory getServiceFactory(PlexusConfiguration config)
18          throws Exception
19      {
20          Class annotsClz = null;
21          Class clz = null;
22          String annots = config.getChild("annotations").getValue();
23          String factoryClass = config.getChild("serviceFactory").getValue();
24          
25          if (annots == null)
26          {
27              annotsClz = CommonsWebAttributes.class;
28          }
29          else
30          {
31              annotsClz = loadClass(annots);
32          }
33          
34          if (factoryClass == null)
35          {
36              clz = AnnotationServiceFactory.class;
37          }
38          else
39          {
40              clz = loadClass(factoryClass);
41          }
42          
43          Constructor con = 
44              clz.getConstructor( new Class[] {WebAnnotations.class, TransportManager.class, BindingProvider.class} );
45          
46          return (ObjectServiceFactory) 
47              con.newInstance(new Object[] {annotsClz.newInstance(), 
48                      getXFire().getTransportManager(),
49                      getBindingProvider(config) });
50      }
51  }