[portal-commits] JBoss Portal SVN: r5861 - in trunk/server/src/main/org/jboss/portal/server: impl servlet

portal-commits at lists.jboss.org portal-commits at lists.jboss.org
Thu Dec 14 17:14:33 EST 2006


Author: julien at jboss.com
Date: 2006-12-14 17:14:30 -0500 (Thu, 14 Dec 2006)
New Revision: 5861

Modified:
   trunk/server/src/main/org/jboss/portal/server/impl/ServerInvocationContextImpl.java
   trunk/server/src/main/org/jboss/portal/server/servlet/PortalServlet.java
Log:
- move the Buffer class to a more appropriate location
- pre compute request prefix in constructor of ServerInvocationContextImpl

Modified: trunk/server/src/main/org/jboss/portal/server/impl/ServerInvocationContextImpl.java
===================================================================
--- trunk/server/src/main/org/jboss/portal/server/impl/ServerInvocationContextImpl.java	2006-12-14 21:03:28 UTC (rev 5860)
+++ trunk/server/src/main/org/jboss/portal/server/impl/ServerInvocationContextImpl.java	2006-12-14 22:14:30 UTC (rev 5861)
@@ -23,17 +23,19 @@
 package org.jboss.portal.server.impl;
 
 import org.jboss.portal.common.invocation.AbstractInvocationContext;
+import org.jboss.portal.common.text.CharBuffer;
+import org.jboss.portal.common.text.FastURLEncoder;
 import org.jboss.portal.server.PortalConstants;
 import org.jboss.portal.server.ServerInvocation;
 import org.jboss.portal.server.ServerInvocationContext;
 import org.jboss.portal.server.ServerURL;
 import org.jboss.portal.server.request.URLContext;
 import org.jboss.portal.server.request.URLFormat;
-import org.jboss.portal.server.servlet.PortalServlet;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.Map;
+import java.util.Iterator;
 
 /**
  * @author <a href="mailto:julien at jboss.org">Julien Viet</a>
@@ -42,6 +44,9 @@
 public class ServerInvocationContextImpl extends AbstractInvocationContext implements ServerInvocationContext
 {
 
+   /** The fast url encoder. */
+   private static final FastURLEncoder urlEncoder = FastURLEncoder.create("UTF8", 0, 1024);
+
    /** The client request. */
    private final HttpServletRequest req;
 
@@ -67,8 +72,14 @@
    private URLContext urlContext;
 
    /** . */
-   private PortalServlet.Buffer[] buffers;
+   private Buffer[] buffers;
 
+   /** . */
+   private final String requestRelativePrefix;
+
+   /** . */
+   private final String requestPrefix;
+
    public ServerInvocationContextImpl(
       HttpServletRequest req,
       HttpServletResponse resp,
@@ -97,9 +108,29 @@
       this.bodyParameterMap = bodyParameterMap;
       this.urlContext = urlContext;
       this.mediaType = mediaType;
-      this.buffers = new PortalServlet.Buffer[16];
+      this.buffers = new Buffer[16];
 
       //
+      StringBuffer requestRelativePrefix = new StringBuffer();
+      requestRelativePrefix.append(req.getScheme()).append("://").append(req.getServerName());
+      if (req.isSecure())
+      {
+         if (req.getServerPort() != 443)
+         {
+            requestRelativePrefix.append(":").append(Integer.toString(req.getServerPort()));
+         }
+      }
+      else if (req.getServerPort() != 80)
+      {
+         requestRelativePrefix.append(":").append(Integer.toString(req.getServerPort()));
+      }
+      requestRelativePrefix.append(req.getContextPath());
+
+      //
+      this.requestRelativePrefix = requestRelativePrefix.toString();
+      this.requestPrefix = req.getContextPath();
+
+      //
       addResolver(ServerInvocation.REQUEST_SCOPE, new RequestAttributeResolver(req));
       addResolver(ServerInvocation.SESSION_SCOPE, new SessionAttributeResolver(req, PortalConstants.PORTAL_SESSION_MAP_KEY));
       addResolver(ServerInvocation.PRINCIPAL_SCOPE, new PrincipalAttributeResolver(req));
@@ -151,9 +182,94 @@
       int index = context.getMask() << 2 | format.getMask();
       if (buffers[index] == null)
       {
-         buffers[index] = new PortalServlet.Buffer(req, resp, context, format);
+         buffers[index] = new Buffer(resp, context, format);
       }
-      PortalServlet.Buffer buffer = buffers[index];
+      Buffer buffer = buffers[index];
       return buffer.toString(url);
    }
+
+   public class Buffer extends CharBuffer
+   {
+
+      /** . */
+      private final HttpServletResponse resp;
+
+      /** . */
+      private final URLFormat format;
+
+      /** . */
+      private final int prefixLength;
+
+      public Buffer(HttpServletResponse resp, URLContext context, URLFormat format)
+      {
+         this.resp = resp;
+         this.format = format;
+
+         //
+         if (!format.isRelative())
+         {
+            append(requestRelativePrefix);
+         }
+         else
+         {
+            append(requestPrefix);
+         }
+
+         // Append the servlet path
+         switch(context.getMask())
+         {
+            case URLContext.AUTH_MASK + URLContext.SEC_MASK:
+               append("/authsec");
+               break;
+            case URLContext.AUTH_MASK:
+               append("/auth");
+               break;
+            case URLContext.SEC_MASK:
+               append("/sec");
+               break;
+         }
+
+         // Save the prefix length
+         this.prefixLength = length;
+      }
+
+      public String toString(ServerURL url)
+      {
+         // Reset the prefix length
+         this.length = prefixLength;
+
+         // julien : check UTF-8 is ok and should not be dependant on the response charset
+         append(url.getPortalRequestPath());
+
+         //
+         boolean first = true;
+         for (Iterator i = url.getParameterMap().entrySet().iterator(); i.hasNext();)
+         {
+            Map.Entry parameter = (Map.Entry)i.next();
+            String name = (String)parameter.getKey();
+            String[] values = (String[])parameter.getValue();
+            for (int j = 0; j < values.length; j++)
+            {
+               String value = values[j];
+               append(first ? '?' : '&');
+               append(name, urlEncoder);
+               append('=');
+               append(value, urlEncoder);
+               first = false;
+            }
+         }
+
+         // Stringify
+         String s = asString();
+
+         // Let the servlet rewrite the URL if necessary
+         if (format.isServletEncoded())
+         {
+            s = resp.encodeURL(s);
+         }
+
+         //
+         return s;
+      }
+   }
 }

Modified: trunk/server/src/main/org/jboss/portal/server/servlet/PortalServlet.java
===================================================================
--- trunk/server/src/main/org/jboss/portal/server/servlet/PortalServlet.java	2006-12-14 21:03:28 UTC (rev 5860)
+++ trunk/server/src/main/org/jboss/portal/server/servlet/PortalServlet.java	2006-12-14 22:14:30 UTC (rev 5861)
@@ -29,8 +29,6 @@
 import org.jboss.portal.common.invocation.InvocationException;
 import org.jboss.portal.common.util.Exceptions;
 import org.jboss.portal.common.util.URLTools;
-import org.jboss.portal.common.text.FastURLEncoder;
-import org.jboss.portal.common.text.CharBuffer;
 import org.jboss.portal.server.PortalConstants;
 import org.jboss.portal.server.RequestController;
 import org.jboss.portal.server.RequestControllerDispatcher;
@@ -40,10 +38,8 @@
 import org.jboss.portal.server.ServerInvocationContext;
 import org.jboss.portal.server.ServerRequest;
 import org.jboss.portal.server.ServerResponse;
-import org.jboss.portal.server.ServerURL;
 import org.jboss.portal.server.impl.ServerInvocationContextImpl;
 import org.jboss.portal.server.request.URLContext;
-import org.jboss.portal.server.request.URLFormat;
 
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
@@ -88,9 +84,6 @@
    /** Describes a path mapping. */
    private static final int PATH_MAPPING = 2;
 
-   /** The fast url encoder. */
-   private static final FastURLEncoder urlEncoder = FastURLEncoder.create("UTF8", 0, 1024);
-
    /** The logger. */
    protected Logger log = Logger.getLogger(getClass());
 
@@ -436,117 +429,7 @@
       }
    }
 
-   public static class Buffer extends CharBuffer
-   {
 
-      /** . */
-      private final HttpServletRequest req;
-
-      /** . */
-      private final HttpServletResponse resp;
-
-      /** . */
-      private final URLContext context;
-
-      /** . */
-      private final URLFormat format;
-
-      /** . */
-      private final int prefixLength;
-
-      public Buffer(HttpServletRequest req, HttpServletResponse resp, URLContext context, URLFormat format)
-      {
-         this.req = req;
-         this.resp = resp;
-         this.context = context;
-         this.format = format;
-
-         //
-         if (!format.isRelative())
-         {
-            append(req.getScheme());
-            append("://");
-            append(req.getServerName());
-
-            //
-            int port = req.getServerPort();
-            if (req.isSecure())
-            {
-               if (port != 443)
-               {
-                  append(":");
-                  append(Integer.toString(port));
-               }
-            }
-            else if (port != 80)
-            {
-               append(":");
-               append(Integer.toString(port));
-            }
-         }
-
-         // Append the context path
-         append(req.getContextPath());
-
-         // Append the servlet path
-         switch(context.getMask())
-         {
-            case URLContext.AUTH_MASK + URLContext.SEC_MASK:
-               append("/authsec");
-               break;
-            case URLContext.AUTH_MASK:
-               append("/auth");
-               break;
-            case URLContext.SEC_MASK:
-               append("/sec");
-               break;
-         }
-
-         // Save the prefix length
-         this.prefixLength = length;
-      }
-
-
-      public String toString(ServerURL url)
-      {
-         // Reset the prefix length
-         this.length = prefixLength;
-
-         // julien : check UTF-8 is ok and should not be dependant on the response charset
-         append(url.getPortalRequestPath());
-
-         //
-         boolean first = true;
-         for (Iterator i = url.getParameterMap().entrySet().iterator(); i.hasNext();)
-         {
-            Map.Entry parameter = (Map.Entry)i.next();
-            String name = (String)parameter.getKey();
-            String[] values = (String[])parameter.getValue();
-            for (int j = 0; j < values.length; j++)
-            {
-               String value = values[j];
-               append(first ? '?' : '&');
-               append(name, urlEncoder);
-               append('=');
-               append(value, urlEncoder);
-               first = false;
-            }
-         }
-
-         // Stringify
-         String s = asString();
-
-         // Let the servlet rewrite the URL if necessary
-         if (format.isServletEncoded())
-         {
-            s = resp.encodeURL(s);
-         }
-
-         //
-         return s;
-      }
-   }
-
    private URLContext parseURLContext(HttpServletRequest req)
    {
       return URLContext.newInstance(req.isSecure(), req.getRemoteUser() != null);




More information about the portal-commits mailing list