1 package jfun.yan.xfire; 2 3 import java.util.ArrayList ; 4 import java.util.HashMap ; 5 import java.util.Iterator ; 6 import java.util.List ; 7 import java.util.Map ; 8 9 import jfun.yan.factory.Factory; 10 11 import org.codehaus.xfire.XFire; 12 import org.codehaus.xfire.aegis.AegisBindingProvider; 13 import org.codehaus.xfire.service.Service; 14 import org.codehaus.xfire.service.ServiceFactory; 15 import org.codehaus.xfire.service.binding.ObjectInvoker; 16 import org.codehaus.xfire.service.binding.ObjectServiceFactory; 17 import org.codehaus.xfire.soap.Soap11; 18 import org.codehaus.xfire.soap.SoapVersion; 19 import org.codehaus.xfire.wsdl11.builder.DefaultWSDLBuilderFactory; 20 21 22 26 public class ServiceBean { 27 private ServiceFactory serviceFactory; 28 29 private XFire xFire; 30 31 private String name; 32 33 private String namespace; 34 35 private Class serviceInterface; 36 37 private Factory servant; 38 private List inHandlers; 39 40 private List outHandlers; 41 42 private List faultHandlers; 43 44 private List schemas; 45 46 private Class implementationClass; 47 48 private List properties = new ArrayList (); 49 50 51 52 private SoapVersion soapVersion = Soap11.getInstance(); 53 54 private String use; 55 56 private String style; 57 58 private ScopePolicy scope; 59 60 public Service buildService(){ 61 62 if (serviceFactory == null) 63 { 64 serviceFactory = new ObjectServiceFactory(xFire.getTransportManager(), 65 new AegisBindingProvider()); 66 } 67 68 72 final Class intf = getServiceClass(); 73 final Map properties = new HashMap (); 75 properties.put(ObjectServiceFactory.SOAP_VERSION, soapVersion); 76 77 if (style != null) 78 properties.put(ObjectServiceFactory.STYLE, style); 79 if (use != null) 80 properties.put(ObjectServiceFactory.USE, use); 81 82 if (implementationClass != null) 83 { 84 properties.put(ObjectInvoker.SERVICE_IMPL_CLASS, implementationClass); 85 } 86 87 copyProperties(properties); 89 90 final Service xfireService = serviceFactory.create(intf, name, namespace, properties); 91 92 xFire.getServiceRegistry().register(xfireService); 94 95 final Factory servant = getServant(); 98 if (servant != null) { 99 xfireService.setInvoker(new FactoryInvoker(servant, scope)); 100 } 101 102 if (schemas != null) 103 { 104 ObjectServiceFactory osf = (ObjectServiceFactory) serviceFactory; 105 106 DefaultWSDLBuilderFactory wbf = 107 (DefaultWSDLBuilderFactory) osf.getWsdlBuilderFactory(); 108 wbf.setSchemaLocations(schemas); 109 } 110 111 if (xfireService.getInHandlers() == null) 113 xfireService.setInHandlers(getInHandlers()); 114 else if (getInHandlers() != null) 115 xfireService.getInHandlers().addAll(getInHandlers()); 116 117 if (xfireService.getOutHandlers() == null) 119 xfireService.setOutHandlers(getOutHandlers()); 120 else if (getOutHandlers() != null) 121 xfireService.getOutHandlers().addAll(getOutHandlers()); 122 123 if (xfireService.getFaultHandlers() == null) 125 xfireService.setFaultHandlers(getFaultHandlers()); 126 else if (getFaultHandlers() != null) 127 xfireService.getFaultHandlers().addAll(getFaultHandlers()); 128 return xfireService; 129 } 130 131 135 public Factory getServant(){ 136 return servant; 137 } 138 139 142 public void setServant(Factory servant) 143 { 144 this.servant = servant; 145 } 146 147 152 public Class getServiceClass() 153 { 154 return serviceInterface; 155 } 156 157 public void setServiceClass(Class serviceInterface) 158 { 159 this.serviceInterface = serviceInterface; 160 } 161 162 public void setServiceFactory(ServiceFactory serviceFactory) 163 { 164 this.serviceFactory = serviceFactory; 165 } 166 167 public ServiceFactory getServiceFactory() 168 { 169 return this.serviceFactory; 170 } 171 172 175 public void setName(String name) 176 { 177 this.name = name; 178 } 179 180 184 public void setNamespace(String namespace) 185 { 186 this.namespace = namespace; 187 } 188 189 public List getFaultHandlers() 190 { 191 return faultHandlers; 192 } 193 194 public void setFaultHandlers(List faultHandlers) 195 { 196 this.faultHandlers = faultHandlers; 197 } 198 199 public List getInHandlers() 200 { 201 return inHandlers; 202 } 203 204 public void setInHandlers(List inHandlers) 205 { 206 this.inHandlers = inHandlers; 207 } 208 209 public List getOutHandlers() 210 { 211 return outHandlers; 212 } 213 214 public void setOutHandlers(List outHandlers) 215 { 216 this.outHandlers = outHandlers; 217 } 218 219 public void setXfire(XFire xFire) 220 { 221 this.xFire = xFire; 222 } 223 224 public XFire getXfire() 225 { 226 return xFire; 227 } 228 229 public Class getImplementationClass() 230 { 231 return implementationClass; 232 } 233 234 public void setImplementationClass(Class implementationClass) 235 { 236 this.implementationClass = implementationClass; 237 } 238 239 public List getProperties() 240 { 241 return properties; 242 } 243 244 public void setProperties(List properties) 245 { 246 this.properties = properties; 247 } 248 249 250 251 public ScopePolicy getScope() { 252 return scope; 253 } 254 255 public void setScope(ScopePolicy scope) { 256 this.scope = scope; 257 } 258 259 public String getStyle() 260 { 261 return style; 262 } 263 264 public void setStyle(String style) 265 { 266 this.style = style; 267 } 268 269 public String getUse() 270 { 271 return use; 272 } 273 274 public void setUse(String use) 275 { 276 this.use = use; 277 } 278 279 public SoapVersion getSoapVersion() 280 { 281 return soapVersion; 282 } 283 284 public void setSoapVersion(SoapVersion soapVersion) 285 { 286 this.soapVersion = soapVersion; 287 } 288 289 public List getSchemas() 290 { 291 return schemas; 292 } 293 294 public void setSchemas(List schemas) 295 { 296 this.schemas = schemas; 297 } 298 299 protected void copyProperties(Map properties){ 300 for (Iterator iter = getProperties().iterator(); iter.hasNext();) { 301 Object [] keyval = (Object []) iter.next(); 302 String key = (String ) keyval[0]; 303 Object value = keyval[1]; 304 properties.put(key, value); 305 } 306 } 307 308 } | Popular Tags |