?? jsr181webannotations.java
字號:
package org.codehaus.xfire.annotations.jsr181;import java.lang.annotation.Annotation;import java.lang.reflect.Method;import java.util.Arrays;import java.util.Collection;import java.util.Collections;import java.util.HashMap;import java.util.Map;import javax.jws.HandlerChain;import javax.jws.Oneway;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;import org.codehaus.xfire.XFireRuntimeException;import org.codehaus.xfire.annotations.EnableMTOM;import org.codehaus.xfire.annotations.FaultHandlers;import org.codehaus.xfire.annotations.HandlerChainAnnotation;import org.codehaus.xfire.annotations.InHandlers;import org.codehaus.xfire.annotations.OutHandlers;import org.codehaus.xfire.annotations.ServiceProperties;import org.codehaus.xfire.annotations.ServiceProperty;import org.codehaus.xfire.annotations.WebAnnotations;import org.codehaus.xfire.annotations.WebMethodAnnotation;import org.codehaus.xfire.annotations.WebParamAnnotation;import org.codehaus.xfire.annotations.WebResultAnnotation;import org.codehaus.xfire.annotations.WebServiceAnnotation;import org.codehaus.xfire.annotations.soap.SOAPBindingAnnotation;import org.codehaus.xfire.soap.SoapConstants;public class Jsr181WebAnnotations implements WebAnnotations{ public boolean hasWebServiceAnnotation(Class clazz) { return clazz.isAnnotationPresent(WebService.class); } public WebServiceAnnotation getWebServiceAnnotation(Class clazz) { WebService webService = (WebService) clazz.getAnnotation(WebService.class); if (webService != null) { WebServiceAnnotation annotation = new WebServiceAnnotation(); annotation.setEndpointInterface(webService.endpointInterface()); annotation.setName(webService.name()); annotation.setServiceName(webService.serviceName()); annotation.setTargetNamespace(webService.targetNamespace()); annotation.setPortName(webService.portName()); annotation.setWsdlLocation(webService.wsdlLocation()); return annotation; } else { return null; } } public boolean hasWebMethodAnnotation(Method method) { return method.isAnnotationPresent(WebMethod.class); } public WebMethodAnnotation getWebMethodAnnotation(Method method) { WebMethod webMethod = (WebMethod) method.getAnnotation(WebMethod.class); if (webMethod != null) { WebMethodAnnotation annotation = new WebMethodAnnotation(); annotation.setAction(webMethod.action()); annotation.setOperationName(webMethod.operationName()); annotation.setExclude(webMethod.exclude()); return annotation; } else { return null; } } public boolean hasWebResultAnnotation(Method method) { return method.isAnnotationPresent(WebResult.class); } public WebResultAnnotation getWebResultAnnotation(Method method) { Annotation[][] annotations = method.getParameterAnnotations(); WebResult webResult = (WebResult) method.getAnnotation(WebResult.class); if (webResult != null) { WebResultAnnotation annot = new WebResultAnnotation(); annot.setName(webResult.name()); annot.setTargetNamespace(webResult.targetNamespace()); annot.setHeader(webResult.header()); annot.setPartName(webResult.partName()); return annot; } else { return null; } } public boolean hasWebParamAnnotation(Method method, int parameter) { Annotation[][] annotations = method.getParameterAnnotations(); if (parameter >= annotations.length) { return false; } else { for (int i = 0; i < annotations[parameter].length; i++) { Annotation annotation = annotations[parameter][i]; if (annotation.annotationType().equals(WebParam.class)) { return true; } } return false; } } public WebParamAnnotation getWebParamAnnotation(Method method, int parameter) { Annotation[][] annotations = method.getParameterAnnotations(); if (parameter >= annotations.length) { return null; } WebParam webParam = null; for (int i = 0; i < annotations[parameter].length; i++) { Annotation annotation = annotations[parameter][i]; if (annotation.annotationType().equals(WebParam.class)) { webParam = (WebParam) annotations[parameter][i]; break; } } if (webParam != null) { WebParamAnnotation annot = new WebParamAnnotation(); annot.setName(webParam.name()); annot.setTargetNamespace(webParam.targetNamespace()); annot.setHeader(webParam.header()); annot.setPartName(webParam.partName()); if (webParam.mode() == WebParam.Mode.IN) { annot.setMode(WebParamAnnotation.MODE_IN); } else if (webParam.mode() == WebParam.Mode.INOUT) { annot.setMode(WebParamAnnotation.MODE_INOUT); } else if (webParam.mode() == WebParam.Mode.OUT) { annot.setMode(WebParamAnnotation.MODE_OUT); } return annot; } else { return null; } } public boolean hasOnewayAnnotation(Method method) { return method.isAnnotationPresent(Oneway.class); } public boolean hasSOAPBindingAnnotation(Class clazz) { return clazz.isAnnotationPresent(SOAPBinding.class); } public SOAPBindingAnnotation getSOAPBindingAnnotation(Class clazz) { SOAPBinding binding = (SOAPBinding) clazz.getAnnotation(SOAPBinding.class); SOAPBindingAnnotation annot = null; if (binding != null) { annot = new SOAPBindingAnnotation(); if (binding.parameterStyle() == SOAPBinding.ParameterStyle.BARE) { annot.setParameterStyle(SOAPBindingAnnotation.PARAMETER_STYLE_BARE); } else if (binding.parameterStyle() == SOAPBinding.ParameterStyle.WRAPPED) { annot.setParameterStyle(SOAPBindingAnnotation.PARAMETER_STYLE_WRAPPED); } if (binding.style() == SOAPBinding.Style.DOCUMENT) { annot.setStyle(SOAPBindingAnnotation.STYLE_DOCUMENT); } else if (binding.style() == SOAPBinding.Style.RPC) { annot.setStyle(SOAPBindingAnnotation.STYLE_RPC); } if (binding.use() == SOAPBinding.Use.ENCODED) { annot.setUse(SOAPBindingAnnotation.USE_ENCODED); } else if (binding.use() == SOAPBinding.Use.LITERAL) { annot.setUse(SOAPBindingAnnotation.USE_LITERAL); } } return annot; } public boolean hasHandlerChainAnnotation(Class clazz) { return clazz.isAnnotationPresent(HandlerChain.class); } public HandlerChainAnnotation getHandlerChainAnnotation(Class clazz) { HandlerChain handlerChain = (HandlerChain) clazz.getAnnotation(HandlerChain.class); HandlerChainAnnotation annotation = null; if (handlerChain != null) { annotation = new HandlerChainAnnotation(handlerChain.file(), handlerChain.name()); } return annotation; } public Map getServiceProperties(Class clazz) { Map properties = new HashMap(); ServiceProperties serviceProperties = (ServiceProperties) clazz.getAnnotation(ServiceProperties.class); if(serviceProperties != null){ ServiceProperty[] props =serviceProperties.properties(); for(int i=0;i<props.length;i++){ ServiceProperty serviceProperty = props[i]; if(!"".equals(serviceProperty.value()) && serviceProperty.list().length>0 ){ throw new XFireRuntimeException("Service property cant have set both value and list values"); } if( !"".equals(serviceProperty.value()) ){ properties.put(serviceProperty.key(),serviceProperty.value()); }else{ properties.put(serviceProperty.key(), Arrays.asList(serviceProperty.list())); } } } ServiceProperty serviceProperty = (ServiceProperty) clazz.getAnnotation(ServiceProperty.class); if(serviceProperty !=null){ if( !"".equals(serviceProperty.value()) ){ properties.put(serviceProperty.key(),serviceProperty.value()); }else{ properties.put(serviceProperty.key(), Arrays.asList(serviceProperty.list())); } } if(clazz.getAnnotation(EnableMTOM.class)!= null){ properties.put(SoapConstants.MTOM_ENABLED,"true"); } return properties; } public Collection getFaultHandlers(Class clazz) { FaultHandlers faultHandlers = (FaultHandlers) clazz.getAnnotation(FaultHandlers.class); if( faultHandlers != null ){ return Arrays.asList(faultHandlers.handlers()); } return Collections.EMPTY_LIST; } public Collection getInHandlers(Class clazz) { InHandlers inHandlers = (InHandlers) clazz.getAnnotation(InHandlers.class); if( inHandlers != null ){ return Arrays.asList(inHandlers.handlers()); } return Collections.EMPTY_LIST; } public Collection getOutHandlers(Class clazz) { OutHandlers outHandlers = (OutHandlers) clazz.getAnnotation(OutHandlers.class); if( outHandlers != null ){ return Arrays.asList(outHandlers.handlers()); } return Collections.EMPTY_LIST; }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -