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