You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ni...@apache.org on 2007/02/28 08:28:30 UTC
svn commit: r512641 - in /incubator/cxf/trunk/rt/transports:
http/src/main/java/org/apache/cxf/transport/http/ http2/ http2/src/java/
http2/src/main/java/org/apache/cxf/transport/http/
http2/src/main/java/org/apache/cxf/transport/http/spring/ http2/src...
Author: ningjiang
Date: Tue Feb 27 23:28:28 2007
New Revision: 512641
URL: http://svn.apache.org/viewvc?view=rev&rev=512641
Log:
[CXF-439] Synchronized the http2 code with latest http module
Added:
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/spring/
- copied from r512109, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java
- copied unchanged from r512626, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/spring/HttpDestinationBeanDefinitionParser.java
- copied unchanged from r512626, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpDestinationBeanDefinitionParser.java
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/spring/NamespaceHandler.java
- copied unchanged from r512626, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/NamespaceHandler.java
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/servlet/
- copied from r512555, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java
- copied unchanged from r512626, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/servlet/Messages.properties
- copied unchanged from r512626, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/Messages.properties
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
- copied unchanged from r512626, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java
- copied unchanged from r512626, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java
- copied unchanged from r512626, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java
Removed:
incubator/cxf/trunk/rt/transports/http2/src/java/
Modified:
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
incubator/cxf/trunk/rt/transports/http2/pom.xml
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java
incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/JettyHTTPDestination.java
incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java
incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/JettyHTTPDestinationTest.java
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java?view=diff&rev=512641&r1=512640&r2=512641
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java Tue Feb 27 23:28:28 2007
@@ -151,7 +151,7 @@
Map<String, List<String>> headers);
protected static String getAddressValue(EndpointInfo ei) {
- return getAddressValue(ei, false);
+ return getAddressValue(ei, true);
}
protected static String getAddressValue(EndpointInfo ei, boolean dp) {
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=512641&r1=512640&r2=512641
==============================================================================
--- 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 Feb 27 23:28:28 2007
@@ -80,7 +80,7 @@
private int decoupledDestinationRefCount;
private EndpointInfo endpointInfo;
- // COnfiguration values
+ // Configuration values
private HTTPClientPolicy client;
private AuthorizationPolicy authorization;
private AuthorizationPolicy proxyAuthorization;
Modified: incubator/cxf/trunk/rt/transports/http2/pom.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http2/pom.xml?view=diff&rev=512641&r1=512640&r2=512641
==============================================================================
--- incubator/cxf/trunk/rt/transports/http2/pom.xml (original)
+++ incubator/cxf/trunk/rt/transports/http2/pom.xml Tue Feb 27 23:28:28 2007
@@ -55,6 +55,15 @@
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-tools-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
<artifactId>cxf-testutils</artifactId>
<version>${project.version}</version>
<scope>test</scope>
Modified: incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java?view=diff&rev=512641&r1=512640&r2=512641
==============================================================================
--- incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java (original)
+++ incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java Tue Feb 27 23:28:28 2007
@@ -20,6 +20,7 @@
package org.apache.cxf.transport.http;
import java.io.IOException;
+import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import java.util.HashMap;
@@ -39,43 +40,53 @@
import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.transport.AbstractDestination;
import org.apache.cxf.transport.ConduitInitiator;
-import org.apache.cxf.transport.http.destination.HTTPDestinationConfigBean;
import org.apache.cxf.transports.http.configuration.HTTPServerPolicy;
+import org.apache.cxf.ws.addressing.EndpointReferenceType;
/**
* Common base for HTTP Destination implementations.
*/
-public abstract class AbstractHTTPDestination extends AbstractDestination {
+public abstract class AbstractHTTPDestination extends AbstractDestination implements Configurable {
private static final long serialVersionUID = 1L;
protected final Bus bus;
protected final ConduitInitiator conduitInitiator;
- protected HTTPDestinationConfigBean config;
protected String name;
protected URL nurl;
+ // Configuration values
+ protected HTTPServerPolicy server;
+ protected AuthorizationPolicy authorization;
+ protected SSLServerPolicy sslServer;
+ protected String contextMatchStrategy = "stem";
+ protected boolean fixedParameterOrder;
+
/**
* Constructor
*
* @param b the associated Bus
* @param ci the associated conduit initiator
* @param ei the endpoint info of the destination
+ * @param dp ture for adding the default port if it is missing
* @throws IOException
*/
public AbstractHTTPDestination(Bus b,
ConduitInitiator ci,
- EndpointInfo ei)
+ EndpointInfo ei,
+ boolean dp)
throws IOException {
- super(getTargetReference(getAddressValue(ei)), ei);
+ super(getTargetReference(getAddressValue(ei, dp)), ei);
bus = b;
conduitInitiator = ci;
initConfig();
-
- nurl = new URL(getAddressValue(ei));
+
+ nurl = new URL(getAddressValue(ei, dp));
name = nurl.getPath();
}
+
+
/**
* Cache HTTP headers in message.
@@ -140,17 +151,39 @@
Map<String, List<String>> headers);
protected static String getAddressValue(EndpointInfo ei) {
- return StringUtils.addDefaultPortIfMissing(ei.getAddress());
- }
+ return getAddressValue(ei, true);
+ }
+
+ protected static String getAddressValue(EndpointInfo ei, boolean dp) {
+ if (dp) {
+ return StringUtils.addDefaultPortIfMissing(ei.getAddress());
+ } else {
+ return ei.getAddress();
+ }
+ }
+
+ /**
+ * Mark message as a partial message.
+ *
+ * @param partialResponse the partial response message
+ * @param the decoupled target
+ * @return true iff partial responses are supported
+ */
+ protected boolean markPartialResponse(Message partialResponse,
+ EndpointReferenceType decoupledTarget) {
+ // setup the outbound message to for 202 Accepted
+ partialResponse.put(Message.RESPONSE_CODE, HttpURLConnection.HTTP_ACCEPTED);
+ partialResponse.getExchange().put(EndpointReferenceType.class, decoupledTarget);
+ return true;
+ }
private void initConfig() {
- config = new ConfigBean();
- config.setServer(endpointInfo.getTraversedExtensor(new HTTPServerPolicy(), HTTPServerPolicy.class));
- config.setSslServer(endpointInfo.getTraversedExtensor(new SSLServerPolicy(), SSLServerPolicy.class));
+ this.server = endpointInfo.getTraversedExtensor(new HTTPServerPolicy(), HTTPServerPolicy.class);
+ this.sslServer = endpointInfo.getTraversedExtensor(null, SSLServerPolicy.class);
}
void setPolicies(Map<String, List<String>> headers) {
- HTTPServerPolicy policy = config.getServer();
+ HTTPServerPolicy policy = server;
if (policy.isSetCacheControl()) {
headers.put("Cache-Control",
Arrays.asList(new String[] {policy.getCacheControl().value()}));
@@ -184,16 +217,54 @@
}
boolean contextMatchOnExact() {
- return "exact".equals(config.getContextMatchStrategy());
+ return "exact".equals(contextMatchStrategy);
}
- private class ConfigBean extends HTTPDestinationConfigBean implements Configurable {
- public String getBeanName() {
- String beanName = null;
- if (endpointInfo.getName() != null) {
- beanName = endpointInfo.getName().toString() + ".http-destination";
- }
- return beanName;
+ public String getBeanName() {
+ String beanName = null;
+ if (endpointInfo.getName() != null) {
+ beanName = endpointInfo.getName().toString() + ".http-destination";
}
+ return beanName;
+ }
+
+ public AuthorizationPolicy getAuthorization() {
+ return authorization;
+ }
+
+ public void setAuthorization(AuthorizationPolicy authorization) {
+ this.authorization = authorization;
+ }
+
+ public String getContextMatchStrategy() {
+ return contextMatchStrategy;
+ }
+
+ public void setContextMatchStrategy(String contextMatchStrategy) {
+ this.contextMatchStrategy = contextMatchStrategy;
+ }
+
+ public boolean isFixedParameterOrder() {
+ return fixedParameterOrder;
+ }
+
+ public void setFixedParameterOrder(boolean fixedParameterOrder) {
+ this.fixedParameterOrder = fixedParameterOrder;
+ }
+
+ public HTTPServerPolicy getServer() {
+ return server;
+ }
+
+ public void setServer(HTTPServerPolicy server) {
+ this.server = server;
+ }
+
+ public SSLServerPolicy getSslServer() {
+ return sslServer;
+ }
+
+ public void setSslServer(SSLServerPolicy sslServer) {
+ this.sslServer = sslServer;
}
}
Modified: incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java?view=diff&rev=512641&r1=512640&r2=512641
==============================================================================
--- incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java (original)
+++ incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java Tue Feb 27 23:28:28 2007
@@ -40,6 +40,7 @@
import org.apache.cxf.common.util.Base64Utility;
import org.apache.cxf.configuration.Configurable;
import org.apache.cxf.configuration.security.AuthorizationPolicy;
+import org.apache.cxf.configuration.security.SSLClientPolicy;
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.helpers.HttpHeaderHelper;
import org.apache.cxf.io.AbstractWrappedOutputStream;
@@ -53,7 +54,6 @@
import org.apache.cxf.transport.DestinationFactory;
import org.apache.cxf.transport.DestinationFactoryManager;
import org.apache.cxf.transport.MessageObserver;
-import org.apache.cxf.transport.http.conduit.HTTPConduitConfigBean;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.apache.cxf.ws.addressing.AttributedURIType;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
@@ -65,14 +65,13 @@
/**
* HTTP Conduit implementation.
*/
-public class HTTPConduit extends AbstractConduit {
+public class HTTPConduit extends AbstractConduit implements Configurable {
public static final String HTTP_REQUEST = "org.apache.cxf.transport.http.JettyHTTPDestination.REQUEST";
public static final String HTTP_RESPONSE = "org.apache.cxf.transport.http.JettyHTTPDestination.RESPONSE";
public static final String HTTP_CONNECTION = "http.connection";
private static final Logger LOG = LogUtils.getL7dLogger(HTTPConduit.class);
- private final Bus bus;
- private HTTPConduitConfigBean config;
+ private final Bus bus;
private final URLConnectionFactory alternateConnectionFactory;
private URLConnectionFactory connectionFactory;
private URL url;
@@ -82,6 +81,12 @@
private int decoupledDestinationRefCount;
private EndpointInfo endpointInfo;
+ // Configuration values
+ private HTTPClientPolicy client;
+ private AuthorizationPolicy authorization;
+ private AuthorizationPolicy proxyAuthorization;
+ private SSLClientPolicy sslClient;
+
/**
* Constructor
@@ -146,16 +151,9 @@
connectionFactory = alternateConnectionFactory != null
? alternateConnectionFactory
: HTTPTransportFactory.getConnectionFactory(
- config.getSslClient());
+ getSslClient());
}
-
- /**
- * @return the encapsulated config bean
- */
- protected HTTPConduitConfigBean getConfig() {
- return config;
- }
-
+
/**
* Send an outbound message.
*
@@ -168,8 +166,8 @@
connectionFactory.createConnection(getProxy(), currentURL);
connection.setDoOutput(true);
//TODO using Message context to deceided HTTP send properties
- connection.setConnectTimeout((int)config.getClient().getConnectionTimeout());
- connection.setReadTimeout((int)config.getClient().getReceiveTimeout());
+ connection.setConnectTimeout((int)getClient().getConnectionTimeout());
+ connection.setReadTimeout((int)getClient().getReceiveTimeout());
connection.setUseCaches(false);
if (connection instanceof HttpURLConnection) {
@@ -180,14 +178,14 @@
} else {
hc.setRequestMethod("POST");
}
- if (config.getClient().isAutoRedirect()) {
+ if (getClient().isAutoRedirect()) {
//cannot use chunking if autoredirect as the request will need to be
//completely cached locally and resent to the redirect target
hc.setInstanceFollowRedirects(true);
} else {
hc.setInstanceFollowRedirects(false);
if (!hc.getRequestMethod().equals("GET")
- && config.getClient().isAllowChunking()) {
+ && getClient().isAllowChunking()) {
hc.setChunkedStreamingMode(2048);
}
}
@@ -223,7 +221,7 @@
*/
public synchronized Destination getBackChannel() {
if (decoupledDestination == null
- && config.getClient().getDecoupledEndpoint() != null) {
+ && getClient().getDecoupledEndpoint() != null) {
setUpDecoupledDestination();
}
return decoupledDestination;
@@ -351,7 +349,7 @@
private void setUpDecoupledDestination() {
EndpointReferenceType reference =
EndpointReferenceUtils.getEndpointReference(
- config.getClient().getDecoupledEndpoint());
+ getClient().getDecoupledEndpoint());
if (reference != null) {
String decoupledAddress = reference.getAddress().getValue();
LOG.info("creating decoupled endpoint: " + decoupledAddress);
@@ -423,18 +421,17 @@
}
private void initConfig() {
- config = new ConfigBean();
- // Initialize some default values for the configuration
- config.setClient(endpointInfo.getTraversedExtensor(new HTTPClientPolicy(), HTTPClientPolicy.class));
- config.setAuthorization(endpointInfo.getTraversedExtensor(new AuthorizationPolicy(),
- AuthorizationPolicy.class));
- config.setProxyAuthorization(endpointInfo.getTraversedExtensor(new AuthorizationPolicy(),
- AuthorizationPolicy.class));
+ //Initialize some default values for the configuration
+ client = endpointInfo.getTraversedExtensor(new HTTPClientPolicy(), HTTPClientPolicy.class);
+ authorization = endpointInfo.getTraversedExtensor(new AuthorizationPolicy(),
+ AuthorizationPolicy.class);
+ proxyAuthorization = endpointInfo.getTraversedExtensor(new AuthorizationPolicy(),
+ AuthorizationPolicy.class);
}
private Proxy getProxy() {
Proxy proxy = null;
- HTTPClientPolicy policy = config.getClient();
+ HTTPClientPolicy policy = getClient();
if (policy.isSetProxyServer()) {
proxy = new Proxy(Proxy.Type.valueOf(policy.getProxyServerType().toString()),
new InetSocketAddress(policy.getProxyServer(),
@@ -444,7 +441,7 @@
}
private void setPolicies(Message message, Map<String, List<String>> headers) {
- AuthorizationPolicy authPolicy = config.getAuthorization();
+ AuthorizationPolicy authPolicy = getAuthorization();
AuthorizationPolicy newPolicy = message.get(AuthorizationPolicy.class);
String userName = null;
String passwd = null;
@@ -473,7 +470,7 @@
headers.put("Authorization",
Arrays.asList(new String[] {type}));
}
- AuthorizationPolicy proxyAuthPolicy = config.getProxyAuthorization();
+ AuthorizationPolicy proxyAuthPolicy = getProxyAuthorization();
if (proxyAuthPolicy.isSetUserName()) {
userName = proxyAuthPolicy.getUserName();
if (userName != null) {
@@ -496,7 +493,7 @@
Arrays.asList(new String[] {type}));
}
}
- HTTPClientPolicy policy = config.getClient();
+ HTTPClientPolicy policy = getClient();
if (policy.isSetCacheControl()) {
headers.put("Cache-Control",
Arrays.asList(new String[] {policy.getCacheControl().value()}));
@@ -539,14 +536,44 @@
}
}
- private class ConfigBean extends HTTPConduitConfigBean implements Configurable {
- public String getBeanName() {
- if (endpointInfo.getName() != null) {
- return endpointInfo.getName().toString() + ".http-conduit";
- }
- return null;
- }
+ public String getBeanName() {
+ if (endpointInfo.getName() != null) {
+ return endpointInfo.getName().toString() + ".http-conduit";
+ }
+ return null;
+ }
+
+ public AuthorizationPolicy getAuthorization() {
+ return authorization;
+ }
+
+ public void setAuthorization(AuthorizationPolicy authorization) {
+ this.authorization = authorization;
+ }
+
+ public HTTPClientPolicy getClient() {
+ return client;
+ }
+
+ public void setClient(HTTPClientPolicy client) {
+ this.client = client;
+ }
+
+ public AuthorizationPolicy getProxyAuthorization() {
+ return proxyAuthorization;
}
+
+ public void setProxyAuthorization(AuthorizationPolicy proxyAuthorization) {
+ this.proxyAuthorization = proxyAuthorization;
+ }
+
+ public SSLClientPolicy getSslClient() {
+ return sslClient;
+ }
+
+ public void setSslClient(SSLClientPolicy sslClient) {
+ this.sslClient = sslClient;
+ }
/**
* Wrapper output stream responsible for flushing headers and handling
@@ -654,4 +681,5 @@
incomingObserver.onMessage(inMessage);
}
}
+
}
Modified: incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java?view=diff&rev=512641&r1=512640&r2=512641
==============================================================================
--- incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java (original)
+++ incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java Tue Feb 27 23:28:28 2007
@@ -110,15 +110,15 @@
public Conduit getConduit(EndpointInfo endpointInfo, EndpointReferenceType target) throws IOException {
HTTPConduit conduit = target == null
? new HTTPConduit(bus, endpointInfo) : new HTTPConduit(bus, endpointInfo, target);
- configure(conduit.getConfig());
+ configure(conduit);
conduit.retrieveConnectionFactory();
return conduit;
}
public Destination getDestination(EndpointInfo endpointInfo) throws IOException {
JettyHTTPDestination destination = new JettyHTTPDestination(bus, this, endpointInfo);
- configure(destination.getConfig());
- destination.retrieveEngine();
+ configure(destination);
+ destination.retrieveEngine();
return destination;
}
Modified: incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/JettyHTTPDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/JettyHTTPDestination.java?view=diff&rev=512641&r1=512640&r2=512641
==============================================================================
--- incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/JettyHTTPDestination.java (original)
+++ incubator/cxf/trunk/rt/transports/http2/src/main/java/org/apache/cxf/transport/http/JettyHTTPDestination.java Tue Feb 27 23:28:28 2007
@@ -34,9 +34,6 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.wsdl.Definition;
-import javax.wsdl.factory.WSDLFactory;
-import javax.wsdl.xml.WSDLWriter;
import org.apache.cxf.Bus;
import org.apache.cxf.common.logging.LogUtils;
@@ -49,9 +46,8 @@
import org.apache.cxf.transport.AbstractDestination;
import org.apache.cxf.transport.Conduit;
import org.apache.cxf.transport.ConduitInitiator;
-import org.apache.cxf.transport.http.destination.HTTPDestinationConfigBean;
-import org.apache.cxf.ws.addressing.EndpointReferenceType;
-import org.apache.cxf.wsdl11.ServiceWSDLBuilder;
+import org.apache.cxf.transports.http.QueryHandler;
+import org.apache.cxf.transports.http.QueryHandlerRegistry;
import org.mortbay.jetty.HttpConnection;
import org.mortbay.jetty.Request;
import org.mortbay.jetty.handler.AbstractHandler;
@@ -90,7 +86,7 @@
*/
public JettyHTTPDestination(Bus b, ConduitInitiator ci, EndpointInfo endpointInfo, ServerEngine eng)
throws IOException {
- super(b, ci, endpointInfo);
+ super(b, ci, endpointInfo, true);
alternateEngine = eng;
}
@@ -107,25 +103,19 @@
: JettyHTTPServerEngine.getForPort(bus,
nurl.getProtocol(),
nurl.getPort(),
- config.getSslServer());
+ getSslServer());
}
- /**
- * @return the encapsulated config bean
- */
- protected HTTPDestinationConfigBean getConfig() {
- return config;
- }
-
+
/**
* Activate receipt of incoming messages.
*/
protected void activate() {
- LOG.log(Level.INFO, "Activating receipt of incoming messages");
+ LOG.log(Level.FINE, "Activating receipt of incoming messages");
try {
URL url = new URL(getAddressValue(endpointInfo));
//The handler is bind with the context,
- //we need to set the things on on context
+ //TODO we need to set the things on on context
if (contextMatchOnExact()) {
engine.addServant(url, new AbstractHandler() {
public void handle(String target, HttpServletRequest req,
@@ -168,22 +158,7 @@
return new BackChannelConduit(response);
}
- /**
- * Mark message as a partial message.
- *
- * @param partialResponse the partial response message
- * @param the decoupled target
- * @return true iff partial responses are supported
- */
- protected boolean markPartialResponse(Message partialResponse,
- EndpointReferenceType decoupledTarget) {
- // setup the outbound message to for 202 Accepted
- partialResponse.put(Message.RESPONSE_CODE, HttpURLConnection.HTTP_ACCEPTED);
- partialResponse.getExchange().put(EndpointReferenceType.class,
- decoupledTarget);
- return true;
- }
-
+
/**
* @return the associated conduit initiator
*/
@@ -246,30 +221,24 @@
Request baseRequest = (req instanceof Request)
? (Request)req : HttpConnection.getCurrentConnection().getRequest();
- if (config.getServer().isSetRedirectURL()) {
- resp.sendRedirect(config.getServer().getRedirectURL());
+ if (getServer().isSetRedirectURL()) {
+ resp.sendRedirect(getServer().getRedirectURL());
resp.flushBuffer();
baseRequest.setHandled(true);
return;
}
-
- if ("GET".equals(req.getMethod()) && "wsdl".equalsIgnoreCase(req.getQueryString())) {
- try {
-
- resp.addHeader(HttpHeaderHelper.CONTENT_TYPE, "text/xml");
-
- OutputStream os = resp.getOutputStream();
-
- WSDLWriter wsdlWriter = WSDLFactory.newInstance().newWSDLWriter();
- Definition def = new ServiceWSDLBuilder(endpointInfo.getService()).build();
- wsdlWriter.writeWSDL(def, os);
- resp.getOutputStream().flush();
- resp.flushBuffer();
- baseRequest.setHandled(true);
- return;
- } catch (Exception ex) {
-
- ex.printStackTrace();
+
+ QueryHandlerRegistry queryHandlerRegistry = bus.getExtension(QueryHandlerRegistry.class);
+ if (queryHandlerRegistry != null) {
+ for (QueryHandler qh : queryHandlerRegistry.getHandlers()) {
+ String requestURL = req.getPathInfo() + "?" + req.getQueryString();
+ if (qh.isRecognizedQuery(requestURL, endpointInfo)) {
+ resp.setContentType(qh.getResponseContentType(requestURL));
+ qh.writeResponse(requestURL, endpointInfo, resp.getOutputStream());
+ resp.getOutputStream().flush();
+ baseRequest.setHandled(true);
+ return;
+ }
}
}
@@ -297,7 +266,7 @@
if (!StringUtils.isEmpty(getAddressValue(endpointInfo))) {
inMessage.put(Message.BASE_PATH, new URL(getAddressValue(endpointInfo)).getPath());
}
- inMessage.put(Message.FIXED_PARAMETER_ORDER, config.isFixedParameterOrder());
+ inMessage.put(Message.FIXED_PARAMETER_ORDER, isFixedParameterOrder());
inMessage.put(Message.ASYNC_POST_RESPONSE_DISPATCH, Boolean.TRUE);
setHeaders(inMessage);
Modified: incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java?view=diff&rev=512641&r1=512640&r2=512641
==============================================================================
--- incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java (original)
+++ incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java Tue Feb 27 23:28:28 2007
@@ -48,7 +48,6 @@
import org.apache.cxf.transport.DestinationFactory;
import org.apache.cxf.transport.DestinationFactoryManager;
import org.apache.cxf.transport.MessageObserver;
-import org.apache.cxf.transport.http.conduit.HTTPConduitConfigBean;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
import org.apache.cxf.wsdl.EndpointReferenceUtils;
import org.easymock.classextension.EasyMock;
@@ -234,20 +233,20 @@
connectionFactory);
conduit.retrieveConnectionFactory();
- HTTPConduitConfigBean config = conduit.getConfig();
+ //HTTPConduitConfigBean config = conduit.getConfig();
if (send) {
- config.getClient().setConnectionTimeout(303030);
- config.getClient().setReceiveTimeout(404040);
+ conduit.getClient().setConnectionTimeout(303030);
+ conduit.getClient().setReceiveTimeout(404040);
if (httpConnection) {
- conduit.getConfig().getClient().setAutoRedirect(autoRedirect);
+ conduit.getClient().setAutoRedirect(autoRedirect);
if (!autoRedirect) {
- config.getClient().setAllowChunking(true);
+ conduit.getClient().setAllowChunking(true);
}
}
}
if (decoupled) {
- config.getClient().setDecoupledEndpoint(decoupledURL.toString());
+ conduit.getClient().setDecoupledEndpoint(decoupledURL.toString());
assertNotNull("expected back channel", conduit.getBackChannel());
} else {
assertNull("unexpected back channel", conduit.getBackChannel());
Modified: incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/JettyHTTPDestinationTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/JettyHTTPDestinationTest.java?view=diff&rev=512641&r1=512640&r2=512641
==============================================================================
--- incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/JettyHTTPDestinationTest.java (original)
+++ incubator/cxf/trunk/rt/transports/http2/src/test/java/org/apache/cxf/transport/http/JettyHTTPDestinationTest.java Tue Feb 27 23:28:28 2007
@@ -252,7 +252,7 @@
conduitInitiator,
endpointInfo,
engine);
- assertEquals(policy, dest.getConfig().getServer());
+ assertEquals(policy, dest.getServer());
}
private JettyHTTPDestination setUpDestination()