Author: heiko.braun(a)jboss.com
Date: 2007-05-24 07:22:14 -0400 (Thu, 24 May 2007)
New Revision: 3226
Modified:
branches/jbossws-2.0/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java
branches/jbossws-2.0/jbossws-core/src/java/org/jboss/ws/metadata/umdm/WrappedParameter.java
branches/jbossws-2.0/jbossws-tests/src/java/org/jboss/test/ws/jaxws/samples/swaref/SWARefTestCase.java
Log:
Regard attachment annotation on any parameter type
Modified:
branches/jbossws-2.0/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java
===================================================================
---
branches/jbossws-2.0/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java 2007-05-24
11:21:05 UTC (rev 3225)
+++
branches/jbossws-2.0/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java 2007-05-24
11:22:14 UTC (rev 3226)
@@ -23,38 +23,8 @@
// $Id$
-import java.io.File;
-import java.io.InputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.rmi.RemoteException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-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.soap.SOAPBinding;
-import javax.jws.soap.SOAPMessageHandlers;
-import javax.jws.soap.SOAPBinding.ParameterStyle;
-import javax.xml.bind.JAXBException;
-import javax.xml.namespace.QName;
-import javax.xml.rpc.ParameterMode;
-import javax.xml.ws.BindingType;
-import javax.xml.ws.RequestWrapper;
-import javax.xml.ws.ResponseWrapper;
-import javax.xml.ws.WebFault;
-import javax.xml.ws.addressing.Action;
-import javax.xml.ws.addressing.AddressingProperties;
-
+import com.sun.xml.bind.api.JAXBRIContext;
+import com.sun.xml.bind.api.TypeReference;
import org.jboss.logging.Logger;
import org.jboss.ws.Constants;
import org.jboss.ws.WSException;
@@ -75,25 +45,39 @@
import org.jboss.ws.metadata.j2ee.serviceref.UnifiedHandlerChainMetaData;
import org.jboss.ws.metadata.j2ee.serviceref.UnifiedHandlerChainsMetaData;
import org.jboss.ws.metadata.j2ee.serviceref.UnifiedHandlerMetaData;
-import org.jboss.ws.metadata.umdm.EndpointMetaData;
-import org.jboss.ws.metadata.umdm.FaultMetaData;
-import org.jboss.ws.metadata.umdm.OperationMetaData;
-import org.jboss.ws.metadata.umdm.ParameterMetaData;
-import org.jboss.ws.metadata.umdm.TypeMappingMetaData;
-import org.jboss.ws.metadata.umdm.TypesMetaData;
-import org.jboss.ws.metadata.umdm.WrappedParameter;
+import org.jboss.ws.metadata.umdm.*;
import org.jboss.ws.metadata.umdm.HandlerMetaData.HandlerType;
-import org.jboss.ws.metadata.wsdl.WSDLBinding;
-import org.jboss.ws.metadata.wsdl.WSDLBindingMessageReference;
-import org.jboss.ws.metadata.wsdl.WSDLBindingOperation;
-import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
-import org.jboss.ws.metadata.wsdl.WSDLMIMEPart;
+import org.jboss.ws.metadata.wsdl.*;
import org.jboss.xb.binding.ObjectModelFactory;
import org.jboss.xb.binding.Unmarshaller;
import org.jboss.xb.binding.UnmarshallerFactory;
-import com.sun.xml.bind.api.JAXBRIContext;
-import com.sun.xml.bind.api.TypeReference;
+import javax.jws.*;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.ParameterStyle;
+import javax.jws.soap.SOAPMessageHandlers;
+import javax.xml.bind.JAXBException;
+import javax.xml.namespace.QName;
+import javax.xml.rpc.ParameterMode;
+import javax.xml.ws.BindingType;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
+import javax.xml.ws.WebFault;
+import javax.xml.ws.addressing.Action;
+import javax.xml.ws.addressing.AddressingProperties;
+import java.io.File;
+import java.io.InputStream;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
/**
* Abstract class that represents a JAX-WS metadata builder.
@@ -657,14 +641,7 @@
wrappedOutputParameters.add(wrappedParameter);
}
- AttachmentScanResult asr =
ReflectiveAttachmentRefScanner.getResultByIndex(scanResult, i);
- if(asr!=null)
- {
- if(AttachmentScanResult.Type.SWA_REF == asr.getType())
- wrappedParameter.setSwaRef(true);
- else
- wrappedParameter.setXop(true);
- }
+ processAttachmentAnnotationsWrapped(scanResult, i, wrappedParameter);
}
else
{
@@ -694,6 +671,7 @@
javaTypes.add(javaType);
typeRefs.add(new TypeReference(xmlName, genericType,
parameterAnnotations[i]));
+ processAttachmentAnnotations(scanResult, i, paramMetaData);
processMIMEBinding(epMetaData, opMetaData, paramMetaData);
}
}
@@ -720,14 +698,7 @@
// insert at the beginning just for prettiness
wrappedOutputParameters.add(0, wrapped);
- AttachmentScanResult asr =
ReflectiveAttachmentRefScanner.getResultByIndex(scanResult, -1);
- if(asr!=null)
- {
- if(AttachmentScanResult.Type.SWA_REF == asr.getType())
- wrapped.setSwaRef(true);
- else
- wrapped.setXop(true);
- }
+ processAttachmentAnnotationsWrapped(scanResult, -1, wrapped);
}
else
{
@@ -760,6 +731,7 @@
javaTypes.add(returnType);
typeRefs.add(new TypeReference(xmlName, genericReturnType,
method.getAnnotations()));
+ processAttachmentAnnotations(scanResult, -1, retMetaData);
processMIMEBinding(epMetaData, opMetaData, retMetaData);
}
}
@@ -797,6 +769,42 @@
processMetaExtensions(method, epMetaData, opMetaData);
}
+ /**
+ * @see
org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilder#processAttachmentAnnotations(java.util.List,
int, org.jboss.ws.metadata.umdm.ParameterMetaData)
+ * @param scanResult
+ * @param i
+ * @param wrappedParameter
+ */
+ private void processAttachmentAnnotationsWrapped(List<AttachmentScanResult>
scanResult, int i, WrappedParameter wrappedParameter)
+ {
+ AttachmentScanResult asr =
ReflectiveAttachmentRefScanner.getResultByIndex(scanResult, i);
+ if(asr!=null)
+ {
+ if(AttachmentScanResult.Type.SWA_REF == asr.getType())
+ wrappedParameter.setSwaRef(true);
+ else
+ wrappedParameter.setXOP(true);
+ }
+ }
+
+ /**
+ * Update PMD according to attachment annotations that might be in place
+ * @param scanResult
+ * @param i
+ * @param parameter
+ */
+ private void processAttachmentAnnotations(List<AttachmentScanResult> scanResult,
int i, ParameterMetaData parameter)
+ {
+ AttachmentScanResult asr =
ReflectiveAttachmentRefScanner.getResultByIndex(scanResult, i);
+ if(asr!=null)
+ {
+ if(AttachmentScanResult.Type.SWA_REF == asr.getType())
+ parameter.setSwaRef(true);
+ else
+ parameter.setXOP(true);
+ }
+ }
+
private void processMIMEBinding(EndpointMetaData epMetaData, OperationMetaData
opMetaData, ParameterMetaData paramMetaData)
{
// process SWA metadata
Modified:
branches/jbossws-2.0/jbossws-core/src/java/org/jboss/ws/metadata/umdm/WrappedParameter.java
===================================================================
---
branches/jbossws-2.0/jbossws-core/src/java/org/jboss/ws/metadata/umdm/WrappedParameter.java 2007-05-24
11:21:05 UTC (rev 3225)
+++
branches/jbossws-2.0/jbossws-core/src/java/org/jboss/ws/metadata/umdm/WrappedParameter.java 2007-05-24
11:22:14 UTC (rev 3226)
@@ -149,7 +149,7 @@
return xop;
}
- public void setXop(boolean xop)
+ public void setXOP(boolean xop)
{
this.xop = xop;
}
Modified:
branches/jbossws-2.0/jbossws-tests/src/java/org/jboss/test/ws/jaxws/samples/swaref/SWARefTestCase.java
===================================================================
---
branches/jbossws-2.0/jbossws-tests/src/java/org/jboss/test/ws/jaxws/samples/swaref/SWARefTestCase.java 2007-05-24
11:21:05 UTC (rev 3225)
+++
branches/jbossws-2.0/jbossws-tests/src/java/org/jboss/test/ws/jaxws/samples/swaref/SWARefTestCase.java 2007-05-24
11:22:14 UTC (rev 3226)
@@ -38,7 +38,7 @@
DocumentPayload response = port.beanAnnotation(new DocumentPayload(data));
assertTrue(response.getData().getContent().equals("Server data"));
}
-
+
/*public void testParameterAnnotationWithBare() throws Exception
{
Service service = Service.create(new URL(bareEndpointURL +"?wsdl"),
bareServiceQName);
@@ -81,7 +81,6 @@
/*public void testParameterAnnotationWithRPC() throws Exception
{
- //System.out.println("FIXME [JBWS-1460]: @XmlMimeType and @XmlAttachmentRef on
SEI parameter declarations");
Service service = Service.create(new URL(rpclitEndpointURL+"?wsdl"),
rpcLitServiceQName);
RpcLitEndpoint port = service.getPort(RpcLitEndpoint.class);