1 22 package org.apache.beehive.wsm.axis; 23 24 import java.lang.reflect.Field ; 25 import java.lang.reflect.Method ; 26 27 import org.apache.axis.MessageContext; 28 import org.apache.axis.providers.java.RPCProvider; 29 import org.apache.beehive.controls.api.bean.Control; 30 import org.apache.beehive.controls.api.context.ControlBeanContext; 31 import org.apache.beehive.controls.api.context.ControlContainerContext; 32 import org.apache.beehive.controls.api.context.ControlThreadContext; 33 34 39 public class ControlProvider extends RPCProvider { 40 41 protected Object makeNewServiceObject(MessageContext msgContext, String clsName) 42 throws Exception 43 { 44 Object obj = super.makeNewServiceObject(msgContext, clsName); 45 initializeControls(obj); 46 return obj; 47 } 48 49 private void initializeControls(Object obj) throws Exception { 50 51 Class cls = obj.getClass(); 52 53 for (Field field : cls.getFields()) { 55 if (null != field.getAnnotation(Control.class)) { 56 57 ControlContainerContext ccc = ControlThreadContext.getContext(); 59 if (null == ccc) { 60 throw new Exception ("no control container context found"); 61 } 62 Class clientInitializer = cls.getClassLoader().loadClass(cls.getName() + "ClientInitializer"); 63 Method init = clientInitializer.getMethod("initialize", ControlBeanContext.class, cls); 64 init.invoke(null, ccc, obj); 65 break; 66 } 67 } 68 } 69 } 70 | Popular Tags |