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/04/23 10:41:47 UTC
svn commit: r531379 - in
/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet:
CXFServlet.java ServletController.java ServletDestination.java
ServletTransportFactory.java
Author: dkulp
Date: Mon Apr 23 01:41:47 2007
New Revision: 531379
URL: http://svn.apache.org/viewvc?view=rev&rev=531379
Log:
Back out some of the servlet changes
Modified:
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java?view=diff&rev=531379&r1=531378&r2=531379
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java Mon Apr 23 01:41:47 2007
@@ -78,6 +78,9 @@
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
+ BusFactory.setDefaultBus(null);
+ BusFactory.setThreadDefaultBus(null);
+
String busid = servletConfig.getInitParameter("bus.id");
if (null != busid) {
WeakReference<Bus> ref = BUS_MAP.get(busid);
@@ -98,6 +101,9 @@
if (null != busid) {
BUS_MAP.put(busid, new WeakReference<Bus>(bus));
}
+
+ BusFactory.setDefaultBus(null);
+ BusFactory.setThreadDefaultBus(null);
}
private void loadBusNoConfig(ServletConfig servletConfig) throws ServletException {
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java?view=diff&rev=531379&r1=531378&r2=531379
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java Mon Apr 23 01:41:47 2007
@@ -22,6 +22,7 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collection;
+import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -45,11 +46,30 @@
private ServletTransportFactory transport;
private CXFServlet cxfServlet;
+ private String lastBase = "";
public ServletController(ServletTransportFactory df, CXFServlet servlet) {
this.transport = df;
this.cxfServlet = servlet;
}
+
+ private synchronized void updateDests(HttpServletRequest request) {
+ String base = getBaseURL(request);
+
+ if (base.equals(lastBase)) {
+ return;
+ }
+ Set<String> paths = transport.getDestinationsPaths();
+ for (String path : paths) {
+ ServletDestination d2 = transport.getDestinationForPath(path);
+ String ad = d2.getEndpointInfo().getAddress();
+ if (ad.equals(path)
+ || ad.equals(lastBase + path)) {
+ d2.getEndpointInfo().setAddress(base + path);
+ }
+ }
+ lastBase = base;
+ }
public void invoke(HttpServletRequest request, HttpServletResponse res) throws ServletException {
try {
@@ -58,6 +78,10 @@
ei.setAddress(address);
ServletDestination d = (ServletDestination)transport.getDestination(ei);
+
+ if ("GET".equals(request.getMethod())) {
+ updateDests(request);
+ }
if (d.getMessageObserver() == null) {
if (request.getRequestURI().endsWith("services")
@@ -109,20 +133,10 @@
response.setContentType("text/html");
response.getWriter().write("<html><body>");
- String reqPerfix = getBaseURL(request);
-
if (destinations.size() > 0) {
for (ServletDestination sd : destinations) {
if (null != sd.getEndpointInfo().getName()) {
- StringBuilder sb = new StringBuilder();
- sb.append(reqPerfix);
- String path = sd.getAddressPath();
- if (reqPerfix.endsWith("/")) {
- path = path.substring(1);
- }
- sb.append(path);
-
- String address = sb.toString();
+ String address = sd.getEndpointInfo().getAddress();
response.getWriter().write("<p> <a href=\"" + address + "?wsdl\">");
response.getWriter().write(sd.getEndpointInfo().getName() + "</a> </p>");
}
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java?view=diff&rev=531379&r1=531378&r2=531379
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java Mon Apr 23 01:41:47 2007
@@ -84,8 +84,6 @@
}
-
-
protected void doMessage(MessageImpl inMessage) throws IOException {
try {
@@ -100,19 +98,6 @@
LOG.info("Finished servicing http request on thread: " + Thread.currentThread());
}
}
- }
-
- public String getAddressPath() {
- String path = endpointInfo.getAddress();
- String lh = "http://localhost/";
- String lhs = "https://localhost/";
-
- if (path.startsWith(lh)) {
- path = "/" + path.substring(lh.length());
- } else if (path.startsWith(lhs)) {
- path = "/" + path.substring(lhs.length());
- }
- return path;
}
public MessageObserver getMessageObserver() {
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java?view=diff&rev=531379&r1=531378&r2=531379
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java Mon Apr 23 01:41:47 2007
@@ -73,13 +73,17 @@
}
private String getTrimmedPath(String path) {
- String lh = "http://localhost/";
- String lhs = "https://localhost/";
+ final String lh = "http://localhost/";
+ final String lhs = "https://localhost/";
if (path.startsWith(lh)) {
- path = "/" + path.substring(lh.length());
+ path = path.substring(lh.length());
} else if (path.startsWith(lhs)) {
- path = "/" + path.substring(lhs.length());
+ path = path.substring(lhs.length());
+ }
+ if (!path.startsWith("/")) {
+ path = "/" + path;
+
}
return path;
}