You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2009/09/08 09:22:34 UTC
svn commit: r812354 - in /sling/whiteboard/portal/container/src/main:
java/org/apache/sling/portal/container/internal/request/
resources/OSGI-INF/ resources/OSGI-INF/metatype/
Author: cziegeler
Date: Tue Sep 8 07:22:34 2009
New Revision: 812354
URL: http://svn.apache.org/viewvc?rev=812354&view=rev
Log:
Add a switch to disable the portlet link rewriting.
Added:
sling/whiteboard/portal/container/src/main/resources/OSGI-INF/
sling/whiteboard/portal/container/src/main/resources/OSGI-INF/metatype/
sling/whiteboard/portal/container/src/main/resources/OSGI-INF/metatype/metatype.properties (with props)
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=812354&r1=812353&r2=812354&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 Tue Sep 8 07:22:34 2009
@@ -64,20 +64,25 @@
private ContentHandler handler;
+ private boolean enabled = true;
/**
* @see org.apache.sling.rewriter.Transformer#init(org.apache.sling.rewriter.ProcessingContext, org.apache.sling.rewriter.ProcessingComponentConfiguration)
*/
public void init(ProcessingContext context,
ProcessingComponentConfiguration config)
throws IOException {
- // nothing to do
+ this.enabled = PortalRequestContext.getContext() != null;
}
@Override
public void setContentHandler(ContentHandler ch) {
this.handler = ch;
- this.buffer = new SAXBuffer();
- super.setContentHandler(this.buffer);
+ if ( this.enabled ) {
+ this.buffer = new SAXBuffer();
+ super.setContentHandler(this.buffer);
+ } else {
+ super.setContentHandler(ch);
+ }
}
@Override
@@ -103,27 +108,30 @@
Attributes a)
throws SAXException {
String queryString = null;
- // this is a link
- if ( portletQueryString != null && "a".equals(loc) ) {
- final String href = a.getValue("href");
- if ( needsRewrite(href) ) {
- char sep = (href.indexOf('?') == -1 ? '?' : '&');
- final AttributesImpl ai = new AttributesImpl(a);
- ai.removeAttribute("href");
- 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);
+
+ if ( this.enabled ) {
+ // this is a link
+ if ( portletQueryString != null && "a".equals(loc) ) {
+ final String href = a.getValue("href");
+ if ( needsRewrite(href) ) {
+ char sep = (href.indexOf('?') == -1 ? '?' : '&');
final AttributesImpl ai = new AttributesImpl(a);
- ai.removeAttribute("action");
- ai.addCDATAAttribute("action", url.substring(0, queryPos));
+ ai.removeAttribute("href");
+ 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;
+ }
+ }
}
}
super.startElement(uri, loc, raw, a);
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=812354&r1=812353&r2=812354&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 Tue Sep 8 07:22:34 2009
@@ -30,14 +30,16 @@
import org.apache.pluto.container.PortletContainerException;
import org.apache.pluto.container.PortletWindow;
+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 metatype="false"
+ * @scr.component label="%filter.name" description="%filter.description"
* @scr.service interface="javax.servlet.Filter"
*
* @scr.property name="filter.scope" value="request" private="true"
@@ -51,12 +53,28 @@
/** @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 HttpServletRequest req = (HttpServletRequest)request;
// we just instantiate a portal request context which might be used by the
// portal
Added: sling/whiteboard/portal/container/src/main/resources/OSGI-INF/metatype/metatype.properties
URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/resources/OSGI-INF/metatype/metatype.properties?rev=812354&view=auto
==============================================================================
--- sling/whiteboard/portal/container/src/main/resources/OSGI-INF/metatype/metatype.properties (added)
+++ sling/whiteboard/portal/container/src/main/resources/OSGI-INF/metatype/metatype.properties Tue Sep 8 07:22:34 2009
@@ -0,0 +1,34 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+#
+# This file contains localization strings for configuration labels and
+# descriptions as used in the metatype.xml descriptor generated by the
+# the SCR plugin
+
+#
+# Filter
+filter.name = Apache Sling Portal Container Filter
+filter.description = The portal container uses this filter for rewriting \
+ all links on a page to contain relevant portlet information. \
+ By default this filter is enabled, if you want to embed portlets \
+ in your page, you should activate this filter.
+
+filter.enable.name = Enabled
+filter.enable.descrition = Enable this filter.
Propchange: sling/whiteboard/portal/container/src/main/resources/OSGI-INF/metatype/metatype.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/whiteboard/portal/container/src/main/resources/OSGI-INF/metatype/metatype.properties
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: sling/whiteboard/portal/container/src/main/resources/OSGI-INF/metatype/metatype.properties
------------------------------------------------------------------------------
svn:mime-type = text/plain