Return-Path: Delivered-To: apmail-portals-jetspeed-dev-archive@www.apache.org Received: (qmail 94332 invoked from network); 16 Jul 2010 23:57:45 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 16 Jul 2010 23:57:45 -0000 Received: (qmail 60242 invoked by uid 500); 16 Jul 2010 23:57:45 -0000 Delivered-To: apmail-portals-jetspeed-dev-archive@portals.apache.org Received: (qmail 60187 invoked by uid 500); 16 Jul 2010 23:57:44 -0000 Mailing-List: contact jetspeed-dev-help@portals.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Jetspeed Developers List" Delivered-To: mailing list jetspeed-dev@portals.apache.org Received: (qmail 60175 invoked by uid 99); 16 Jul 2010 23:57:44 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Jul 2010 23:57:44 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Jul 2010 23:57:41 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 154B123888E4; Fri, 16 Jul 2010 23:56:18 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r964985 - in /portals/jetspeed-2/portal/trunk: components/jetspeed-portal/src/main/java/org/apache/jetspeed/decoration/DecorationValve.java jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml Date: Fri, 16 Jul 2010 23:56:17 -0000 To: jetspeed-dev@portals.apache.org From: woonsan@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100716235618.154B123888E4@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: woonsan Date: Fri Jul 16 23:56:17 2010 New Revision: 964985 URL: http://svn.apache.org/viewvc?rev=964985&view=rev Log: JS2-1203: Exposing the default decorator actions factory as a constructor arg to allow injection in spring assembly. Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/decoration/DecorationValve.java portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/decoration/DecorationValve.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/decoration/DecorationValve.java?rev=964985&r1=964984&r2=964985&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/decoration/DecorationValve.java (original) +++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/decoration/DecorationValve.java Fri Jul 16 23:56:17 2010 @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Properties; import javax.portlet.PortletMode; @@ -63,7 +64,7 @@ import org.slf4j.LoggerFactory; * * @author Scott T. Weaver * @author Vivek Kumar - * + * @version $Id$ */ public class DecorationValve extends AbstractValve implements Valve { @@ -74,9 +75,11 @@ public class DecorationValve extends Abs private final DecorationFactory decorationFactory; - private HashMap decoratorActionsAdapterCache = new HashMap(); + private Map decoratorActionsAdapterCache = Collections.synchronizedMap(new HashMap()); private DecoratorActionsFactory defaultDecoratorActionsFactory; + + private String defaultDecoratorActionsFactoryClassName; private JetspeedContentCache cache = null; @@ -130,9 +133,19 @@ public class DecorationValve extends Abs SecurityAccessController accessController, JetspeedContentCache cache, boolean useSessionForThemeCaching, PortletFactory portletFactory) - { + { + this(decorationFactory, accessController, cache, useSessionForThemeCaching, null, new DefaultDecoratorActionsFactory()); + } + + public DecorationValve(DecorationFactory decorationFactory, + SecurityAccessController accessController, + JetspeedContentCache cache, boolean useSessionForThemeCaching, + PortletFactory portletFactory, + DecoratorActionsFactory defaultDecoratorActionsFactory) + { this.decorationFactory = decorationFactory; - this.defaultDecoratorActionsFactory = new DefaultDecoratorActionsFactory(); + this.defaultDecoratorActionsFactory = defaultDecoratorActionsFactory; + this.defaultDecoratorActionsFactoryClassName = defaultDecoratorActionsFactory.getClass().getName(); //added the accessController in portlet decorater for checking the actions this.accessController = accessController; this.cache = cache; @@ -298,37 +311,33 @@ public class DecorationValve extends Abs public DecoratorActionsFactory getDecoratorActionsAdapter(Decoration decoration) { - // FIXME: why always get this property + // read custom decorator actions factory class name from the decoration properties. String decoratorActionsAdapterClassName = decoration.getProperty("actions.factory"); - if ( decoratorActionsAdapterClassName == null ) + if (decoratorActionsAdapterClassName == null || "".equals(decoratorActionsAdapterClassName) || decoratorActionsAdapterClassName.equals(defaultDecoratorActionsFactoryClassName)) { - decoratorActionsAdapterClassName = defaultDecoratorActionsFactory.getClass().getName(); + return defaultDecoratorActionsFactory; } - synchronized (decoratorActionsAdapterCache) + + DecoratorActionsFactory adapter = (DecoratorActionsFactory) decoratorActionsAdapterCache.get(decoratorActionsAdapterClassName); + + if (adapter == null) { - DecoratorActionsFactory adapter = (DecoratorActionsFactory)decoratorActionsAdapterCache.get(decoratorActionsAdapterClassName); - if ( adapter == null ) + try { - try - { - adapter = (DecoratorActionsFactory)Class.forName(decoratorActionsAdapterClassName).newInstance(); - adapter.setMaximizeOnEdit(this.maxOnEdit); - adapter.setMaximizeOnConfig(this.maxOnConfig); - adapter.setMaximizeOnEditDefaults(this.maxOnEditDefaults); - } - catch (Exception e) - { - log.error("Failed to instantiate custom DecoratorActionsAdaptor "+decoratorActionsAdapterClassName+", falling back to default.",e); - adapter = (DecoratorActionsFactory)decoratorActionsAdapterCache.get(defaultDecoratorActionsFactory.getClass().getName()); - if ( adapter == null ) - { - adapter = defaultDecoratorActionsFactory; - } - } - decoratorActionsAdapterCache.put(decoratorActionsAdapterClassName,adapter); + adapter = (DecoratorActionsFactory) Class.forName(decoratorActionsAdapterClassName).newInstance(); + adapter.setMaximizeOnEdit(this.maxOnEdit); + adapter.setMaximizeOnConfig(this.maxOnConfig); + adapter.setMaximizeOnEditDefaults(this.maxOnEditDefaults); + decoratorActionsAdapterCache.put(decoratorActionsAdapterClassName, adapter); + } + catch (Exception e) + { + adapter = defaultDecoratorActionsFactory; + log.error("Failed to instantiate custom DecoratorActionsAdaptor " + decoratorActionsAdapterClassName + ", falling back to default.", e); } - return adapter; } + + return adapter; } /** Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml?rev=964985&r1=964984&r2=964985&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml (original) +++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml Fri Jul 16 23:56:17 2010 @@ -442,6 +442,13 @@ + + + + + + + false --------------------------------------------------------------------- To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org For additional commands, e-mail: jetspeed-dev-help@portals.apache.org