You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ba...@apache.org on 2006/10/13 15:46:35 UTC
svn commit: r463680 - in /webservices/axis2/trunk/java/modules/jaxws:
src/org/apache/axis2/jaxws/client/proxy/
src/org/apache/axis2/jaxws/description/ src/org/apache/axis2/jaxws/i18n/
src/org/apache/axis2/jaxws/marshaller/ src/org/apache/axis2/jaxws/ma...
Author: barrettj
Date: Fri Oct 13 06:46:31 2006
New Revision: 463680
URL: http://svn.apache.org/viewvc?view=rev&rev=463680
Log:
AXIS2-1348
Contributed by Nikhil Thaker
Modified:
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodParameter.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLSpineImpl.java
webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/services.xml
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/doclitwrap.wsdl
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrap.java
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java Fri Oct 13 06:46:31 2006
@@ -356,17 +356,13 @@
this.seiClazz = seiClazz;
}
private void initialize(){
- SOAPBinding.Style styleOnSEI = endpointDesc.getEndpointInterfaceDescription().getSoapBindingStyle();
- SOAPBinding.Style styleOnMethod = operationDesc.getSoapBindingStyle();
- if(styleOnMethod!=null && styleOnSEI!=styleOnMethod){
- throw ExceptionFactory.makeWebServiceException(Messages.getMessage("proxyErr2"));
- }
+ SOAPBinding.Style style = operationDesc.getSoapBindingStyle();
MethodMarshallerFactory cf = (MethodMarshallerFactory) FactoryRegistry.getFactory(MethodMarshallerFactory.class);
- if(styleOnSEI == SOAPBinding.Style.DOCUMENT){
+ if(style == SOAPBinding.Style.DOCUMENT){
methodMarshaller = createDocLitMethodMarshaller(cf);
}
- if(styleOnSEI == SOAPBinding.Style.RPC){
+ if(style == SOAPBinding.Style.RPC){
methodMarshaller = createRPCLitMethodMarshaller(cf);
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java Fri Oct 13 06:46:31 2006
@@ -549,7 +549,14 @@
}
return webParamMode;
}
-
+ public boolean isWebParamHeader(String name){
+ ParameterDescription paramDesc = getParameterDescription(name);
+ if (paramDesc != null) {
+ return paramDesc.getWebParamHeader();
+ }
+ return false;
+ }
+
// ===========================================
// ANNOTATION: WebResult
// ===========================================
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties Fri Oct 13 06:46:31 2006
@@ -100,7 +100,7 @@
JavaDispErr2=Unable to load service implementation class {0}.
InvalidWebParams=Invalid webParams found, Number of webparams defined does not match the input method parameters.
AsyncListenerErr1=AxisCallback Object cannot be null, Internal error.
-DocLitProxyHandlerErr1=As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter.
+DocLitProxyHandlerErr1=As per WS-I compliance, Multi part WSDL with more than one body part not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter.
DocLitProxyHandlerErr2 = Method Input parameter for NON Wrapped Request cannot be null.
DocLitProxyHandlerErr3=Method parameter type javax.xml.ws.AsyncHandler should only be used with Async Callback operations, method is Async if it returns a Future<?> and endswith letters 'Async'.
DocLitProxyHandlerErr4=WebParam annotation's Mode cannot be IN for input parameter of type Holder.
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodParameter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodParameter.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodParameter.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodParameter.java Fri Oct 13 06:46:31 2006
@@ -32,6 +32,8 @@
private Class type = null;
private Class actualType = null; //If parameter is a GenericType, this property stores the actual Type
private boolean isHolder = false;
+ private String targetNamespace = null;
+ private boolean isHeader = false;
public MethodParameter(String name, Object value, Mode mode) {
super();
@@ -39,11 +41,13 @@
this.value = value;
this.mode = mode;
}
- public MethodParameter(String name, Object value, Mode mode, Class type, Class actualType, boolean isHolder) {
+ public MethodParameter(String name, Object value, Mode mode, Class type, Class actualType, boolean isHolder, String targetNamespace, boolean isHeader) {
this(name,value,mode);
this.type = type;
this.isHolder = isHolder;
this.actualType = actualType;
+ this.targetNamespace = targetNamespace;
+ this.isHeader = isHeader;
}
public String getName() {
return name;
@@ -71,5 +75,17 @@
}
public void setHolder(boolean isHolder) {
this.isHolder = isHolder;
+ }
+ public String getTargetNamespace() {
+ return targetNamespace;
+ }
+ public void setTargetNamespace(String targetNamespace) {
+ this.targetNamespace = targetNamespace;
+ }
+ public boolean isHeader() {
+ return isHeader;
+ }
+ public void setHeader(boolean isHeader) {
+ this.isHeader = isHeader;
}
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java Fri Oct 13 06:46:31 2006
@@ -60,23 +60,47 @@
public Object demarshalResponse(Message message, Object[] inputArgs) throws IllegalAccessException, InstantiationException, ClassNotFoundException, JAXBWrapperException, JAXBException, XMLStreamException, MessageException{
Class returnType = getReturnType();
- String resultName = operationDesc.getWebResultName();
- Object bo = null;
- if(returnType.getName().equals("void")){
- ArrayList<MethodParameter> mps = toInputMethodParameters(inputArgs);
- for(MethodParameter mp:mps){
- if(mp.isHolder()){
- returnType = mp.getActualType();
- }
+ ArrayList<Object> holderArgs = toArrayList(inputArgs);
+ ArrayList<MethodParameter> mps = new ArrayList<MethodParameter>();
+ mps = toInputMethodParameters(inputArgs);
+ ArrayList<MethodParameter> holdermps = new ArrayList<MethodParameter>(mps);
+ int index =0;
+ //Remove everything except holders from method parameters and input arguments.
+ for(MethodParameter mp: mps){
+ if(!mp.isHolder()){
+ holdermps.remove(mp);
+ holderArgs.remove(mp.getValue());
}
-
+ index++;
}
- bo = createBusinessObject(returnType, message);
- //In a bare case there should not be a situation where there is a return type and a holder.
- createResponseHolders(bo, inputArgs, true);
-
- return bo;
+ mps = null;
+ if(holdermps.size() == 0 && returnType.getName().equals("void")){
+ //No holders and return type void example --> public void someMethod() I will return null for this case.
+ //doNothing as there is nothing to return.
+
+ return null;
+ }
+ else if(holdermps.size() == 0 && !returnType.getName().equals("void")){
+ //No holders but a return type example --> public ReturnType someMethod()
+ Object bo = createBusinessObject(returnType, message);
+ return bo;
+
+ }
+ else if(holdermps.size()>0 && returnType.getName().equals("void")){
+ //Holders found and no return type example --> public void someMethod(Holder<AHolder>)
+ createResponseHolders(holdermps, holderArgs, message);
+
+ }
+ else{
+ //Holders found and return type example --> public ReturnType someMethod(Holder<AHolder>)
+ //Note that SEI implementation will wrap return type in a holder if method has a return type and input param as holder.
+ //WSGen and WsImport Generate Holders with return type as one of the Holder JAXBObject property, if wsdl schema forces a holder and a return type.
+ createResponseHolders(holdermps, holderArgs, message);
+ Object bo = createBusinessObject(returnType, message);
+ return bo;
+ }
+ return null;
}
/* (non-Javadoc)
@@ -90,31 +114,23 @@
if(inputParams.size() == 0){
return null;
}
- if(inputParams.size() > SIZE){
- if (log.isDebugEnabled()) {
- log.debug("As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter");
- }
- throw ExceptionFactory.makeWebServiceException(Messages.getMessage("DocLitProxyHandlerErr1"));
- }
-
- Class jaxbClass = inputParams.get(0);
-
- Object jaxbObject = createBusinessObject(jaxbClass, message);
-
- if (log.isDebugEnabled()) {
+ ArrayList<Object> objectList = new ArrayList<Object>();
+ int index =0;
+ ArrayList<MethodParameter> mps = toInputMethodParameter(message);
+ if (log.isDebugEnabled()) {
log.debug("reading input method parameters");
}
- Class rawType = operationDesc.getSEIMethod().getParameterTypes()[0];
-
- if(isHolder(rawType)){
-
- return new Object[]{createHolder(rawType, jaxbObject)};
- }
- else{
- return new Object[]{jaxbObject};
- }
-
-
+ for(MethodParameter mp:mps){
+
+ if(mp.isHolder()){
+ Object holderObject = mp.getValue();
+ objectList.add(holderObject);
+ }
+ else{
+ objectList.add(mp.getValue());
+ }
+ }
+ return objectList.toArray();
}
/* (non-Javadoc)
@@ -124,46 +140,54 @@
public Message marshalResponse(Object returnObject, Object[] holderObjects) throws ClassNotFoundException, JAXBException, MessageException, JAXBWrapperException, XMLStreamException, InstantiationException, IllegalAccessException{
// Response wrapper is basically the return type. so the return object is a jaxbObject. If there is a holder objects then that is the responsewrapper.
Class wrapperClazz = getReturnType();
- String wrapperClazzName = wrapperClazz.getName();
- String webResult = operationDesc.getWebResultName();
+ String wrapperClazzName = operationDesc.getWebResultName();
+ if(wrapperClazzName == null || wrapperClazzName.trim().length() == 0){
+ wrapperClazzName = wrapperClazz.getName();
+ }
+ String wrapperTNS = operationDesc.getWebResultTargetNamespace();
- //create all holders list
- ArrayList<Object> objectList = new ArrayList<Object>();
- if(holderObjects!=null){
- objectList = toArrayList(holderObjects);
- for(Object obj:holderObjects){
- if(!(isHolder(obj))){
- objectList.remove(obj);
- }
+ ArrayList<MethodParameter> mps = new ArrayList<MethodParameter>();
+ mps = toInputMethodParameters(holderObjects);
+ ArrayList<MethodParameter> holdersNreturnObject = new ArrayList<MethodParameter>(mps);
+
+ //Remove everything except holders
+ for(MethodParameter mp: mps){
+ if(!mp.isHolder()){
+ holdersNreturnObject.remove(mp);
}
}
- if(objectList.size()> SIZE){
- //More than one holder input parameter found, this is a WS-I violation.
- if (log.isDebugEnabled()) {
- log.debug("As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter");
- }
- throw ExceptionFactory.makeWebServiceException(Messages.getMessage("DocLitProxyHandlerErr1"));
- }
+
+ mps = null;
Message message = null;
- ArrayList<MethodParameter> mps = new ArrayList<MethodParameter>();
- if(objectList.size() == 0 && wrapperClazz.getName().equals("void")){
+
+ if(holdersNreturnObject.size() == 0 && wrapperClazz.getName().equals("void")){
//No holders and return type void example --> public void someMethod() I will return empty ResponseWrapper in message body for this case.
//doNothing as there is nothing to wrap
+
+ message = createEmptyMessage();
}
- if(objectList.size() == 0 && !wrapperClazz.getName().equals("void")){
+ else if(holdersNreturnObject.size() == 0 && !wrapperClazz.getName().equals("void")){
//No holders but a return type example --> public ReturnType someMethod()
+ MethodParameter mp = new MethodParameter(wrapperClazzName,returnObject,null, wrapperClazz, wrapperClazz, false, wrapperTNS, false);
+ holdersNreturnObject.add(mp);
+ message = createMessage(holdersNreturnObject);
+
+ }
+ else if(holdersNreturnObject.size()>0 && wrapperClazz.getName().equals("void")){
+ //Holders found and no return type example --> public void someMethod(Holder<AHolder>)
+ message = createMessage(holdersNreturnObject);
- message = createMessage(returnObject, wrapperClazz, wrapperClazzName);
}
else{
- //Holders found and return type or no return type. example --> public ReturnType someMethod(Holder<AHolder>) or public void someMethod(Holder<AHolder>)
+ //Holders found and return type example --> public ReturnType someMethod(Holder<AHolder>)
//Note that SEI implementation will wrap return type in a holder if method has a return type and input param as holder.
//WSGen and WsImport Generate Holders with return type as one of the Holder JAXBObject property, if wsdl schema forces a holder and a return type.
- ArrayList<Class> holderType = getInputTypes();
- Holder holder = (Holder)objectList.get(0);
- Object value = holder.value;
- message = createMessage(value, holderType.get(0), holderType.get(0).getName());
+
+ MethodParameter mp = new MethodParameter(wrapperClazzName,returnObject,null, wrapperClazz, wrapperClazz, false, wrapperTNS, false);
+ holdersNreturnObject.add(mp);
+ message = createMessage(holdersNreturnObject);
+
}
return message;
@@ -176,38 +200,29 @@
@Override
public Message marshalRequest(Object[] objects) throws IllegalAccessException, InstantiationException, ClassNotFoundException, JAXBWrapperException, JAXBException, MessageException, javax.xml.stream.XMLStreamException{
-
ArrayList<MethodParameter> mps = toInputMethodParameters(objects);
-
//WSDL wrapped and running wsImport with non-wrap binding or wsdl un-Wrapped and running wsImport with no binding, EITHER WAYS
//there can be only 0 or 1 Body parts as per WS-I.
if(mps.size()> SIZE){
- if (log.isDebugEnabled()) {
- log.debug("As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter");
- }
- throw ExceptionFactory.makeWebServiceException(Messages.getMessage("DocLitProxyHandlerErr1"));
+ int numberOfBodyPart =0;
+ for(MethodParameter mp:mps){
+ if(!mp.isHeader()){
+ numberOfBodyPart++;
+ }
+ }
+ if(numberOfBodyPart > SIZE){
+ if (log.isDebugEnabled()) {
+ log.debug("As per WS-I compliance, Multi part WSDL with more than one body part not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter");
+ }
+ throw ExceptionFactory.makeWebServiceException(Messages.getMessage("DocLitProxyHandlerErr1"));
+ }
}
//Lets handle case where there is one message part or one input parameter
Message message = null;
+
if(mps.size() !=0){
- Object requestObject = null;
- String requestObjectName = null;
- Class requestObjectType = null;
- JAXBContext ctx = null;
- for(MethodParameter mp : mps){
- requestObject = mp.getValue();
- requestObjectName = mp.getName();
- requestObjectType = mp.getActualType();
- if(requestObject == null){
- if (log.isDebugEnabled()) {
- log.debug("Method Input parameter for NON Wrapped Request cannot be null");
- }
- throw ExceptionFactory.makeWebServiceException(Messages.getMessage("DocLitProxyHandlerErr2"));
- }
- }
-
- message = createMessage(requestObject, requestObjectType, requestObjectName);
+ message = createMessage(mps);
}
//no message part case or no input parameter
if(mps.size() == 0){
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java Fri Oct 13 06:46:31 2006
@@ -117,6 +117,7 @@
public Message marshalResponse(Object returnObject, Object[] holderObjects)throws ClassNotFoundException, JAXBException, MessageException, JAXBWrapperException, XMLStreamException, InstantiationException, IllegalAccessException {
Class wrapperClazz = null;
String wrapperClazzName = operationDesc.getResponseWrapperClassName();
+ String wrapperTNS = operationDesc.getResponseWrapperTargetNamespace();
String webResult = operationDesc.getWebResultName();
//TODO Move this to Operation Description.
if(wrapperClazzName == null || (wrapperClazzName!=null && wrapperClazzName.length()==0)){
@@ -158,7 +159,7 @@
Object wrapper = wrapperTool.wrap(wrapperClazz,
wrapperClazzName, mps);
- Message message = createMessage(wrapper, wrapperClazz, wrapperClazzName);
+ Message message = createMessage(wrapper, wrapperClazz, wrapperClazzName, wrapperTNS);
return message;
}
@@ -172,6 +173,7 @@
String className = operationDesc.getRequestWrapperClassName();
Class wrapperClazz = loadClass(className);
String localName = operationDesc.getRequestWrapperLocalName();
+ String wrapperTNS = operationDesc.getRequestWrapperTargetNamespace();
//Get Name Value pair for input parameter Objects, skip AsyncHandler and identify Holders.
ArrayList<MethodParameter> methodParameters = toInputMethodParameters(objects);
@@ -185,7 +187,7 @@
log.debug("JAXBWrapperTool wrapped following propertes :");
}
- Message message = createMessage(jaxbObject, wrapperClazz, localName);
+ Message message = createMessage(jaxbObject, wrapperClazz, localName, wrapperTNS);
return message;
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java Fri Oct 13 06:46:31 2006
@@ -153,14 +153,14 @@
}
ArrayList<Object> paramValues = toArrayList(holderObjects);
+ ArrayList<MethodParameter> mps = createMethodParameters(paramNames, paramValues, paramMode, paramTypes, actualTypes);
if(webResultObject!=null){
- paramValues.add(webResultObject);
- paramNames.add(operationDesc.getWebResultName());
- //dummy mode for return object
- paramMode.add(Mode.IN);
+ MethodParameter outputResult = new MethodParameter(operationDesc.getWebResultName(), webResultObject, null);
+ mps.add(outputResult);
}
+
//lets create name value pair.
- return createMethodParameters(paramNames, paramValues, paramMode, paramTypes, actualTypes);
+ return mps;
}
@@ -214,6 +214,12 @@
ArrayList<Class> actualTypes = getInputTypes();
int i =0;
+ //if no webParam defined then lets get default names.
+ if(paramNames.size() == 0 && paramTypes.size()>0){
+ while(i< paramTypes.size()){
+ paramNames.add(DEFAULT_ARG + i++);
+ }
+ }
if(paramNames.size() != paramValues.size()){
throw ExceptionFactory.makeWebServiceException(Messages.getMessage("InvalidWebParams"));
}
@@ -223,6 +229,53 @@
return mps;
}
+ protected ArrayList<MethodParameter> toInputMethodParameter(Message message)throws IllegalAccessException, InstantiationException, ClassNotFoundException, MessageException, XMLStreamException, JAXBException{
+ ArrayList<MethodParameter> mps = new ArrayList<MethodParameter>();
+ if(message == null){
+ return null;
+ }
+ ArrayList<String> paramNames = new ArrayList<String>();
+ paramNames =toArrayList(operationDesc.getWebParamNames());
+
+ //Get all modes for params
+ ArrayList<Mode> paramMode = new ArrayList<Mode>();
+ paramMode = toArrayList(operationDesc.getWebParamModes());
+
+ Method seiMethod = operationDesc.getSEIMethod();
+
+ Class[] clazz = seiMethod.getParameterTypes();
+ ArrayList<Class> paramTypes = toArrayList(clazz);
+
+ ArrayList<Class> actualTypes = getInputTypes();
+
+ int i =0;
+ //if no webParam defined then lets get default names.
+ if(paramNames.size() == 0 && paramTypes.size()>0){
+ while(i< paramTypes.size()){
+ paramNames.add(DEFAULT_ARG + i++);
+ }
+ }
+ i =0;
+ ArrayList<Object> paramValues = new ArrayList<Object>();
+ for(String paramName:paramNames){
+ String paramTNS = operationDesc.getWebParamTargetNamespace(paramName);
+ boolean isHeader = operationDesc.isWebParamHeader(paramName);
+ Object bo = null;
+ if(isHeader){
+ bo = createBOFromHeaderBlock(actualTypes.get(i), message, paramTNS, paramName);
+ }
+ else{
+ bo = createBOFromBodyBlock(actualTypes.get(i),message);
+ }
+ paramValues.add(bo);
+ i++;
+ }
+ //lets create name value pair.
+ mps = createMethodParameters(paramNames, paramValues, paramMode, paramTypes, actualTypes);
+
+ return mps;
+ }
+
protected ArrayList<Class> getInputTypes(){
Method seiMethod = operationDesc.getSEIMethod();
ArrayList<Class> paramTypes = new ArrayList<Class>();
@@ -233,12 +286,6 @@
Class rawClazz = (Class)pType.getRawType();
Class actualClazz = (Class)pType.getActualTypeArguments()[0];
paramTypes.add(actualClazz);
- /*
- if(rawClazz.isAssignableFrom(Holder.class)){
- Class actualClazz = (Class)pType.getActualTypeArguments()[0];
- paramTypes.add(actualClazz);
- }
- */
}
else{
Class formalClazz= (Class)type;
@@ -273,7 +320,7 @@
}
- protected Block createJAXBBlock(String name, Object jaxbObject, JAXBContext context) throws MessageException{
+ protected Block createJAXBBlock(String name, Object jaxbObject, JAXBContext context, String targetNamespace) throws MessageException{
JAXBIntrospector introspector = context.createJAXBIntrospector();
if(introspector.isElement(jaxbObject)){
@@ -282,7 +329,7 @@
else{
//Create JAXBElement then use that to create JAXBBlock.
Class clazz = jaxbObject.getClass();
- JAXBElement<Object> element = new JAXBElement<Object>(new QName(name), clazz, jaxbObject);
+ JAXBElement<Object> element = new JAXBElement<Object>(new QName(targetNamespace, name), clazz, jaxbObject);
JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);
return factory.createFrom(element,context ,null);
}
@@ -355,7 +402,8 @@
int i=0;
for(String paramName:paramNames){
Object paramValue = paramValues.get(i);
-
+ String paramTNS = operationDesc.getWebParamTargetNamespace(paramName);
+ boolean isHeader = operationDesc.isWebParamHeader(paramName);
//initialize to default value.
Mode paramMode = Mode.IN;
if(paramModes !=null && paramModes.size() >0){
@@ -377,25 +425,31 @@
//Identify Holders and get Holder Values, this if condition will mostly execute during client side call
if(isHolder(paramValue) && isHolder(paramType)){
Object holderValue = getHolderValue(paramMode, paramValue);
- mp = new MethodParameter(paramName, holderValue, paramMode, paramType, actualType, true);
+ mp = new MethodParameter(paramName, holderValue, paramMode, paramType, actualType, true, paramTNS, isHeader);
}
//Identify that param value is not Holders however if the method parameter is holder type and create Holder, this will mostly be called during server side call
else if(!isHolder(paramValue) && isHolder(paramType)){
Holder<Object> holder = createHolder(paramType, paramValue);
- mp=new MethodParameter(paramName, holder, paramMode, paramType, actualType, true);
+ mp=new MethodParameter(paramName, holder, paramMode, paramType, actualType, true, paramTNS, isHeader);
}
else{
- mp = new MethodParameter(paramName, paramValue, paramMode, paramType, actualType, false);
+ mp = new MethodParameter(paramName, paramValue, paramMode, paramType, actualType, false, paramTNS, isHeader);
}
}
if(paramType == null){
if(isHolder(paramValue)){
Object holderValue = getHolderValue(paramMode, paramValue);
- mp = new MethodParameter(paramName, holderValue, paramMode);
+ mp = new MethodParameter(paramName, holderValue, paramMode);
+ mp.setHolder(true);
+ mp.setTargetNamespace(paramTNS);
+ mp.setHeader(isHeader);
}
else{
mp = new MethodParameter(paramName, paramValues, paramMode);
+ mp.setHolder(false);
+ mp.setTargetNamespace(paramTNS);
+ mp.setHeader(isHeader);
}
}
mps.add(mp);
@@ -461,7 +515,60 @@
return null;
}
- protected Message createMessage(Object jaxbObject, Class jaxbClazz, String jaxbClassName)throws JAXBException, MessageException, XMLStreamException{
+ protected Message createMessage(ArrayList<MethodParameter> mps) throws JAXBException, MessageException, XMLStreamException{
+ Block block = null;
+ Object requestObject = null;
+ String requestObjectName = null;
+ String requestTNS = null;
+ Class requestObjectType = null;
+ boolean isHeader =false;
+
+ MessageFactory mf = (MessageFactory)FactoryRegistry.getFactory(MessageFactory.class);
+ Message m = mf.create(protocol);
+
+ for(MethodParameter mp : mps){
+ requestObject = mp.getValue();
+ requestObjectName = mp.getName();
+ requestObjectType = mp.getActualType();
+ requestTNS = mp.getTargetNamespace();
+ isHeader = mp.isHeader();
+ if(!isHeader && requestObject == null){
+ if (log.isDebugEnabled()) {
+ log.debug("Method Input parameter for NON Wrapped Request cannot be null");
+ }
+ throw ExceptionFactory.makeWebServiceException(Messages.getMessage("DocLitProxyHandlerErr2"));
+ }
+ JAXBContext ctx = createJAXBContext(requestObjectType);
+ if (log.isDebugEnabled()) {
+ log.debug("Attempting to create Block");
+ }
+ if(isXmlRootElementDefined(requestObjectType)){
+ block = createJAXBBlock(requestObject, ctx);
+ }
+ else{
+
+ block = createJAXBBlock(requestObjectName, requestObject, ctx, requestTNS);
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("JAXBBlock Created");
+ }
+ if(isHeader){
+ m.setHeaderBlock(requestTNS, requestObjectName, block);
+ if (log.isDebugEnabled()) {
+ log.debug("Header Block Created");
+ }
+ }
+ else{
+ m.setBodyBlock(0,block);
+ if (log.isDebugEnabled()) {
+ log.debug("Body Block Created");
+ }
+ }
+ }
+ return m;
+ }
+
+ protected Message createMessage(Object jaxbObject, Class jaxbClazz, String jaxbClassName, String targetNamespace)throws JAXBException, MessageException, XMLStreamException{
Block bodyBlock = null;
JAXBContext ctx = createJAXBContext(jaxbClazz);
if (log.isDebugEnabled()) {
@@ -471,7 +578,7 @@
bodyBlock = createJAXBBlock(jaxbObject, ctx);
}
else{
- bodyBlock = createJAXBBlock(jaxbClassName, jaxbObject, ctx);
+ bodyBlock = createJAXBBlock(jaxbClassName, jaxbObject, ctx, targetNamespace);
}
if (log.isDebugEnabled()) {
log.debug("JAXBBlock Created");
@@ -483,6 +590,7 @@
m.setBodyBlock(0,bodyBlock);
return m;
}
+
protected Message createEmptyMessage()throws JAXBException, MessageException, XMLStreamException{
Block emptyBodyBlock = createEmptyBodyBlock();
MessageFactory mf = (MessageFactory)FactoryRegistry.getFactory(MessageFactory.class);
@@ -491,6 +599,20 @@
return m;
}
+ protected Object createBOFromHeaderBlock(Class jaxbClazz, Message message, String targetNamespace, String localPart) throws JAXBException, MessageException, XMLStreamException{
+ JAXBContext ctx = createJAXBContext(jaxbClazz);
+
+ // Get a JAXBBlockFactory instance. We'll need this to get the JAXBBlock
+ // out of the Message
+ JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);
+ Block block = message.getHeaderBlock(targetNamespace, localPart, ctx, factory);
+ return block.getBusinessObject(false);
+ }
+
+ protected Object createBOFromBodyBlock(Class jaxbClazz, Message message) throws JAXBException, MessageException, XMLStreamException{
+ return createBusinessObject(jaxbClazz, message);
+ }
+
protected Object createBusinessObject(Class jaxbClazz, Message message) throws JAXBException, MessageException, XMLStreamException{
JAXBContext ctx = createJAXBContext(jaxbClazz);
@@ -500,7 +622,7 @@
Block block = message.getBodyBlock(0, ctx, factory);
try{
- return block.getBusinessObject(true);
+ return block.getBusinessObject(false);
}catch(Exception e){
//FIXME: this is the bare case where child of body is not a method but a primitive data type. Reader from Block is throwing exception.
block = message.getBodyBlock(0, ctx,factory);
@@ -515,6 +637,28 @@
return o.getValue();
}
+ }
+ protected void createResponseHolders(ArrayList<MethodParameter> mps, ArrayList<Object> inputArgHolders, Message message)throws JAXBException, MessageException, XMLStreamException{
+ Object bo = null;
+ int index = 0;
+ for(MethodParameter mp:mps){
+ if(mp.isHeader() && mp.isHolder()){
+ bo = createBOFromHeaderBlock(mp.getActualType(),message, mp.getTargetNamespace(), mp.getName());
+
+ }
+ else if(!mp.isHeader() && mp.isHolder()){
+ bo = createBOFromBodyBlock(mp.getActualType(), message);
+ }
+ try{
+ Holder inputArgHolder = (Holder)inputArgHolders.get(index);
+ inputArgHolder.value = bo;
+ index++;
+ }catch(Exception e){
+ ExceptionFactory.makeWebServiceException(e);
+ }
+ }
+
+
}
protected void createResponseHolders(Object bo, Object[] inputArgs, boolean isBare)throws JAXBWrapperException, InstantiationException, ClassNotFoundException, IllegalAccessException{
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLSpineImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLSpineImpl.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLSpineImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLSpineImpl.java Fri Oct 13 06:46:31 2006
@@ -115,7 +115,8 @@
SOAPHeader header = root.getHeader();
if (header != null) {
Iterator it = header.getChildren();
- advanceIterator(it, headerBlocks, true);
+ advanceIterator(it, headerBlocks, false);
+ //advanceIterator(it, headerBlocks, true);
}
@@ -296,8 +297,8 @@
public Block getHeaderBlock(String namespace, String localPart, Object context, BlockFactory blockFactory) throws MessageException {
int index = getHeaderBlockIndex(namespace, localPart);
try {
- Block oldBlock = bodyBlocks.get(index);
-
+ //Block oldBlock = bodyBlocks.get(index);
+ Block oldBlock = headerBlocks.get(index);
// Convert to new Block
Block newBlock = blockFactory.createFrom(oldBlock, context);
if (newBlock != oldBlock) {
@@ -311,7 +312,8 @@
public void setHeaderBlock(String namespace, String localPart, Block block) throws MessageException {
int index = getHeaderBlockIndex(namespace, localPart);
- headerBlocks.set(index, block);
+ headerBlocks.add(block);
+ //headerBlocks.set(index, block);
block.setParent(this);
}
Modified: webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl Fri Oct 13 06:46:31 2006
@@ -125,6 +125,40 @@
</xsd:complexContent>
</xsd:complexType>
+ <xsd:element name="headerPart0">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="headerType" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="headerPart1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="headerType" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="header">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="in" type="xsd:string" />
+ <xsd:element name="out" type="xsd:long" />
+ <xsd:element name="inout" type="xsd:integer" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="headerResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="out" type="xsd:long" />
+ <xsd:element name="inout" type="xsd:integer" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
</xsd:schema>
</wsdl:types>
@@ -168,6 +202,16 @@
<wsdl:part name="op" element="tns:finOpResponse" />
</wsdl:message>
+ <wsdl:message name="headerRequest">
+ <wsdl:part name="payload" element="tns:header" />
+ <wsdl:part name="header0" element="tns:headerPart0" />
+ <wsdl:part name="header1" element="tns:headerPart1" />
+ </wsdl:message>
+
+ <wsdl:message name="headerResponse">
+ <wsdl:part name="payload" element="tns:headerResponse" />
+ <wsdl:part name="header0" element="tns:headerPart0" />
+ </wsdl:message>
<wsdl:portType name="DocLitWrap">
<wsdl:operation name="oneWayVoid">
@@ -188,6 +232,10 @@
<wsdl:output message="tns:twoWayResponse" />
</wsdl:operation>
+ <wsdl:operation name="header">
+ <wsdl:input message="tns:headerRequest" />
+ <wsdl:output message="tns:headerResponse" />
+ </wsdl:operation>
<wsdl:operation name="invoke">
<wsdl:input message="tns:invokeRequest" />
<wsdl:output message="tns:invokeResponse" />
@@ -230,7 +278,21 @@
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="header">
+ <soap:operation
+ soapAction="http://addheaders.sample.test.org/header" />
+
+ <wsdl:input>
+ <soap:header use="literal" message="tns:headerRequest" part="header0"/>
+ <soap:header use="literal" message="tns:headerRequest" part="header1"/>
+ <soap:body use="literal" parts="payload"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:header use="literal" message="tns:headerResponse" part="header0"/>
+ <soap:body use="literal" parts="payload"/>
+ </wsdl:output>
</wsdl:operation>
<wsdl:operation name="twoWay">
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java Fri Oct 13 06:46:31 2006
@@ -9,6 +9,7 @@
import javax.xml.ws.Response;
import org.test.sample.nonwrap.ReturnType;
+import org.test.sample.nonwrap.TwoWayHolder;
@@ -36,6 +37,11 @@
ReturnType type = (ReturnType)obj;
System.out.println(">>Return String = "+type.getReturnStr());
return;
+ }
+ if(obj instanceof TwoWayHolder){
+ TwoWayHolder twh = (TwoWayHolder)obj;
+ System.out.println("AsyncCallback Holder string ="+twh.getTwoWayHolderStr());
+ System.out.println("AsyncCallback Holder int ="+twh.getTwoWayHolderInt());
}
}catch(ExecutionException e){
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java Fri Oct 13 06:46:31 2006
@@ -16,15 +16,17 @@
public void testTwoWaySync(){
System.out.println("------------------------------");
System.out.println("Test : "+getName());
+
try{
BareDocLitService service = new BareDocLitService();
DocLitBarePortType proxy = service.getBareDocLitPort();
BindingProvider p = (BindingProvider) proxy;
- p.getRequestContext().put(
+ p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:7777/axis2/services/BareDocLitService");
+ /*p.getRequestContext().put(
BindingProvider.SOAPACTION_URI_PROPERTY, new Boolean(true));
p.getRequestContext().put(
- BindingProvider.SOAPACTION_URI_PROPERTY, "twoWaySimple");
+ BindingProvider.SOAPACTION_URI_PROPERTY, "twoWaySimple");*/
String response = proxy.twoWaySimple(10);
System.out.println("Sync Response =" + response);
System.out.println("------------------------------");
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java Fri Oct 13 06:46:31 2006
@@ -87,4 +87,29 @@
fail();
}
}
+
+ public void testTwoWayHolderAsync(){
+ System.out.println("------------------------------");
+ System.out.println("Test : "+getName());
+ try{
+ TwoWayHolder twh = new TwoWayHolder();
+ twh.setTwoWayHolderInt(new Integer(0));
+ twh.setTwoWayHolderStr(new String("Request Holder String"));
+ Holder<TwoWayHolder> holder = new Holder<TwoWayHolder>(twh);
+ TwoWay twoWay = new ObjectFactory().createTwoWay();
+ twoWay.setTwowayStr("testing sync call for java bean non wrap endpoint");
+ DocLitNonWrapService service = new DocLitNonWrapService();
+ DocLitNonWrapPortType proxy = service.getDocLitNonWrapPort();
+ AsyncCallback callback = new AsyncCallback();
+ Future<?> monitor =proxy.twoWayHolderAsync(twh, callback);
+ while(!monitor.isDone()){
+ Thread.sleep(1000);
+ }
+
+ System.out.println("------------------------------");
+ }catch(Exception e){
+ e.printStackTrace();
+ fail();
+ }
+ }
}
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java Fri Oct 13 06:46:31 2006
@@ -6,6 +6,12 @@
import javax.xml.ws.Holder;
import org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap;
import org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrapService;
+import org.test.sample.wrap.Header;
+import org.test.sample.wrap.HeaderPart0;
+import org.test.sample.wrap.HeaderPart1;
+import org.test.sample.wrap.HeaderResponse;
+
+import com.ibm.CORBA.iiop.Response;
import junit.framework.TestCase;
@@ -82,5 +88,48 @@
fail();
}
}
+
+ public void testTwoWayWithHeadersAndHolders(){
+ System.out.println("------------------------------");
+ System.out.println("Test : "+getName());
+ try{
+ Header header = new Header();
+ header.setOut(0);
+ HeaderPart0 hp0= new HeaderPart0();
+ hp0.setHeaderType("Client setup Header Type for HeaderPart0");
+ HeaderPart1 hp1 = new HeaderPart1();
+ hp1.setHeaderType("Client setup Header Type for HeaderPart0");
+ Holder<HeaderPart0> holder = new Holder<HeaderPart0>(hp0);
+ DocLitWrapService service = new DocLitWrapService();
+ DocLitWrap proxy = service.getDocLitWrapPort();
+ HeaderResponse hr = proxy.header(header, holder, hp1);
+ hp0=holder.value;
+ System.out.println("Holder Response String =" + hp0.getHeaderType());
+ System.out.println("Header Response Long =" + hr.getOut());
+ System.out.println("------------------------------");
+ }catch(Exception e){
+ e.printStackTrace();
+ fail();
+ }
+ }
+ public void testTwoWayHolderAsync(){
+ System.out.println("------------------------------");
+ System.out.println("Test : "+getName());
+ try{
+ String holderString = new String("Test twoWay Sync");
+ Integer holderInteger = new Integer(0);
+ Holder<String> strHolder = new Holder<String>(holderString);
+ Holder<Integer> intHolder = new Holder<Integer>(holderInteger);
+ DocLitWrapService service = new DocLitWrapService();
+ DocLitWrap proxy = service.getDocLitWrapPort();
+ proxy.twoWayHolder(strHolder, intHolder);
+ System.out.println("Holder Response String =" + strHolder.value);;
+ System.out.println("Holder Response Integer ="+ intHolder.value);
+ System.out.println("------------------------------");
+ }catch(Exception e){
+ e.printStackTrace();
+ fail();
+ }
+ }
}
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/services.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/services.xml?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/services.xml (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/services.xml Fri Oct 13 06:46:31 2006
@@ -4,7 +4,11 @@
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
</messageReceivers>
<parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.sample.doclitbare.DocLitBarePortTypeImpl</parameter>
- <actionMapping/>
+ <operation name="twoWaySimple" mep="http://www.w3.org/2004/08/wsdl/in-out">
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
+ </messageReceivers>
+ <actionMapping>twoWaySimple<actionMapping/>
+ <operation/>
</service>
</serviceGroup>
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java Fri Oct 13 06:46:31 2006
@@ -23,7 +23,7 @@
private final static URL BAREDOCLITSERVICE_WSDL_LOCATION;
- private static String wsdlLocation="/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl";
+ private static String wsdlLocation="/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl";
static {
URL url = null;
try {
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java Fri Oct 13 06:46:31 2006
@@ -10,6 +10,10 @@
import org.test.sample.nonwrap.ObjectFactory;
import org.test.sample.nonwrap.ReturnType;
import org.test.sample.wrap.FinancialOperation;
+import org.test.sample.wrap.Header;
+import org.test.sample.wrap.HeaderPart0;
+import org.test.sample.wrap.HeaderPart1;
+import org.test.sample.wrap.HeaderResponse;
@WebService(endpointInterface="org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap")
public class DocLitWrapImpl implements DocLitWrap {
@@ -69,5 +73,17 @@
// TODO Auto-generated method stub
return null;
}
+
+ public HeaderResponse header(Header payload, Holder<HeaderPart0> header0, HeaderPart1 header1){
+
+ HeaderPart0 hpo= (HeaderPart0)header0.value;
+ hpo = new HeaderPart0();
+ hpo.setHeaderType("Header Type from Endpoint implementation");
+ header0.value = hpo;
+ //hpo.setHeaderType("");
+ HeaderResponse response = new HeaderResponse();
+ response.setOut(1000);
+ return response;
+ }
}
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/doclitwrap.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/doclitwrap.wsdl?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/doclitwrap.wsdl (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/doclitwrap.wsdl Fri Oct 13 06:46:31 2006
@@ -125,6 +125,40 @@
</xsd:complexContent>
</xsd:complexType>
+ <xsd:element name="headerPart0">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="headerType" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="headerPart1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="headerType" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="header">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="in" type="xsd:string" />
+ <xsd:element name="out" type="xsd:long" />
+ <xsd:element name="inout" type="xsd:integer" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="headerResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="out" type="xsd:long" />
+ <xsd:element name="inout" type="xsd:integer" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
</xsd:schema>
</wsdl:types>
@@ -168,6 +202,16 @@
<wsdl:part name="op" element="tns:finOpResponse" />
</wsdl:message>
+ <wsdl:message name="headerRequest">
+ <wsdl:part name="payload" element="tns:header" />
+ <wsdl:part name="header0" element="tns:headerPart0" />
+ <wsdl:part name="header1" element="tns:headerPart1" />
+ </wsdl:message>
+
+ <wsdl:message name="headerResponse">
+ <wsdl:part name="payload" element="tns:headerResponse" />
+ <wsdl:part name="header0" element="tns:headerPart0" />
+ </wsdl:message>
<wsdl:portType name="DocLitWrap">
<wsdl:operation name="oneWayVoid">
@@ -188,6 +232,10 @@
<wsdl:output message="tns:twoWayResponse" />
</wsdl:operation>
+ <wsdl:operation name="header">
+ <wsdl:input message="tns:headerRequest" />
+ <wsdl:output message="tns:headerResponse" />
+ </wsdl:operation>
<wsdl:operation name="invoke">
<wsdl:input message="tns:invokeRequest" />
<wsdl:output message="tns:invokeResponse" />
@@ -230,7 +278,21 @@
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="header">
+ <soap:operation
+ soapAction="http://addheaders.sample.test.org/header" />
+
+ <wsdl:input>
+ <soap:header use="literal" message="tns:headerRequest" part="header0"/>
+ <soap:header use="literal" message="tns:headerRequest" part="header1"/>
+ <soap:body use="literal" parts="payload"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:header use="literal" message="tns:headerResponse" part="header0"/>
+ <soap:body use="literal" parts="payload"/>
+ </wsdl:output>
</wsdl:operation>
<wsdl:operation name="twoWay">
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrap.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrap.java?view=diff&rev=463680&r1=463679&r2=463680
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrap.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrap.java Fri Oct 13 06:46:31 2006
@@ -5,6 +5,8 @@
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebParam.Mode;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.ParameterStyle;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Holder;
@@ -12,6 +14,10 @@
import javax.xml.ws.ResponseWrapper;
import org.test.sample.wrap.FinancialOperation;
+import org.test.sample.wrap.Header;
+import org.test.sample.wrap.HeaderPart0;
+import org.test.sample.wrap.HeaderPart1;
+import org.test.sample.wrap.HeaderResponse;
/**
@@ -98,5 +104,25 @@
public FinancialOperation finOp(
@WebParam(name = "op", targetNamespace = "")
FinancialOperation op);
+
+ /**
+ *
+ * @param header1
+ * @param header0
+ * @param payload
+ * @return
+ * returns org.test.sample.wrap.HeaderResponse
+ */
+ @WebMethod(action = "http://addheaders.sample.test.org/header")
+ @WebResult(name = "headerResponse", targetNamespace = "http://wrap.sample.test.org", partName = "payload")
+ @SOAPBinding(parameterStyle = ParameterStyle.BARE)
+ public HeaderResponse header(
+ @WebParam(name = "header", targetNamespace = "http://wrap.sample.test.org", partName = "payload")
+ Header payload,
+ @WebParam(name = "headerPart0", targetNamespace = "http://wrap.sample.test.org", header = true, mode = Mode.INOUT, partName = "header0")
+ Holder<HeaderPart0> header0,
+ @WebParam(name = "headerPart1", targetNamespace = "http://wrap.sample.test.org", header = true, partName = "header1")
+ HeaderPart1 header1);
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org