Author: richard.opalka(a)jboss.com
Date: 2009-10-07 03:35:24 -0400 (Wed, 07 Oct 2009)
New Revision: 10843
Modified:
stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/http/NettyInvocationHandler.java
stack/native/branches/ropalka/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/jse/endpoints/Endpoint1Iface.java
stack/native/branches/ropalka/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/jse/endpoints/Endpoint1Impl.java
Log:
[JBWS-2674][JBWS-2754] finally passing attachments test (WIP)
Modified:
stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/http/NettyInvocationHandler.java
===================================================================
---
stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/http/NettyInvocationHandler.java 2009-10-06
21:38:01 UTC (rev 10842)
+++
stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/http/NettyInvocationHandler.java 2009-10-07
07:35:24 UTC (rev 10843)
@@ -41,6 +41,7 @@
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBufferInputStream;
import org.jboss.netty.buffer.ChannelBuffers;
+import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelFuture;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelStateEvent;
@@ -57,6 +58,7 @@
import org.jboss.netty.handler.codec.http.HttpResponseStatus;
import org.jboss.netty.handler.codec.http.HttpVersion;
import org.jboss.ws.Constants;
+import org.jboss.ws.core.client.transport.NettyTransportOutputStream;
import org.jboss.wsf.spi.invocation.InvocationContext;
/**
@@ -126,7 +128,7 @@
}
finally
{
- writeResponse(e, request, baos.toString(), statusCode, responseHeaders);
+ writeResponse(e, request, baos.toString(), statusCode, responseHeaders,
ctx.getChannel());
}
}
@@ -180,7 +182,8 @@
return retVal;
}
- private void writeResponse(MessageEvent e, HttpRequest request, String content, int
statusCode, Map<String, List<String>> responseHeaders)
+ private void writeResponse(MessageEvent e, HttpRequest request, String content, int
statusCode, Map<String,
+ List<String>> responseHeaders, Channel channel) throws IOException
{
// Build the response object.
HttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1,
getResponseStatus(statusCode));
@@ -192,11 +195,19 @@
{
key = iterator.next();
values = responseHeaders.get(key);
+ values = removeProhibitedCharacters(values);
response.setHeader(key, values);
}
- response.setHeader(HttpHeaders.Names.CONTENT_TYPE, "text/xml;
charset=UTF-8");
- response.setHeader(HttpHeaders.Names.CONTENT_LENGTH,
String.valueOf(content.length()));
- response.setContent(ChannelBuffers.copiedBuffer(content, "UTF-8"));
+ if (!responseHeaders.containsKey(HttpHeaders.Names.CONTENT_TYPE))
+ {
+ response.setHeader(HttpHeaders.Names.CONTENT_TYPE, "text/xml;
charset=UTF-8");
+ response.setHeader(HttpHeaders.Names.CONTENT_LENGTH,
String.valueOf(content.length()));
+ response.setContent(ChannelBuffers.copiedBuffer(content, "UTF-8"));
+ }
+ else
+ {
+ response.setHeader(HttpHeaders.Names.TRANSFER_ENCODING, "chunked");
+ }
String cookieString = request.getHeader(HttpHeaders.Names.COOKIE);
if (cookieString != null)
@@ -217,8 +228,35 @@
// Write the response.
ChannelFuture cf = e.getChannel().write(response);
+ if (responseHeaders.containsKey(HttpHeaders.Names.CONTENT_TYPE))
+ {
+ OutputStream out = new NettyTransportOutputStream(channel, 1024);
+ out.write(content.getBytes("UTF-8"));
+ out.close();
+ }
cf.awaitUninterruptibly();
}
+
+ private List<String> removeProhibitedCharacters(List<String> values)
+ {
+ List<String> retVal = new LinkedList<String>();
+ for (int i = 0; i < values.size(); i++)
+ {
+ retVal.add(i, removeProhibitedCharacters(values.get(i)));
+ }
+
+ return retVal;
+ }
+
+ private String removeProhibitedCharacters(String s)
+ {
+ String retVal = s;
+
+ retVal = retVal.replace('\r', ' ');
+ retVal = retVal.replace('\n', ' ');
+
+ return retVal;
+ }
private HttpResponseStatus getResponseStatus(int statusCode)
{
Modified:
stack/native/branches/ropalka/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/jse/endpoints/Endpoint1Iface.java
===================================================================
---
stack/native/branches/ropalka/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/jse/endpoints/Endpoint1Iface.java 2009-10-06
21:38:01 UTC (rev 10842)
+++
stack/native/branches/ropalka/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/jse/endpoints/Endpoint1Iface.java 2009-10-07
07:35:24 UTC (rev 10843)
@@ -30,7 +30,7 @@
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
@WebService(targetNamespace =
"http://org.jboss.ws/jaxws/endpoint/jse/endpoints/")
-@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, parameterStyle =
SOAPBinding.ParameterStyle.BARE)
+@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface Endpoint1Iface
{
String echo(String input);
Modified:
stack/native/branches/ropalka/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/jse/endpoints/Endpoint1Impl.java
===================================================================
---
stack/native/branches/ropalka/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/jse/endpoints/Endpoint1Impl.java 2009-10-06
21:38:01 UTC (rev 10842)
+++
stack/native/branches/ropalka/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/jse/endpoints/Endpoint1Impl.java 2009-10-07
07:35:24 UTC (rev 10843)
@@ -26,7 +26,6 @@
import javax.activation.DataHandler;
import javax.jws.WebService;
-import javax.jws.soap.SOAPBinding;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.soap.MTOM;
@@ -43,7 +42,6 @@
targetNamespace = "http://org.jboss.ws/jaxws/endpoint/jse/endpoints/",
endpointInterface =
"org.jboss.test.ws.jaxws.endpoint.jse.endpoints.Endpoint1Iface"
)
-@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@MTOM
public class Endpoint1Impl implements Endpoint1Iface
{