Author: rfeng
Date: Mon Apr 27 16:25:48 2009
New Revision: 769047
URL: http://svn.apache.org/viewvc?rev=769047&view=rev
Log:
Make sure the default mode is set to INOUT if the type is Holder.class
Modified:
tuscany/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
Modified:
tuscany/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java?rev=769047&r1=769046&r2=769047&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
Mon Apr 27 16:25:48 2009
@@ -95,13 +95,19 @@
}
}
- private ParameterMode getParameterMode(WebParam.Mode mode) {
- if (mode == Mode.INOUT) {
+ private ParameterMode getParameterMode(Class<?> javaType, WebParam.Mode
mode) {
+ if (javaType != Holder.class) {
+ return ParameterMode.IN;
+ }
+ if (mode == Mode.IN) {
+ return ParameterMode.IN;
+ } else if (mode == Mode.INOUT) {
return ParameterMode.INOUT;
} else if (mode == Mode.OUT) {
return ParameterMode.OUT;
} else {
- return ParameterMode.IN;
+ // null
+ return ParameterMode.INOUT;
}
}
@@ -173,9 +179,10 @@
List<ParameterMode> parameterModes = operation.getParameterModes();
+ Class<?>[] parameterTypes = method.getParameterTypes();
// Handle BARE mapping
if (bare) {
- for (int i = 0; i < method.getParameterTypes().length; i++) {
+ for (int i = 0; i < parameterTypes.length; i++) {
WebParam param = getAnnotation(method, i, WebParam.class);
if (param != null) {
String ns = getValue(param.targetNamespace(), tns);
@@ -186,7 +193,9 @@
if (logical instanceof XMLType) {
((XMLType)logical).setElementName(element);
}
- parameterModes.set(i, getParameterMode(param.mode()));
+ parameterModes.set(i,
getParameterMode(parameterTypes[i], param.mode()));
+ } else {
+ parameterModes.set(i,
getParameterMode(parameterTypes[i], null));
}
}
WebResult result = method.getAnnotation(WebResult.class);
@@ -281,7 +290,7 @@
QName outputWrapper =
outputWrapperDT.getLogical().getElementName();
List<ElementInfo> inputElements = new ArrayList<ElementInfo>();
- for (int i = 0; i < method.getParameterTypes().length; i++) {
+ for (int i = 0; i < parameterTypes.length; i++) {
WebParam param = getAnnotation(method, i, WebParam.class);
ns = param != null ? param.targetNamespace() : "";
// Default to "" for doc-lit-wrapped && non-header
@@ -297,7 +306,9 @@
}
inputElements.add(new ElementInfo(element, new
TypeInfo(type, false, null)));
if (param != null) {
- parameterModes.set(i, getParameterMode(param.mode()));
+ parameterModes.set(i,
getParameterMode(parameterTypes[i], param.mode()));
+ } else {
+ parameterModes.set(i,
getParameterMode(parameterTypes[i], null));
}
}