You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2007/05/15 18:37:23 UTC
svn commit: r538249 - in /incubator/cxf/trunk:
api/src/main/java/org/apache/cxf/message/
common/common/src/main/java/org/apache/cxf/helpers/
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/
rt/transports/http/src/main/java/org/apache/cxf/t...
Author: dkulp
Date: Tue May 15 09:37:19 2007
New Revision: 538249
URL: http://svn.apache.org/viewvc?view=rev&rev=538249
Log:
[CXF-653] Patch from Jeff applied (witch a couple modifications)
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java
incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/helpers/HttpHeaderHelper.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ContextPropertiesMapping.java
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java?view=diff&rev=538249&r1=538248&r2=538249
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java Tue May 15 09:37:19 2007
@@ -54,6 +54,7 @@
String BASE_PATH = Message.class.getName() + ".BASE_PATH";
String ENCODING = Message.class.getName() + ".ENCODING";
String FIXED_PARAMETER_ORDER = Message.class.getName() + "FIXED_PARAMETER_ORDER";
+ String MAINTAIN_SESSION = Message.class.getName() + ".MAINTAIN_SESSION";
String WSDL_DESCRIPTION = "javax.xml.ws.wsdl.description";
String WSDL_SERVICE = "javax.xml.ws.wsdl.service";
Modified: incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/helpers/HttpHeaderHelper.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/helpers/HttpHeaderHelper.java?view=diff&rev=538249&r1=538248&r2=538249
==============================================================================
--- incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/helpers/HttpHeaderHelper.java (original)
+++ incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/helpers/HttpHeaderHelper.java Tue May 15 09:37:19 2007
@@ -28,6 +28,7 @@
public static final String CONTENT_TYPE = "Content-Type";
public static final String CONTENT_ID = "Content-ID";
public static final String CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding";
+ public static final String COOKIE = "Cookie";
private static Map<String, String> internalHeaders = new HashMap<String, String>();
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ContextPropertiesMapping.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ContextPropertiesMapping.java?view=diff&rev=538249&r1=538248&r2=538249
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ContextPropertiesMapping.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ContextPropertiesMapping.java Tue May 15 09:37:19 2007
@@ -52,6 +52,8 @@
static {
cxf2jaxwsMap.put(Message.ENDPOINT_ADDRESS,
BindingProvider.ENDPOINT_ADDRESS_PROPERTY);
+ cxf2jaxwsMap.put(Message.MAINTAIN_SESSION,
+ BindingProvider.SESSION_MAINTAIN_PROPERTY);
cxf2jaxwsMap.put(Message.HTTP_REQUEST_METHOD,
MessageContext.HTTP_REQUEST_METHOD);
@@ -68,6 +70,8 @@
jaxws2cxfMap.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
Message.ENDPOINT_ADDRESS);
+ jaxws2cxfMap.put(BindingProvider.SESSION_MAINTAIN_PROPERTY,
+ Message.MAINTAIN_SESSION);
jaxws2cxfMap.put(MessageContext.HTTP_REQUEST_METHOD,
Message.HTTP_REQUEST_METHOD);
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java?view=diff&rev=538249&r1=538248&r2=538249
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java Tue May 15 09:37:19 2007
@@ -243,6 +243,10 @@
* should be handled as such.
*/
private boolean configFinalized;
+
+ private String sessionId;
+
+ private boolean maintainSession;
/**
* Constructor
@@ -432,6 +436,7 @@
* @param message The message to be sent.
*/
public void prepare(Message message) throws IOException {
+
Map<String, List<String>> headers = getSetProtocolHeaders(message);
// This call can possibly change the conduit endpoint address and
@@ -496,6 +501,18 @@
}
}
+ //Do we need to maintain a session?
+ if (Boolean.TRUE.equals((Boolean) message.get(Message.MAINTAIN_SESSION))) {
+ maintainSession = true;
+ } else {
+ maintainSession = false;
+ }
+
+ //If we have a sessionId and we are maintaining sessions, then use it
+ if (maintainSession && sessionId != null) {
+ connection.setRequestProperty(HttpHeaderHelper.COOKIE, "JSESSIONID=" + sessionId);
+ }
+
// The trust decision is relagated to after the "flushing" of the
// request headers.
@@ -1749,6 +1766,19 @@
inMessage.put(Message.RESPONSE_CODE, responseCode);
inMessage.put(Message.CONTENT_TYPE,
connection.getHeaderField(HttpHeaderHelper.CONTENT_TYPE));
+
+ if (maintainSession) {
+ String cookieStr = connection.getHeaderField("Set-Cookie");
+ if (cookieStr != null) {
+ String cookies[] = cookieStr.split(";");
+ for (int i = 0; i < cookies.length; i++) {
+ String nameValue[] = cookies[i].split("=");
+ if (nameValue[0].equals("JSESSIONID") || nameValue[0].equals("jsessionid")) {
+ sessionId = nameValue[1];
+ }
+ }
+ }
+ }
in = connection.getErrorStream();
if (null == in) {