Author: julien(a)jboss.com
Date: 2008-04-15 08:30:52 -0400 (Tue, 15 Apr 2008)
New Revision: 10591
Added:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/invocation/PortletInterceptor2.java
Modified:
modules/portlet/trunk/portal/src/main/resources/simple-portal-war/WEB-INF/jboss-beans.xml
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/ConsumerStatefulPortletInvokerTestCase.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/ProducerStatefulPortletInvokerTestCase.java
modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-beans.xml
modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml
Log:
make the ProducerPortletInvoker and ConsumerPortletInvoker use a new PortletInterceptor
that handles all methods and not only runtime methods
Modified:
modules/portlet/trunk/portal/src/main/resources/simple-portal-war/WEB-INF/jboss-beans.xml
===================================================================
---
modules/portlet/trunk/portal/src/main/resources/simple-portal-war/WEB-INF/jboss-beans.xml 2008-04-15
12:14:03 UTC (rev 10590)
+++
modules/portlet/trunk/portal/src/main/resources/simple-portal-war/WEB-INF/jboss-beans.xml 2008-04-15
12:30:52 UTC (rev 10591)
@@ -104,7 +104,7 @@
<!-- The producer portlet invoker -->
<bean name="ProducerPortletInvoker"
class="org.jboss.portal.portlet.state.producer.ProducerPortletInvoker">
- <property name="portletInvoker"><inject
bean="ContainerPortletInvoker"/></property>
+ <property name="next"><inject
bean="ContainerPortletInvoker"/></property>
<property name="persistenceManager"><inject
bean="ProducerPersistenceManager"/></property>
<property name="stateManagementPolicy"><inject
bean="ProducerStateManagementPolicy"/></property>
<property name="stateConverter"><inject
bean="ProducerStateConverter"/></property>
Added:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/invocation/PortletInterceptor2.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/invocation/PortletInterceptor2.java
(rev 0)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/invocation/PortletInterceptor2.java 2008-04-15
12:30:52 UTC (rev 10591)
@@ -0,0 +1,137 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2008, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.portlet.invocation;
+
+import org.jboss.portal.portlet.PortletInvoker;
+import org.jboss.portal.portlet.Portlet;
+import org.jboss.portal.portlet.PortletInvokerException;
+import org.jboss.portal.portlet.PortletContext;
+import org.jboss.portal.portlet.state.DestroyCloneFailure;
+import org.jboss.portal.portlet.state.PropertyMap;
+import org.jboss.portal.portlet.state.PropertyChange;
+import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
+
+import java.util.Set;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:julien@jboss-portal.org">Julien
Viet</a>
+ * @version $Revision: 630 $
+ */
+public class PortletInterceptor2 implements PortletInvoker
+{
+
+ /** . */
+ private PortletInvoker next;
+
+ public PortletInterceptor2()
+ {
+ }
+
+ public PortletInterceptor2(PortletInvoker next)
+ {
+ this.next = next;
+ }
+
+ public PortletInvoker getNext()
+ {
+ return next;
+ }
+
+ public void setNext(PortletInvoker next)
+ {
+ this.next = next;
+ }
+
+ public Set<Portlet> getPortlets() throws PortletInvokerException
+ {
+ if (next == null)
+ {
+ throw new IllegalStateException("No next invoker");
+ }
+ return next.getPortlets();
+ }
+
+ public Portlet getPortlet(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
+ {
+ if (next == null)
+ {
+ throw new IllegalStateException("No next invoker");
+ }
+ return next.getPortlet(portletContext);
+ }
+
+ public PortletInvocationResponse invoke(PortletInvocation invocation) throws
IllegalArgumentException, PortletInvokerException
+ {
+ if (next == null)
+ {
+ throw new IllegalStateException("No next invoker");
+ }
+ return next.invoke(invocation);
+ }
+
+ public PortletContext createClone(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException, UnsupportedOperationException
+ {
+ if (next == null)
+ {
+ throw new IllegalStateException("No next invoker");
+ }
+ return next.createClone(portletContext);
+ }
+
+ public List<DestroyCloneFailure> destroyClones(List<PortletContext>
portletContexts) throws IllegalArgumentException, PortletInvokerException,
UnsupportedOperationException
+ {
+ if (next == null)
+ {
+ throw new IllegalStateException("No next invoker");
+ }
+ return next.destroyClones(portletContexts);
+ }
+
+ public PropertyMap getProperties(PortletContext portletContext, Set<String>
keys) throws IllegalArgumentException, PortletInvokerException,
UnsupportedOperationException
+ {
+ if (next == null)
+ {
+ throw new IllegalStateException("No next invoker");
+ }
+ return next.getProperties(portletContext, keys);
+ }
+
+ public PropertyMap getProperties(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException, UnsupportedOperationException
+ {
+ if (next == null)
+ {
+ throw new IllegalStateException("No next invoker");
+ }
+ return next.getProperties(portletContext);
+ }
+
+ public PortletContext setProperties(PortletContext portletContext, PropertyChange[]
changes) throws IllegalArgumentException, PortletInvokerException,
UnsupportedOperationException
+ {
+ if (next == null)
+ {
+ throw new IllegalStateException("No next invoker");
+ }
+ return next.setProperties(portletContext, changes);
+ }
+}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java 2008-04-15
12:14:03 UTC (rev 10590)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java 2008-04-15
12:30:52 UTC (rev 10591)
@@ -27,10 +27,10 @@
import org.jboss.portal.portlet.NoSuchPortletException;
import org.jboss.portal.portlet.Portlet;
import org.jboss.portal.portlet.PortletContext;
-import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.StateEvent;
import org.jboss.portal.portlet.invocation.PortletInvocation;
+import org.jboss.portal.portlet.invocation.PortletInterceptor2;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import org.jboss.portal.portlet.spi.InstanceContext;
import org.jboss.portal.portlet.state.AccessMode;
@@ -48,16 +48,13 @@
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 6765 $
*/
-public class ConsumerPortletInvoker implements PortletInvoker
+public class ConsumerPortletInvoker extends PortletInterceptor2
{
/** . */
private static final String CLONE_ID_PREFIX = "@";
/** . */
- private PortletInvoker producer;
-
- /** . */
private ConsumerPersistenceManager persistenceManager;
public PortletContext unwrapCCP(String wrappedCCP) throws InvalidPortletIdException
@@ -104,26 +101,6 @@
return popCtx.getId();
}
- /**
- * Returns the producer.
- *
- * @return the producer
- */
- public PortletInvoker getProducer()
- {
- return producer;
- }
-
- /**
- * Sets the producer.
- *
- * @param producer the producer
- */
- public void setProducer(PortletInvoker producer)
- {
- this.producer = producer;
- }
-
public void setPersistenceManager(ConsumerPersistenceManager persistenceManager)
{
this.persistenceManager = persistenceManager;
@@ -133,7 +110,7 @@
public Set<Portlet> getPortlets() throws PortletInvokerException
{
// We don't need proxies here because we return the list of offered portlets
- return producer.getPortlets();
+ return super.getPortlets();
}
public Portlet getPortlet(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
@@ -162,7 +139,7 @@
invocation.setInstanceContext(pictx);
//
- PortletInvocationResponse response = producer.invoke(invocation);
+ PortletInvocationResponse response = super.invoke(invocation);
//
PortletContext clonedContext = pictx.clonedContext;
@@ -225,7 +202,7 @@
ConsumerContext consumerContext = getConsumerContext(portletContext);
//
- PortletContext clonedContext =
producer.createClone(consumerContext.producerPortletContext);
+ PortletContext clonedContext =
super.createClone(consumerContext.producerPortletContext);
byte[] state = clonedContext.getState();
if (state != null)
@@ -270,7 +247,7 @@
}
//
- List<DestroyCloneFailure> failures =
producer.destroyClones(portletContexts);
+ List<DestroyCloneFailure> failures = super.destroyClones(portletContexts);
// Probably should wrap the portlet context here ????
// for (Iterator i = failures.iterator(); i.hasNext();)
@@ -286,13 +263,13 @@
public PropertyMap getProperties(PortletContext portletContext, Set<String>
keys) throws IllegalArgumentException, PortletInvokerException,
UnsupportedOperationException
{
ConsumerContext consumerContext = getConsumerContext(portletContext);
- return producer.getProperties(consumerContext.producerPortletContext, keys);
+ return super.getProperties(consumerContext.producerPortletContext, keys);
}
public PropertyMap getProperties(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException, UnsupportedOperationException
{
ConsumerContext consumerContext = getConsumerContext(portletContext);
- return producer.getProperties(consumerContext.producerPortletContext);
+ return super.getProperties(consumerContext.producerPortletContext);
}
public PortletContext setProperties(PortletContext portletContext, PropertyChange[]
changes) throws IllegalArgumentException, PortletInvokerException,
UnsupportedOperationException
@@ -300,7 +277,7 @@
ConsumerContext consumerContext = getConsumerContext(portletContext);
//
- PortletContext updatedPortletContext =
producer.setProperties(consumerContext.producerPortletContext, changes);
+ PortletContext updatedPortletContext =
super.setProperties(consumerContext.producerPortletContext, changes);
byte[] state = updatedPortletContext.getState();
if (state != null)
@@ -444,7 +421,7 @@
{
if (portlet == null)
{
- Portlet producerPortlet = producer.getPortlet(producerPortletContext);
+ Portlet producerPortlet =
ConsumerPortletInvoker.super.getPortlet(producerPortletContext);
//
if (stateId == null)
@@ -460,6 +437,5 @@
//
return portlet;
}
-
}
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java 2008-04-15
12:14:03 UTC (rev 10590)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java 2008-04-15
12:30:52 UTC (rev 10591)
@@ -27,7 +27,6 @@
import org.jboss.portal.portlet.NoSuchPortletException;
import org.jboss.portal.portlet.Portlet;
import org.jboss.portal.portlet.PortletContext;
-import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.StateEvent;
import org.jboss.portal.portlet.StatefulPortletContext;
@@ -37,6 +36,7 @@
import org.jboss.portal.portlet.invocation.ActionInvocation;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.invocation.RenderInvocation;
+import org.jboss.portal.portlet.invocation.PortletInterceptor2;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import org.jboss.portal.portlet.spi.InstanceContext;
import org.jboss.portal.portlet.state.AbstractPropertyContext;
@@ -63,7 +63,7 @@
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 6765 $
*/
-public class ProducerPortletInvoker implements PortletInvoker
+public class ProducerPortletInvoker extends PortletInterceptor2
{
/** . */
@@ -73,9 +73,6 @@
private static final String CONSUMER_CLONE_ID = "_dumbvalue";
/** . */
- private PortletInvoker portletInvoker;
-
- /** . */
private PortletStatePersistenceManager persistenceManager;
/** . */
@@ -87,16 +84,6 @@
/** . */
private Logger log = Logger.getLogger(ProducerPortletInvoker.class);
- public PortletInvoker getPortletInvoker()
- {
- return portletInvoker;
- }
-
- public void setPortletInvoker(PortletInvoker portletInvoker)
- {
- this.portletInvoker = portletInvoker;
- }
-
public PortletStatePersistenceManager getPersistenceManager()
{
return persistenceManager;
@@ -127,11 +114,6 @@
this.stateConverter = stateConverter;
}
- public Set<Portlet> getPortlets() throws PortletInvokerException
- {
- return portletInvoker.getPortlets();
- }
-
public Portlet getPortlet(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
{
if (portletContext == null)
@@ -153,7 +135,7 @@
try
{
PortletState portletState = stateConverter.unmarshall(state);
- Portlet delegate =
portletInvoker.getPortlet(PortletContext.createPortletContext(portletState.getPortletId()));
+ Portlet delegate =
super.getPortlet(PortletContext.createPortletContext(portletState.getPortletId()));
return new ProducerPortlet(portletContext, delegate);
}
catch (StateConversionException e)
@@ -173,7 +155,7 @@
String stateId = portletId.substring(PRODUCER_CLONE_ID_PREFIX.length());
PortletStateContext stateContext = persistenceManager.loadState(stateId);
PortletState state = stateContext.getState();
- Portlet delegate =
portletInvoker.getPortlet(PortletContext.createPortletContext(state.getPortletId()));
+ Portlet delegate =
super.getPortlet(PortletContext.createPortletContext(state.getPortletId()));
return new ProducerPortlet(portletContext, delegate);
}
catch (NoSuchStateException e)
@@ -187,7 +169,7 @@
}
else
{
- return portletInvoker.getPortlet(portletContext);
+ return super.getPortlet(portletContext);
}
}
@@ -208,13 +190,13 @@
InternalContext context = getStateContext(portletContext);
// If it is a producer offered portlet we consider read-write as read-only
- if (context.isStateful() == false && access == AccessMode.READ_WRITE)
+ if (!context.isStateful() && access == AccessMode.READ_WRITE)
{
access = AccessMode.READ_ONLY;
}
// Get the portlet container and set it on invocation
- Portlet portlet = portletInvoker.getPortlet(context.getPortletContext());
+ Portlet portlet = super.getPortlet(context.getPortletContext());
if (portlet == null)
{
throw new NoSuchPortletException("Portlet " +
context.getPortletContext() + " not found", context.getPortletId());
@@ -234,7 +216,7 @@
invocation.setAttribute(PropertyContext.PREFERENCES_ATTRIBUTE, prefs);
// Invoke
- response = portletInvoker.invoke(invocation);
+ response = super.invoke(invocation);
}
finally
{
@@ -493,7 +475,7 @@
PortletContext refPortletContext = context.getPortletContext();
// Get the referenced portlet
- Portlet refPortlet = portletInvoker.getPortlet(refPortletContext);
+ Portlet refPortlet = super.getPortlet(refPortletContext);
// We need the referenced portlet
if (refPortlet == null)
@@ -539,14 +521,14 @@
InternalContext context = getStateContext(portletContext);
//
- if (context.isStateful() == false)
+ if (!context.isStateful())
{
throw new InvalidPortletIdException("Cannot configure producer offered
portlets", portletId);
}
StatefulContext statefulContext = (StatefulContext)context;
// Get the container
- Portlet referencedPortlet =
portletInvoker.getPortlet(context.getPortletContext());
+ Portlet referencedPortlet = super.getPortlet(context.getPortletContext());
// We need the referenced portlet
if (referencedPortlet == null)
@@ -633,13 +615,13 @@
* Retrieve the properties from the portlet meta data.
*
* @param portletContext the portlet context
- * @return the properties
- * @throws PortletInvokerException
+ * @param props the properties
+ * @throws PortletInvokerException any portlet invoker exception
*/
private void getPropertiesFromMetaData(PortletContext portletContext, PropertyMap
props) throws PortletInvokerException
{
//
- Portlet portlet = portletInvoker.getPortlet(portletContext);
+ Portlet portlet = super.getPortlet(portletContext);
// The prefs info
PreferencesInfo prefs = portlet.getInfo().getPreferences();
@@ -657,7 +639,7 @@
// Get the missing or read only properties from the referenced portlet properties
// and add them to the actual state
- PropertyMap refPreferencesInfo = portletInvoker.getProperties(portletContext,
keys);
+ PropertyMap refPreferencesInfo = super.getProperties(portletContext, keys);
for (Map.Entry<String, List<String>> entry :
refPreferencesInfo.entrySet())
{
String key = entry.getKey();
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/ConsumerStatefulPortletInvokerTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/ConsumerStatefulPortletInvokerTestCase.java 2008-04-15
12:14:03 UTC (rev 10590)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/ConsumerStatefulPortletInvokerTestCase.java 2008-04-15
12:30:52 UTC (rev 10591)
@@ -99,14 +99,14 @@
stateManagementPolicy.setPersistLocally(persistLocally);
//
- producer.setPortletInvoker(container);
+ producer.setNext(container);
producer.setPersistenceManager(portletStatePersistenceManager);
producer.setStateManagementPolicy(stateManagementPolicy);
producer.setStateConverter(stateConverter);
//
consumer.setPersistenceManager(consumerPersistenceManager);
- consumer.setProducer(producer);
+ consumer.setNext(producer);
}
protected PortletSupport getPortletSupport(PortletContext portletRef) throws
PortletInvokerException
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/ProducerStatefulPortletInvokerTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/ProducerStatefulPortletInvokerTestCase.java 2008-04-15
12:14:03 UTC (rev 10590)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/ProducerStatefulPortletInvokerTestCase.java 2008-04-15
12:30:52 UTC (rev 10591)
@@ -88,7 +88,7 @@
stateManagementPolicy.setPersistLocally(persistLocally);
//
- producer.setPortletInvoker(container);
+ producer.setNext(container);
producer.setPersistenceManager(persistenceManager);
producer.setStateManagementPolicy(stateManagementPolicy);
producer.setStateConverter(stateConverter);
Modified:
modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-beans.xml
===================================================================
---
modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-beans.xml 2008-04-15
12:14:03 UTC (rev 10590)
+++
modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-beans.xml 2008-04-15
12:30:52 UTC (rev 10591)
@@ -119,7 +119,7 @@
<!-- The producer portlet invoker -->
<bean name="ProducerPortletInvoker"
class="org.jboss.portal.portlet.state.producer.ProducerPortletInvoker">
- <property name="portletInvoker"><inject
bean="ContainerPortletInvoker"/></property>
+ <property name="next"><inject
bean="ContainerPortletInvoker"/></property>
<property name="persistenceManager"><inject
bean="ProducerPersistenceManager"/></property>
<property name="stateManagementPolicy"><inject
bean="ProducerStateManagementPolicy"/></property>
<property name="stateConverter"><inject
bean="ProducerStateConverter"/></property>
Modified:
modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml
===================================================================
---
modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml 2008-04-15
12:14:03 UTC (rev 10590)
+++
modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml 2008-04-15
12:30:52 UTC (rev 10591)
@@ -119,7 +119,7 @@
<!-- The producer portlet invoker -->
<bean name="ProducerPortletInvoker"
class="org.jboss.portal.portlet.state.producer.ProducerPortletInvoker">
- <property name="portletInvoker"><inject
bean="ContainerPortletInvoker"/></property>
+ <property name="next"><inject
bean="ContainerPortletInvoker"/></property>
<property name="persistenceManager"><inject
bean="ProducerPersistenceManager"/></property>
<property name="stateManagementPolicy"><inject
bean="ProducerStateManagementPolicy"/></property>
<property name="stateConverter"><inject
bean="ProducerStateConverter"/></property>