Author: cziegeler
Date: Fri Nov 27 07:26:35 2009
New Revision: 884759

URL: http://svn.apache.org/viewvc?rev=884759&view=rev
Log:
No need to buffer the whole request.

Removed:
    
sling/whiteboard/portal/container/src/main/resources/OSGI-INF/metatype/metatype.properties
Modified:
    
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/LinkTransformerFactory.java
    
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/PortalFilter.java

Modified: 
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/LinkTransformerFactory.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/LinkTransformerFactory.java?rev=884759&r1=884758&r2=884759&view=diff
==============================================================================
--- 
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/LinkTransformerFactory.java
 (original)
+++ 
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/LinkTransformerFactory.java
 Fri Nov 27 07:26:35 2009
@@ -23,14 +23,12 @@
 
 import org.apache.cocoon.xml.sax.AbstractSAXPipe;
 import org.apache.cocoon.xml.sax.AttributesImpl;
-import org.apache.cocoon.xml.sax.SAXBuffer;
 import org.apache.sling.portal.container.internal.impl.DefaultPortalURLFactory;
 import org.apache.sling.rewriter.ProcessingComponentConfiguration;
 import org.apache.sling.rewriter.ProcessingContext;
 import org.apache.sling.rewriter.Transformer;
 import org.apache.sling.rewriter.TransformerFactory;
 import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
 /**
@@ -60,11 +58,7 @@
 
         private String portletQueryString;
 
-        private SAXBuffer buffer;
-
-        private ContentHandler handler;
-
-        private boolean enabled = true;
+        private boolean checkedQueryString = false;
 
         /**
          * @see 
org.apache.sling.rewriter.Transformer#init(org.apache.sling.rewriter.ProcessingContext,
 org.apache.sling.rewriter.ProcessingComponentConfiguration)
@@ -72,35 +66,19 @@
         public void init(ProcessingContext context,
                          ProcessingComponentConfiguration config)
         throws IOException {
-            this.enabled = PortalRequestContext.getContext() != null;
-        }
-
-        @Override
-        public void setContentHandler(ContentHandler ch) {
-            this.handler = ch;
-            if ( this.enabled ) {
-                this.buffer = new SAXBuffer();
-                super.setContentHandler(this.buffer);
-            } else {
-                super.setContentHandler(ch);
-            }
+            // nothing to do
         }
 
-        @Override
-        public void endDocument() throws SAXException {
-            super.endDocument();
-            if ( this.buffer != null ) {
-                final PortalURL url = 
PortalRequestContext.getContext().getRequestedPortalURL(false);
+        private void checkPortletQueryString() {
+            if ( !this.checkedQueryString ) {
+                this.checkedQueryString = true;
+                final PortalRequestContext prc = 
PortalRequestContext.getContext();
+                final PortalURL url = (prc == null ? null : 
prc.getRequestedPortalURL(false));
                 if ( url != null ) {
                     final String query = url.toURL(false);
                     final int pos = query.indexOf('?');
                     this.portletQueryString = query.substring(pos + 1);
                 }
-
-                final SAXBuffer buffer = this.buffer;
-                this.buffer = null;
-                super.setContentHandler(this.handler);
-                buffer.toSAX(this);
             }
         }
 
@@ -110,9 +88,10 @@
         throws SAXException {
             String queryString = null;
 
-            if ( this.enabled ) {
-                // this is a link
-                if ( portletQueryString != null && "a".equals(loc) ) {
+            // this is a link
+            if ( "a".equalsIgnoreCase(loc) ) {
+                this.checkPortletQueryString();
+                if ( this.portletQueryString != null ) {
                     final String href = a.getValue("href");
                     if ( needsRewrite(href) ) {
                         char sep = (href.indexOf('?') == -1 ? '?' : '&');
@@ -121,17 +100,17 @@
                         ai.addCDATAAttribute("href", href + sep + 
portletQueryString);
                         a = ai;
                     }
-                } else if ( "form".equals(loc) ) {
-                    if ( "post".equalsIgnoreCase(a.getValue("method")) ) {
-                        final String url = a.getValue("action");
-                        final int queryPos = url.indexOf('?');
-                        if ( queryPos != -1 ) {
-                            queryString = url.substring(queryPos + 1);
-                            final AttributesImpl ai = new AttributesImpl(a);
-                            ai.removeAttribute("action");
-                            ai.addCDATAAttribute("action", url.substring(0, 
queryPos));
-                            a = ai;
-                        }
+                }
+            } else if ( "form".equalsIgnoreCase(loc) ) {
+                if ( "post".equalsIgnoreCase(a.getValue("method")) ) {
+                    final String url = a.getValue("action");
+                    final int queryPos = url.indexOf('?');
+                    if ( queryPos != -1 ) {
+                        queryString = url.substring(queryPos + 1);
+                        final AttributesImpl ai = new AttributesImpl(a);
+                        ai.removeAttribute("action");
+                        ai.addCDATAAttribute("action", url.substring(0, 
queryPos));
+                        a = ai;
                     }
                 }
             }

Modified: 
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/PortalFilter.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/PortalFilter.java?rev=884759&r1=884758&r2=884759&view=diff
==============================================================================
--- 
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/PortalFilter.java
 (original)
+++ 
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/request/PortalFilter.java
 Fri Nov 27 07:26:35 2009
@@ -31,16 +31,14 @@
 import org.apache.pluto.container.PortletWindow;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.resource.ResourceUtil;
-import org.apache.sling.commons.osgi.OsgiUtil;
 import org.apache.sling.portal.container.SlingPortletContainer;
 import org.apache.sling.portal.container.internal.impl.DefaultPortalURLFactory;
-import org.osgi.service.component.ComponentContext;
 
 /**
  * This filter checks the url for special portal container parameters
  * and sets up the environment for portlet processing
  *
- * @scr.component label="%filter.name" description="%filter.description"
+ * @scr.component label="%filter.name" description="%filter.description" 
metatype="false"
  * @scr.service interface="javax.servlet.Filter"
  *
  * @scr.property name="filter.scope" value="request" private="true"
@@ -54,28 +52,12 @@
     /** @scr.reference */
     private SlingPortletContainer portletContainer;
 
-    /** @scr.property valueRef="DEFAULT_ENABLE" */
-    private static final String PROPERTY_ENABLE = "filter.enable";
-
-    /** Default value for enable. */
-    private static final boolean DEFAULT_ENABLE = false;
-
-    private boolean enabled;
-
-    protected void activate(final ComponentContext ctx) {
-        this.enabled = 
OsgiUtil.toBoolean(ctx.getProperties().get(PROPERTY_ENABLE), DEFAULT_ENABLE);
-    }
-
     /**
      * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, 
javax.servlet.ServletResponse, javax.servlet.FilterChain)
      */
     public void doFilter(ServletRequest request, ServletResponse response,
                          FilterChain chain)
     throws IOException, ServletException {
-        if ( !enabled ) {
-            chain.doFilter(request, response);
-            return;
-        }
         final SlingHttpServletRequest req = (SlingHttpServletRequest)request;
         // we just instantiate a portal request context which might be used by 
the
         // portal


Reply via email to