Author: rmannibucau
Date: Sun Nov 11 22:01:52 2012
New Revision: 1408127

URL: http://svn.apache.org/viewvc?rev=1408127&view=rev
Log:
OPENEJB-1931 managing pathinfo

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
    
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
    
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletListener.java
    
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/util/HttpUtil.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java?rev=1408127&r1=1408126&r2=1408127&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
 Sun Nov 11 22:01:52 2012
@@ -30,6 +30,8 @@ import org.apache.openejb.core.CoreConta
 import org.apache.openejb.core.WebContext;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.ContainerSystem;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
 
 import javax.naming.Binding;
 import javax.naming.Context;
@@ -52,6 +54,8 @@ import java.util.Map;
 import java.util.Set;
 
 public class LightweightWebAppBuilder implements WebAppBuilder {
+    private static final Logger LOGGER = 
Logger.getInstance(LogCategory.OPENEJB, LightweightWebAppBuilder.class);
+
     private static final Method addServletMethod;
     private static final Method removeServletMethod;
 
@@ -106,7 +110,7 @@ public class LightweightWebAppBuilder im
                         addServletMethod.invoke(null, info.servletClass, 
webContext, mapping);
                         deployedServlet.mappings.add(mapping);
                     } catch (Exception e) {
-                        // no-op
+                        LOGGER.warning(e.getMessage(), e);
                     }
                 }
             }
@@ -124,7 +128,7 @@ public class LightweightWebAppBuilder im
                                 addServletMethod.invoke(null, classname, 
webContext, mapping);
                                 deployedServlet.mappings.add(mapping);
                             } catch (Exception e) {
-                                // no-op
+                                LOGGER.warning(e.getMessage(), e);
                             }
                         }
                     }

Modified: 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java?rev=1408127&r1=1408126&r2=1408127&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
 Sun Nov 11 22:01:52 2012
@@ -951,6 +951,10 @@ public class HttpRequestImpl implements 
         attributes.remove(s);
     }
 
+    public void setPath(final String path) {
+        this.path = path;
+    }
+
     public String requestRawPath() {
         try {
             return new URI(getRequestURI()).getRawPath();

Modified: 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletListener.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletListener.java?rev=1408127&r1=1408126&r2=1408127&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletListener.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletListener.java
 Sun Nov 11 22:01:52 2012
@@ -20,13 +20,22 @@ import javax.servlet.Servlet;
 
 public class ServletListener implements HttpListener {
     private final Servlet delegate;
+    private final String context;
 
-    public ServletListener(final Servlet instance) {
+    public ServletListener(final Servlet instance, final String contextRoot) {
         delegate = instance;
+        context = contextRoot;
     }
 
     @Override
     public void onMessage(final HttpRequest request, final HttpResponse 
response) throws Exception {
+        if (request instanceof HttpRequestImpl) {
+            final HttpRequestImpl req = (HttpRequestImpl) request;
+            final String rawPath = req.requestRawPath();
+            if (context != null) {
+                req.setPath(rawPath.substring(1 + context.length(), 
rawPath.length())); // 1 because of the first /
+            }
+        }
         delegate.service(request, response);
     }
 

Modified: 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/util/HttpUtil.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/util/HttpUtil.java?rev=1408127&r1=1408126&r2=1408127&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/util/HttpUtil.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/util/HttpUtil.java
 Sun Nov 11 22:01:52 2012
@@ -62,10 +62,12 @@ public final class HttpUtil {
 
         final ServletListener listener;
         try {
-            listener = new ServletListener((Servlet) 
wc.newInstance(wc.getClassLoader().loadClass(classname)));
+            listener = new ServletListener((Servlet) 
wc.newInstance(wc.getClassLoader().loadClass(classname)), wc.getContextRoot());
+            listener.getDelegate().init(null);
         } catch (Exception e) {
             throw new OpenEJBRuntimeException(e);
         }
+
         registry.addHttpListener(listener, pattern(wc.getContextRoot(), 
mapping));
         return true;
     }
@@ -76,7 +78,9 @@ public final class HttpUtil {
             return;
         }
 
-        wc.destroy(((ServletListener) 
registry.removeHttpListener(pattern(wc.getContextRoot(), 
mapping))).getDelegate());
+        final Servlet servlet = ((ServletListener) 
registry.removeHttpListener(pattern(wc.getContextRoot(), 
mapping))).getDelegate();
+        servlet.destroy();
+        wc.destroy(servlet);
     }
 
     private static String pattern(final String contextRoot, final String 
mapping) {


Reply via email to