KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jfun > yan > xfire > XFireLoader


1 package jfun.yan.xfire;
2
3 import javax.servlet.ServletContext JavaDoc;
4
5 import org.codehaus.xfire.service.Service;
6
7 import jfun.yan.Components;
8 import jfun.yan.Container;
9 import jfun.yan.factory.Factory;
10 import jfun.yan.web.YanLoader;
11 import jfun.yan.xml.NutsProcessor;
12 import jfun.yan.xml.nut.NutDescriptor;
13 import jfun.yan.xml.nut.NutIntrospector;
14
15 /**
16  * A loader for loading xfire aware NutsProcessor object.
17  * <p>
18  * @author Ben Yu
19  * Feb 5, 2006 4:17:51 PM
20  */

21 public class XFireLoader extends YanLoader {
22   private final Object JavaDoc xfire_name;
23   private static final NutIntrospector introspector = new NutIntrospector();
24   protected void decorateProcessor(NutsProcessor processor, ServletContext JavaDoc ctxt) throws Exception JavaDoc {
25     super.decorateProcessor(processor, ctxt);
26     final NutDescriptor desc = introspector.getNutDescriptor(ServiceNut.class);
27     desc.setFactory(new Factory(){
28       public Object JavaDoc create(){
29         return new ServiceNut(Components.useKey(xfire_name));
30       }
31     });
32     processor.registerNut("service", desc);
33   }
34   public synchronized Container initContainer(ClassLoader JavaDoc cloader, ServletContext JavaDoc servletContext) {
35     final Container yan = super.initContainer(cloader, servletContext);
36     //eagerly instantiate all exported Service.
37
yan.getInstancesOfType(Service.class);
38     return yan;
39   }
40   /**
41    * To create a XFireLoader object.
42    * @param xfire_name the key of the xfire object.
43    */

44   public XFireLoader(Object JavaDoc xfire_name) {
45     this.xfire_name = xfire_name;
46   }
47 }
48
Popular Tags