operationdescriptionimpl.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 1,476 行 · 第 1/5 页
JAVA
1,476 行
public String getRequestWrapperTargetNamespace() {
// REVIEW: WSDL/Anno merge
return getAnnoRequestWrapperTargetNamespace();
}
/**
* For wrapped parameter style (based on the annotation and the WSDL), returns the wrapper
* value. For non-wrapped (i.e. bare) parameter style, returns null.
*
* @return
*/
public String getAnnoRequestWrapperTargetNamespace() {
if (!isWrappedParameters()) {
// A wrapper is only meaningful for wrapped parameters
return null;
}
if (requestWrapperTargetNamespace == null) {
if (getAnnoRequestWrapper() != null &&
!DescriptionUtils.isEmpty(getAnnoRequestWrapper().targetNamespace())) {
requestWrapperTargetNamespace = getAnnoRequestWrapper().targetNamespace();
} else {
// The default value for targetNamespace is the target namespace of the SEI. [JAX-WS Sec 7.3, p. 80]
requestWrapperTargetNamespace =
getEndpointInterfaceDescription().getTargetNamespace();
}
}
return requestWrapperTargetNamespace;
}
public String getRequestWrapperClassName() {
// REVIEW: WSDL/Anno merge
return getAnnoRequestWrapperClassName();
}
/**
* For wrapped parameter style (based on the annotation and the WSDL), returns the wrapper
* value. For non-wrapped (i.e. bare) parameter style, returns null.
*
* @return
*/
public String getAnnoRequestWrapperClassName() {
if (!isWrappedParameters()) {
// A wrapper is only meaningful for wrapped parameters
return null;
}
if (requestWrapperClassName == null) {
if (getAnnoRequestWrapper() != null &&
!DescriptionUtils.isEmpty(getAnnoRequestWrapper().className())) {
requestWrapperClassName = getAnnoRequestWrapper().className();
} else {
// There is no default for the RequestWrapper class name.
// In such cases the programming layer (JAXWS) may use a programming spec specific
// mechanism to find the class, build the class, or operate without the class.
requestWrapperClassName = null;
}
}
return requestWrapperClassName;
}
// ===========================================
// ANNOTATION: ResponseWrapper
// ===========================================
public ResponseWrapper getAnnoResponseWrapper() {
if (responseWrapperAnnotation == null) {
if (!isDBC() && seiMethod != null) {
responseWrapperAnnotation = seiMethod.getAnnotation(ResponseWrapper.class);
} else if (isDBC() && methodComposite != null) {
responseWrapperAnnotation = methodComposite.getResponseWrapperAnnot();
} else {
if (log.isDebugEnabled()) {
log.debug("Unable to get ResponseWrapper annotation");
}
}
}
return responseWrapperAnnotation;
}
public String getResponseWrapperLocalName() {
return getAnnoResponseWrapperLocalName();
}
/**
* For wrapped parameter style (based on the annotation and the WSDL), returns the wrapper
* value. For non-wrapped (i.e. bare) parameter style, returns null.
*
* @return
*/
public String getAnnoResponseWrapperLocalName() {
if (!isWrappedParameters()) {
// A wrapper is only meaningful for wrapped parameters
return null;
}
if (responseWrapperLocalName == null) {
if (getAnnoResponseWrapper() != null &&
!DescriptionUtils.isEmpty(getAnnoResponseWrapper().localName())) {
responseWrapperLocalName = getAnnoResponseWrapper().localName();
} else {
// The default value of localName is the value of operationQName as
// defined in the WebMethod annotation appended with "Response". [JAX-WS Sec. 7.4, p. 81]
responseWrapperLocalName = getAnnoWebMethodOperationName() + "Response";
}
}
return responseWrapperLocalName;
}
public String getResponseWrapperTargetNamespace() {
// REVIEW: WSDL/Anno merge
return getAnnoResponseWrapperTargetNamespace();
}
/**
* For wrapped parameter style (based on the annotation and the WSDL), returns the wrapper
* value. For non-wrapped (i.e. bare) parameter style, returns null.
*
* @return
*/
public String getAnnoResponseWrapperTargetNamespace() {
if (!isWrappedParameters()) {
// A wrapper is only meaningful for wrapped parameters
return null;
}
if (responseWrapperTargetNamespace == null) {
if (getAnnoResponseWrapper() != null &&
!DescriptionUtils.isEmpty(getAnnoResponseWrapper().targetNamespace())) {
responseWrapperTargetNamespace = getAnnoResponseWrapper().targetNamespace();
} else {
// The default value for targetNamespace is the target namespace of the SEI. [JAX-WS Sec 7.3, p. 80]
// TODO: Implement getting the TNS from the SEI
responseWrapperTargetNamespace =
getEndpointInterfaceDescription().getTargetNamespace();
}
}
return responseWrapperTargetNamespace;
}
public String getResponseWrapperClassName() {
// REVIEW: WSDL/Anno merge
return getAnnoResponseWrapperClassName();
}
/**
* For wrapped parameter style (based on the annotation and the WSDL), returns the wrapper
* value. For non-wrapped (i.e. bare) parameter style, returns null.
*
* @return
*/
public String getAnnoResponseWrapperClassName() {
if (!isWrappedParameters()) {
// A wrapper is only meaningful for wrapped parameters
return null;
}
if (responseWrapperClassName == null) {
if (getAnnoResponseWrapper() != null &&
!DescriptionUtils.isEmpty(getAnnoResponseWrapper().className())) {
responseWrapperClassName = getAnnoResponseWrapper().className();
} else {
// There is no default for the ResponseWrapper class name.
// In such cases the programming layer (JAXWS) may use a programming spec specific
// mechanism to find the class, build the class, or operate without the class.
responseWrapperClassName = null;
}
}
return responseWrapperClassName;
}
// ===========================================
// ANNOTATION: WebFault
// ===========================================
/*
* TODO some of the WebFault stuff should be moved to FaultDescription
*/
/*
* TODO: this will need revisited. The problem is that a WebFault is not mapped 1:1 to an
* OperationDescription. We should do a better job caching the information. For now, I'm
* following the getWebParam() pattern.
*
* This is gonna get complicated. One other thing to consider is that a method (opdesc) may declare
* several types of exceptions it throws
*
*/
public FaultDescription[] getFaultDescriptions() {
return faultDescriptions;
}
public FaultDescription resolveFaultByExceptionName(String exceptionClassName) {
if (faultDescriptions != null) {
for (FaultDescription fd : faultDescriptions) {
if (exceptionClassName.equals(fd.getExceptionClassName()))
return fd;
}
}
return null;
}
// ===========================================
// ANNOTATION: WebParam
// ===========================================
// Note that this annotation is handled by the ParameterDescripton.
// Methods are provided on OperationDescription as convenience methods.
public ParameterDescription[] getParameterDescriptions() {
return parameterDescriptions;
}
public ParameterDescription getParameterDescription(String parameterName) {
// TODO: Validation: For BARE paramaterUse, only a single IN our INOUT paramater and a single output (either return or OUT or INOUT) is allowed
// Per JSR-224, Sec 3.6.2.2, pg 37
ParameterDescription matchingParamDesc = null;
if (parameterName != null && !parameterName.equals("")) {
for (ParameterDescription paramDesc : parameterDescriptions) {
if (parameterName.equals(paramDesc.getParameterName())) {
matchingParamDesc = paramDesc;
break;
}
}
}
return matchingParamDesc;
}
public ParameterDescription getParameterDescription(int parameterNumber) {
return parameterDescriptions[parameterNumber];
}
public String[] getParamNames() {
// REVIEW: WSDL/Anno merge
return getAnnoWebParamNames();
}
public String[] getAnnoWebParamNames() {
if (webParamNames == null) {
ArrayList<String> buildNames = new ArrayList<String>();
ParameterDescription[] paramDescs = getParameterDescriptions();
for (ParameterDescription currentParamDesc : paramDescs) {
buildNames.add(currentParamDesc.getParameterName());
}
webParamNames = buildNames.toArray(new String[0]);
}
return webParamNames;
}
public String[] getAnnoWebParamTargetNamespaces() {
if (webParamTargetNamespace == null) {
ArrayList<String> buildTargetNS = new ArrayList<String>();
ParameterDescription[] paramDescs = getParameterDescriptions();
for (ParameterDescription currentParamDesc : paramDescs) {
buildTargetNS.add(currentParamDesc.getTargetNamespace());
}
webParamTargetNamespace = buildTargetNS.toArray(new String[0]);
}
return webParamTargetNamespace;
}
public String getAnnoWebParamTargetNamespace(String name) {
String returnTargetNS = null;
ParameterDescription paramDesc = getParameterDescription(name);
if (paramDesc != null) {
returnTargetNS = paramDesc.getTargetNamespace();
}
return returnTargetNS;
}
public Mode[] getAnnoWebParamModes() {
if (webParamMode == null) {
ArrayList<Mode> buildModes = new ArrayList<Mode>();
ParameterDescription[] paramDescs = getParameterDescriptions();
for (ParameterDescription currentParamDesc : paramDescs) {
// TODO: Consider new ParamDesc.Mode vs WebParam.Mode
buildModes.add(((ParameterDescriptionJava)currentParamDesc).getAnnoWebParamMode());
}
webParamMode = buildModes.toArray(new Mode[0]);
}
return webParamMode;
}
public boolean isAnnoWebParamHeader(String name) {
ParameterDescription paramDesc = getParameterDescription(name);
if (paramDesc != null) {
return paramDesc.isHeader();
}
return false;
}
// ===========================================
// ANNOTATION: WebResult
// ===========================================
public WebResult getAnnoWebResult() {
if (webResultAnnotation == null) {
if (!isDBC() && seiMethod != null) {
webResultAnnotation = seiMethod.getAnnotation(WebResult.class);
} else if (methodComposite != null) {
webResultAnnotation = methodComposite.getWebResultAnnot();
} else {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?