Author: chris.laprun(a)jboss.com
Date: 2006-12-09 14:12:54 -0500 (Sat, 09 Dec 2006)
New Revision: 5776
Added:
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/PortletStateChangeRequiredException.java
Modified:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceImpl.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/PersistentInstanceContainer.java
trunk/core/src/main/org/jboss/portal/core/portlet/management/PortletManagerBean.java
trunk/core/src/main/org/jboss/portal/test/core/state/ProducerTestCase.java
trunk/federation/src/main/org/jboss/portal/federation/impl/FederatedPortletInvokerService.java
trunk/portlet/src/main/org/jboss/portal/portlet/PortletContext.java
trunk/portlet/src/main/org/jboss/portal/portlet/StatefulPortletContext.java
trunk/portlet/src/main/org/jboss/portal/portlet/container/PortletContainerInvoker.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/AbstractPropertyContext.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/AbstractPropertyMap.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/AccessMode.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/DestroyCloneFailure.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/InvalidStateIdException.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/NoSuchStateException.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/PortletClonedEvent.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/PortletModifiedEvent.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/Property.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/PropertyChange.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/PropertyContext.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/PropertyMap.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/SimplePropertyMap.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/StateConversionException.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/StateConverter.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/StateManagementPolicy.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/consumer/ConsumerPersistenceManager.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/consumer/ConsumerState.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/consumer/ConsumerStateContext.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/ProducerPersistenceManager.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/ProducerState.java
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/ProducerStateContext.java
trunk/portlet/src/main/org/jboss/portal/portlet/tck/TCKPortletController.java
trunk/portlet/src/main/org/jboss/portal/portlet/test/PortletController.java
trunk/portlet/src/main/org/jboss/portal/portlet/test/support/PortletInvokerSupport.java
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/MarkupTestCase.java
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/ServiceDescriptionTestCase.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPUtils.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/portlet/WSRPPortlet.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/MarkupHandler.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/WSRPProducerImpl.java
Log:
- Refactored PortletContext to encapsulate state better (in particular, uses a factory
method to create the appropriate object).
- Added PortletStateChangeRequiredException thrown by ProducerPortletInvoker.invoke so
that the WSRP can know when an attempt
to modify a read-only portlet was made.
- Tried to set up properties (how can we do that automatically instead of having to do it
manually?)
Modified: trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceImpl.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceImpl.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceImpl.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -31,7 +31,6 @@
import org.jboss.portal.portlet.PortletContext;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
-import org.jboss.portal.portlet.StatefulPortletContext;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import org.jboss.portal.portlet.state.AccessMode;
@@ -107,30 +106,13 @@
public PortletContext getPortletContext()
{
- if (state != null)
- {
- return new StatefulPortletContext(portletRef, state);
- }
- else
- {
- return new PortletContext(portletRef);
- }
+ return PortletContext.createPortletContext(portletRef, state);
}
public void setPortletContext(PortletContext portletContext)
{
portletRef = portletContext.getId();
-
- //
- if (portletContext instanceof StatefulPortletContext)
- {
- StatefulPortletContext statefulPortletContext =
(StatefulPortletContext)portletContext;
- state = statefulPortletContext.getMarshalledState();
- }
- else
- {
- state = null;
- }
+ state = portletContext.getState();
}
protected abstract boolean isModifiable();
Modified:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/PersistentInstanceContainer.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/PersistentInstanceContainer.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/PersistentInstanceContainer.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -22,9 +22,10 @@
******************************************************************************/
package org.jboss.portal.core.impl.model.instance;
+import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
+import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
-import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.hibernate.exception.ConstraintViolationException;
import org.jboss.portal.common.invocation.InterceptorStackFactory;
@@ -66,8 +67,6 @@
import java.util.List;
import java.util.Set;
-import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
-
/**
* Instance Container that is persistent
*
@@ -81,7 +80,7 @@
{
private List listeners = new ArrayList();
-
+
/** . */
protected InterceptorStackFactory stackFactory;
@@ -141,7 +140,7 @@
contextualizer = new ObjectContextualizer(ctx);
cache = new ConcurrentReaderHashMap();
}
-
+
public void flushNaturalIdCache()
{
cache.clear();
@@ -268,7 +267,7 @@
}
//
- PortletContext portletContext = new PortletContext(portletId);
+ PortletContext portletContext = PortletContext.createPortletContext(portletId);
// Check that the portlet exist before creating an instance of it
portletInvoker.getPortlet(portletContext);
@@ -311,7 +310,7 @@
}
raiseCreatedPortletInstanceEvent(instance);
-
+
//
return instance;
}
@@ -404,10 +403,10 @@
// Delete instance
removeBindings(session, instance);
session.delete(instance);
-
+
//
session.flush();
-
+
raiseDestroyedPortletInstanceEvent(instance);
}
@@ -449,11 +448,11 @@
{
if (e instanceof PortletInvokerException)
{
- throw(PortletInvokerException)e;
+ throw (PortletInvokerException)e;
}
else if (e instanceof RuntimeException)
{
- throw(RuntimeException)e;
+ throw (RuntimeException)e;
}
else
{
@@ -492,7 +491,7 @@
Long pk = cacheNaturalId ? (Long)cache.get(id) : null;
//
- InstanceDefinitionImpl instance ;
+ InstanceDefinitionImpl instance;
//
if (pk == null)
@@ -667,7 +666,7 @@
{
return this;
}
-
+
public void addListener(InstanceContainerListener listener)
{
listeners.add(listener);
Modified:
trunk/core/src/main/org/jboss/portal/core/portlet/management/PortletManagerBean.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/portlet/management/PortletManagerBean.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/core/src/main/org/jboss/portal/core/portlet/management/PortletManagerBean.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -248,7 +248,7 @@
{
try
{
- return getPortletInvoker().getPortlet(new
PortletContext(selectedPortletId));
+ return
getPortletInvoker().getPortlet(PortletContext.createPortletContext(selectedPortletId));
}
catch (PortletInvokerException e)
{
Modified: trunk/core/src/main/org/jboss/portal/test/core/state/ProducerTestCase.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/test/core/state/ProducerTestCase.java 2006-12-09
17:58:29 UTC (rev 5775)
+++ trunk/core/src/main/org/jboss/portal/test/core/state/ProducerTestCase.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -31,10 +31,10 @@
import org.apache.log4j.SimpleLayout;
import org.jboss.portal.Mode;
import org.jboss.portal.common.junit.TransactionAssert;
-import org.jboss.portal.common.value.StringValue;
import org.jboss.portal.common.test.TestParametrization;
import org.jboss.portal.common.test.junit.JUnitAdapter;
import org.jboss.portal.common.test.junit.POJOJUnitTest;
+import org.jboss.portal.common.value.StringValue;
import org.jboss.portal.core.impl.portlet.state.PersistentStateStore;
import org.jboss.portal.core.impl.portlet.state.ProducerPortletInvoker;
import org.jboss.portal.portlet.NoSuchPortletException;
@@ -62,9 +62,9 @@
import org.jboss.portal.test.framework.embedded.DataSourceSupport;
import org.jboss.portal.test.framework.embedded.HibernateSupport;
+import java.net.URL;
import java.util.Collections;
import java.util.List;
-import java.net.URL;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -255,7 +255,7 @@
try
{
TransactionAssert.beginTransaction();
- producer.createClone(new PortletContext("UnknownPortlet"));
+
producer.createClone(PortletContext.createPortletContext("UnknownPortlet"));
fail("Was expecting no such portlet exception");
}
catch (NoSuchPortletException e)
@@ -297,7 +297,7 @@
{
// Clone a POP
TransactionAssert.beginTransaction();
- PortletContext cloneCtx = producer.createClone(new
PortletContext("SimplePortlet"));
+ PortletContext cloneCtx =
producer.createClone(PortletContext.createPortletContext("SimplePortlet"));
TransactionAssert.commitTransaction();
// Check the clone state
@@ -344,7 +344,7 @@
public void testDestroyNonExistingPortletWithinTx() throws Exception
{
TransactionAssert.beginTransaction();
- List failures = producer.destroyClones(Collections.singletonList(new
PortletContext("_1")));
+ List failures =
producer.destroyClones(Collections.singletonList(PortletContext.createPortletContext("_1")));
assertEquals(Collections.singletonList(new DestroyCloneFailure("_1")),
failures);
TransactionAssert.commitTransaction();
}
@@ -383,8 +383,8 @@
{
// Clone a POP 2 times
TransactionAssert.beginTransaction();
- PortletContext cloneId1 = producer.createClone(new
PortletContext("SimplePortlet"));
- PortletContext cloneId2 = producer.createClone(new
PortletContext("SimplePortlet"));
+ PortletContext cloneId1 =
producer.createClone(PortletContext.createPortletContext("SimplePortlet"));
+ PortletContext cloneId2 =
producer.createClone(PortletContext.createPortletContext("SimplePortlet"));
TransactionAssert.commitTransaction();
// Clone the modified CCP 2 times
@@ -422,7 +422,7 @@
{
TransactionAssert.beginTransaction();
PortletInvocation action = new ActionInvocation(new ActionContextImpl(Mode.VIEW));
- action.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE, new
PortletContext("CloningPortlet"));
+ action.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE,
PortletContext.createPortletContext("CloningPortlet"));
action.setUserContext(new UserContextImpl("julien"));
InstanceContextImpl instanceContext = new InstanceContextImpl("whatever",
AccessMode.CLONE_BEFORE_WRITE);
action.setInstanceContext(instanceContext);
@@ -448,7 +448,8 @@
{
TransactionAssert.beginTransaction();
PortletInvocation action = new ActionInvocation(new ActionContextImpl(Mode.VIEW));
- action.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE, new
PortletContext("CloneFailedCloningPortlet"));
+ action.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE,
+ PortletContext.createPortletContext("CloneFailedCloningPortlet"));
action.setUserContext(new UserContextImpl("julien"));
InstanceContextImpl instanceContext = new InstanceContextImpl("whatever",
AccessMode.READ_WRITE);
action.setInstanceContext(instanceContext);
@@ -465,7 +466,8 @@
{
TransactionAssert.beginTransaction();
PortletInvocation action = new ActionInvocation(new ActionContextImpl(Mode.VIEW));
- action.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE, new
PortletContext("CloneFailedCloningPortlet"));
+ action.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE,
+ PortletContext.createPortletContext("CloneFailedCloningPortlet"));
action.setUserContext(new UserContextImpl("julien"));
InstanceContextImpl instanceContext = new InstanceContextImpl("whatever",
AccessMode.READ_ONLY);
action.setInstanceContext(instanceContext);
@@ -481,7 +483,7 @@
public void testInvokeCloneBeforeWriteCCPWithinTx() throws Exception
{
TransactionAssert.beginTransaction();
- PortletContext cloningPortletId = producer.createClone(new
PortletContext("CloningPortlet"));
+ PortletContext cloningPortletId =
producer.createClone(PortletContext.createPortletContext("CloningPortlet"));
TransactionAssert.commitTransaction();
// Modify the state of the CCP
@@ -520,7 +522,7 @@
public void testInvokeReadWriteCCPWithinTx() throws Exception
{
TransactionAssert.beginTransaction();
- PortletContext cloningPortletId = producer.createClone(new
PortletContext("CloningPortlet"));
+ PortletContext cloningPortletId =
producer.createClone(PortletContext.createPortletContext("CloningPortlet"));
TransactionAssert.commitTransaction();
//
@@ -550,7 +552,7 @@
public void testInvokeReadOnlyCCPWithinTx() throws Exception
{
TransactionAssert.beginTransaction();
- PortletContext cloneFailedCloningPortletId = producer.createClone(new
PortletContext("CloneFailedCloningPortlet"));
+ PortletContext cloneFailedCloningPortletId =
producer.createClone(PortletContext.createPortletContext("CloneFailedCloningPortlet"));
TransactionAssert.commitTransaction();
//
@@ -573,7 +575,8 @@
{
TransactionAssert.beginTransaction();
PortletInvocation action = new ActionInvocation(new ActionContextImpl(Mode.VIEW));
- action.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE, new
PortletContext("CloningPortletThrowingRuntimeException"));
+ action.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE,
+
PortletContext.createPortletContext("CloningPortletThrowingRuntimeException"));
action.setUserContext(new UserContextImpl("julien"));
InstanceContextImpl instanceContext = new InstanceContextImpl("whatever",
AccessMode.CLONE_BEFORE_WRITE);
action.setInstanceContext(instanceContext);
@@ -609,12 +612,12 @@
{
// Clone a POP
TransactionAssert.beginTransaction();
- PortletContext cloneId = producer.createClone(new
PortletContext("SimplePortlet"));
+ PortletContext cloneId =
producer.createClone(PortletContext.createPortletContext("SimplePortlet"));
TransactionAssert.commitTransaction();
//
TransactionAssert.beginTransaction();
- Portlet portlet = producer.getPortlet(new PortletContext(cloneId.getId()));
+ Portlet portlet =
producer.getPortlet(PortletContext.createPortletContext(cloneId.getId()));
assertEquals("SimplePortlet", portlet.getContext().getId());
TransactionAssert.commitTransaction();
@@ -625,7 +628,7 @@
//
TransactionAssert.beginTransaction();
- portlet = producer.getPortlet(new PortletContext(cloneCloneId.getId()));
+ portlet =
producer.getPortlet(PortletContext.createPortletContext(cloneCloneId.getId()));
assertEquals("SimplePortlet", portlet.getContext().getId());
TransactionAssert.commitTransaction();
}
Modified:
trunk/federation/src/main/org/jboss/portal/federation/impl/FederatedPortletInvokerService.java
===================================================================
---
trunk/federation/src/main/org/jboss/portal/federation/impl/FederatedPortletInvokerService.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/federation/src/main/org/jboss/portal/federation/impl/FederatedPortletInvokerService.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -31,7 +31,6 @@
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.StateEvent;
-import org.jboss.portal.portlet.StatefulPortletContext;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import org.jboss.portal.portlet.spi.InstanceContext;
@@ -227,29 +226,13 @@
private PortletContext dereference(PortletContext compoundPortletContext)
{
String portletId = compoundPortletContext.getId().substring(id.length() + 1);
- if (compoundPortletContext instanceof StatefulPortletContext)
- {
- StatefulPortletContext statefulCompoundPortletContext =
(StatefulPortletContext)compoundPortletContext;
- return new StatefulPortletContext(portletId,
statefulCompoundPortletContext.getMarshalledState());
- }
- else
- {
- return new PortletContext(portletId);
- }
+ return PortletContext.createPortletContext(portletId,
compoundPortletContext.getState());
}
private PortletContext reference(PortletContext portletContext)
{
String compoundPortletId = reference(portletContext.getId());
- if (portletContext instanceof StatefulPortletContext)
- {
- StatefulPortletContext statefulPortletContext =
(StatefulPortletContext)portletContext;
- return new StatefulPortletContext(compoundPortletId,
statefulPortletContext.getMarshalledState());
- }
- else
- {
- return new PortletContext(compoundPortletId);
- }
+ return PortletContext.createPortletContext(compoundPortletId,
portletContext.getState());
}
private String reference(String portletId)
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/PortletContext.java
===================================================================
--- trunk/portlet/src/main/org/jboss/portal/portlet/PortletContext.java 2006-12-09
17:58:29 UTC (rev 5775)
+++ trunk/portlet/src/main/org/jboss/portal/portlet/PortletContext.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -22,11 +22,15 @@
******************************************************************************/
package org.jboss.portal.portlet;
+import org.jboss.portal.common.util.ParameterValidation;
+
import java.io.Serializable;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision: 1.1 $
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
+ * @version $Revision$
+ * @since 2.6
*/
public class PortletContext implements Serializable
{
@@ -34,12 +38,9 @@
/** . */
protected final String id;
- public PortletContext(String id) throws IllegalArgumentException
+ PortletContext(String id) throws IllegalArgumentException
{
- if (id == null)
- {
- throw new IllegalArgumentException("Id must not be null");
- }
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(id, "portlet
id", "PortletContext");
this.id = id;
}
@@ -52,4 +53,47 @@
{
return "PortletContext[" + id + "]";
}
+
+ public byte[] getState()
+ {
+ return null;
+ }
+
+ /**
+ * Create a PortletContext based on id and optional state.
+ *
+ * @param id the portlet id
+ * @param state the optional state
+ * @return a new PortletContext based on the provided information
+ */
+ public static PortletContext createPortletContext(String id, byte[] state)
+ {
+ if (state != null && state.length > 0)
+ {
+ return new StatefulPortletContext(id, state);
+ }
+ else
+ {
+ return new PortletContext(id);
+ }
+ }
+
+ /**
+ * Create a PortletContext based on given id and required state: this method will fail
if state is not valid. Use
+ * this method instead of {@link #createPortletContext(String,byte[])} for cases when
a state is expected and the
+ * creation of the PortletContext should fail if no state was given.
+ *
+ * @param id the portlet id
+ * @param state the mandatory state
+ * @return a new PortletContext
+ */
+ public static PortletContext createStatefulPortletContext(String id, byte[] state)
+ {
+ return new StatefulPortletContext(id, state);
+ }
+
+ public static PortletContext createPortletContext(String portletId)
+ {
+ return createPortletContext(portletId, null);
+ }
}
Property changes on: trunk/portlet/src/main/org/jboss/portal/portlet/PortletContext.java
___________________________________________________________________
Name: svn:keywords
+ LastChangedDate LastChangedBy LastChangedRevision Id
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/StatefulPortletContext.java
===================================================================
--- trunk/portlet/src/main/org/jboss/portal/portlet/StatefulPortletContext.java 2006-12-09
17:58:29 UTC (rev 5775)
+++ trunk/portlet/src/main/org/jboss/portal/portlet/StatefulPortletContext.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -22,9 +22,13 @@
******************************************************************************/
package org.jboss.portal.portlet;
+import org.jboss.portal.common.util.ParameterValidation;
+
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
* @version $Revision: 1.1 $
+ * @since 2.6
*/
public class StatefulPortletContext extends PortletContext
{
@@ -32,25 +36,16 @@
/** . */
private final byte[] marshalledState;
- public StatefulPortletContext(String id) throws IllegalArgumentException
+ StatefulPortletContext(String id, byte[] marshalledState) throws
IllegalArgumentException
{
- this(id, null);
- }
-
- public StatefulPortletContext(String id, byte[] marshalledState) throws
IllegalArgumentException
- {
super(id);
- //
- if (marshalledState == null)
- {
- throw new IllegalArgumentException("State cannot be null");
- }
+ ParameterValidation.throwIllegalArgExceptionIfNull(marshalledState, "Portlet
state");
this.marshalledState = marshalledState;
}
- public byte[] getMarshalledState()
+ public byte[] getState()
{
return marshalledState;
}
Modified:
trunk/portlet/src/main/org/jboss/portal/portlet/container/PortletContainerInvoker.java
===================================================================
---
trunk/portlet/src/main/org/jboss/portal/portlet/container/PortletContainerInvoker.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/portlet/src/main/org/jboss/portal/portlet/container/PortletContainerInvoker.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -32,19 +32,19 @@
import org.jboss.portal.portlet.PortletContext;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
+import org.jboss.portal.portlet.container.info.ContainerPortletInfo;
import org.jboss.portal.portlet.info.PortletInfo;
-import org.jboss.portal.portlet.container.info.ContainerPortletInfo;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import org.jboss.portal.portlet.state.PropertyChange;
import org.jboss.portal.portlet.state.PropertyMap;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.HashSet;
/**
* An implementation of portlet invoker that makes a call to a portlet container.
@@ -127,10 +127,10 @@
protected synchronized void startService() throws Exception
{
Map portlets = new HashMap();
- for (Iterator i = registry.getPortletApplications().iterator();i.hasNext();)
+ for (Iterator i = registry.getPortletApplications().iterator(); i.hasNext();)
{
PortletApplication portletApplication = (PortletApplication)i.next();
- for (Iterator j =
portletApplication.getPortletContainers().iterator();j.hasNext();)
+ for (Iterator j = portletApplication.getPortletContainers().iterator();
j.hasNext();)
{
PortletContainer portletContainer = (PortletContainer)j.next();
PortletImpl portlet = new PortletImpl(portletContainer);
@@ -185,11 +185,11 @@
{
if (e instanceof PortletInvokerException)
{
- throw(PortletInvokerException)e;
+ throw (PortletInvokerException)e;
}
else if (e instanceof RuntimeException)
{
- throw(RuntimeException)e;
+ throw (RuntimeException)e;
}
else
{
@@ -239,7 +239,7 @@
public PortletImpl(PortletContainer container)
{
this.container = container;
- this.context = new PortletContext(container.getApplication().getId() +
"." + container.getId());
+ this.context =
PortletContext.createPortletContext(container.getApplication().getId() + "." +
container.getId());
}
public PortletContext getContext()
Modified:
trunk/portlet/src/main/org/jboss/portal/portlet/state/AbstractPropertyContext.java
===================================================================
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/state/AbstractPropertyMap.java
===================================================================
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/state/AccessMode.java
===================================================================
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/state/DestroyCloneFailure.java
===================================================================
Modified:
trunk/portlet/src/main/org/jboss/portal/portlet/state/InvalidStateIdException.java
===================================================================
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/state/NoSuchStateException.java
===================================================================
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/PortletClonedEvent.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/PortletModifiedEvent.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/state/Property.java
===================================================================
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/state/PropertyChange.java
===================================================================
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/state/PropertyContext.java
===================================================================
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/PropertyMap.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/SimplePropertyMap.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/StateConversionException.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/StateConverter.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/StateManagementPolicy.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/consumer/ConsumerPersistenceManager.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Modified:
trunk/portlet/src/main/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java
===================================================================
---
trunk/portlet/src/main/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/portlet/src/main/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -31,7 +31,6 @@
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.StateEvent;
-import org.jboss.portal.portlet.StatefulPortletContext;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import org.jboss.portal.portlet.spi.InstanceContext;
@@ -49,7 +48,7 @@
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision: 1.1 $
+ * @version $Revision$
*/
public class ConsumerPortletInvoker implements PortletInvoker
{
@@ -73,7 +72,7 @@
{
throw new InvalidPortletIdException(wrappedCCP);
}
- return new PortletContext(wrappedCCP.substring(CLONE_ID_PREFIX.length()));
+ return
PortletContext.createPortletContext(wrappedCCP.substring(CLONE_ID_PREFIX.length()));
}
public PortletContext unwrapPOP(String wrappedPOPId) throws InvalidPortletIdException
@@ -82,7 +81,7 @@
{
throw new IllegalArgumentException();
}
- return new PortletContext(wrappedPOPId);
+ return PortletContext.createPortletContext(wrappedPOPId);
}
public String wrapCCP(PortletContext ccpCtx) throws InvalidPortletIdException
@@ -163,43 +162,48 @@
PortletInvocationResponse response = producer.invoke(invocation);
//
- if (pictx.clonedContext != null)
+ PortletContext clonedContext = pictx.clonedContext;
+ if (clonedContext != null)
{
- if (pictx.clonedContext instanceof StatefulPortletContext)
+ byte[] state = clonedContext.getState();
+ if (state != null)
{
// Save the clone state
- StatefulPortletContext statefulClonedContext =
(StatefulPortletContext)pictx.clonedContext;
- ConsumerState state = new ConsumerState(statefulClonedContext.getId(),
statefulClonedContext.getMarshalledState());
- String stateId = persistenceManager.createState(state);
+ ConsumerState consumerState = new ConsumerState(clonedContext.getId(),
state);
+ String stateId = persistenceManager.createState(consumerState);
String clonedId = CLONE_ID_PREFIX + stateId;
- PortletClonedEvent event = new PortletClonedEvent(new
PortletContext(clonedId));
+ PortletClonedEvent event = new
PortletClonedEvent(PortletContext.createPortletContext(clonedId));
cictx.onStateEvent(event);
}
else
{
- PortletClonedEvent event = new PortletClonedEvent(new
PortletContext(pictx.clonedContext.getId()));
+ PortletClonedEvent event = new
PortletClonedEvent(PortletContext.createPortletContext(clonedContext.getId()));
cictx.onStateEvent(event);
}
}
- else if (pictx.modifiedContext != null)
+ else
{
- // Save
- if (pictx.modifiedContext instanceof StatefulPortletContext)
+ PortletContext modifiedContext = pictx.modifiedContext;
+ if (modifiedContext != null)
{
- try
+ byte[] state = modifiedContext.getState();
+ // update state if needed
+ if (state != null)
{
- StatefulPortletContext statefulModifiedContext =
(StatefulPortletContext)pictx.modifiedContext;
- ConsumerState state = new
ConsumerState(statefulModifiedContext.getId(),
statefulModifiedContext.getMarshalledState());
- persistenceManager.updateState(consumerContext.stateId, state);
+ try
+ {
+ ConsumerState consumerState = new
ConsumerState(modifiedContext.getId(), state);
+ persistenceManager.updateState(consumerContext.stateId,
consumerState);
+ }
+ catch (NoSuchStateException e)
+ {
+ e.printStackTrace();
+ }
+ catch (InvalidStateIdException e)
+ {
+ e.printStackTrace();
+ }
}
- catch (NoSuchStateException e)
- {
- e.printStackTrace();
- }
- catch (InvalidStateIdException e)
- {
- e.printStackTrace();
- }
}
}
@@ -220,13 +224,12 @@
//
PortletContext clonedContext =
producer.createClone(consumerContext.portletContext);
- //
- if (clonedContext instanceof StatefulPortletContext)
+ byte[] state = clonedContext.getState();
+ if (state != null)
{
- StatefulPortletContext statefulClonedContext =
(StatefulPortletContext)clonedContext;
- ConsumerState state = new ConsumerState(statefulClonedContext.getId(),
statefulClonedContext.getMarshalledState());
- String id = persistenceManager.createState(state);
- return new PortletContext(CLONE_ID_PREFIX + id);
+ ConsumerState consumerState = new ConsumerState(clonedContext.getId(), state);
+ String id = persistenceManager.createState(consumerState);
+ return PortletContext.createPortletContext(CLONE_ID_PREFIX + id);
}
else
{
@@ -295,8 +298,8 @@
//
PortletContext updatedPortletContext =
producer.setProperties(consumerContext.portletContext, changes);
- //
- if (updatedPortletContext instanceof StatefulPortletContext)
+ byte[] state = updatedPortletContext.getState();
+ if (state != null)
{
if (consumerContext.stateId == null)
{
@@ -304,11 +307,10 @@
}
//
- StatefulPortletContext updatedStatefulPortletContext =
(StatefulPortletContext)updatedPortletContext;
- ConsumerState state = new ConsumerState(updatedStatefulPortletContext.getId(),
updatedStatefulPortletContext.getMarshalledState());
+ ConsumerState consumerState = new ConsumerState(updatedPortletContext.getId(),
state);
try
{
- persistenceManager.updateState(consumerContext.stateId, state);
+ persistenceManager.updateState(consumerContext.stateId, consumerState);
}
catch (NoSuchStateException e)
{
@@ -423,7 +425,7 @@
public ConsumerContext(String stateId, String id, byte[] state)
{
- this(new StatefulPortletContext(id, state), stateId);
+ this(PortletContext.createStatefulPortletContext(id, state), stateId);
}
}
}
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/consumer/ConsumerState.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/consumer/ConsumerStateContext.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added:
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/PortletStateChangeRequiredException.java
===================================================================
---
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/PortletStateChangeRequiredException.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/PortletStateChangeRequiredException.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -0,0 +1,39 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, 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.state.producer;
+
+import org.jboss.portal.common.invocation.InvocationException;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
+ * @version $Revision$
+ * @since 2.6
+ */
+public class PortletStateChangeRequiredException extends InvocationException
+{
+ public PortletStateChangeRequiredException(String message)
+ {
+ super(message);
+ }
+}
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/PortletStateChangeRequiredException.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Modified:
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/ProducerPersistenceManager.java
===================================================================
Modified:
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java
===================================================================
---
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -137,13 +137,13 @@
String portletId = portletContext.getId();
if (CONSUMER_CLONE_ID.equals(portletId))
{
- if (portletContext instanceof StatefulPortletContext)
+ byte[] state = portletContext.getState();
+ if (state != null)
{
try
{
- StatefulPortletContext statefulPortletContext =
(StatefulPortletContext)portletContext;
- ProducerState state =
stateConverter.unmarshall(statefulPortletContext.getMarshalledState());
- return portletInvoker.getPortlet(new
PortletContext(state.getPortletId()));
+ ProducerState producerState = stateConverter.unmarshall(state);
+ return
portletInvoker.getPortlet(PortletContext.createPortletContext(producerState.getPortletId()));
}
catch (StateConversionException e)
{
@@ -160,7 +160,7 @@
try
{
ProducerState state =
persistenceManager.loadState(portletId.substring(PRODUCER_CLONE_ID_PREFIX.length()));
- return portletInvoker.getPortlet(new PortletContext(state.getPortletId()));
+ return
portletInvoker.getPortlet(PortletContext.createPortletContext(state.getPortletId()));
}
catch (NoSuchStateException e)
{
@@ -213,7 +213,7 @@
}
// Get the portlet container and set it on invocation
- Portlet portlet = portletInvoker.getPortlet(new PortletContext(targetPortletId));
+ Portlet portlet =
portletInvoker.getPortlet(PortletContext.createPortletContext(targetPortletId));
if (portlet == null)
{
throw new NoSuchPortletException("Portlet " + targetPortletId + "
not found", targetPortletId);
@@ -230,7 +230,7 @@
PortletInvocationResponse response;
try
{
- invocation.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE, new PortletContext(targetPortletId));
+ invocation.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE,
PortletContext.createPortletContext(targetPortletId));
invocation.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PREFERENCES_ATTRIBUTE, prefs);
invocation.setInfo(info);
@@ -270,7 +270,7 @@
// Return the clone context
String cloneId = PRODUCER_CLONE_ID_PREFIX + cloneStateId;
- PortletContext clonedCtx = new PortletContext(cloneId);
+ PortletContext clonedCtx =
PortletContext.createPortletContext(cloneId);
PortletClonedEvent event = new PortletClonedEvent(clonedCtx);
instanceCtx.onStateEvent(event);
}
@@ -285,7 +285,7 @@
}
else
{
- StatefulPortletContext clonedCtx = marshall(state.getPortletId(),
newPrefs);
+ PortletContext clonedCtx = marshall(state.getPortletId(), newPrefs);
PortletClonedEvent event = new PortletClonedEvent(clonedCtx);
instanceCtx.onStateEvent(event);
}
@@ -311,7 +311,7 @@
// Return the clone context
String cloneId = PRODUCER_CLONE_ID_PREFIX + cloneStateId;
- PortletContext clonedCtx = new PortletContext(cloneId);
+ PortletContext clonedCtx = PortletContext.createPortletContext(cloneId);
PortletClonedEvent event = new PortletClonedEvent(clonedCtx);
instanceCtx.onStateEvent(event);
}
@@ -337,14 +337,15 @@
}
else
{
- StatefulPortletContext modifiedCtx = marshall(targetPortletId, newPrefs);
+ PortletContext modifiedCtx = marshall(targetPortletId, newPrefs);
PortletModifiedEvent event = new PortletModifiedEvent(modifiedCtx);
instanceCtx.onStateEvent(event);
}
}
else if (access == AccessMode.READ_ONLY)
{
- throw new InvocationException("Read only portlet should have not been
modified");
+ throw new PortletStateChangeRequiredException("Modification was
requested for portlet with id '"
+ + targetPortletId + "' but access mode was READ ONLY.");
}
}
@@ -373,7 +374,7 @@
{
String stateId = portletId.substring(PRODUCER_CLONE_ID_PREFIX.length());
String cloneId = PRODUCER_CLONE_ID_PREFIX +
persistenceManager.cloneState(stateId);
- return new PortletContext(cloneId);
+ return PortletContext.createPortletContext(cloneId);
}
catch (NoSuchStateException e)
{
@@ -402,7 +403,7 @@
if (useStore)
{
String cloneId = persistenceManager.createState(portletId, newState);
- return new PortletContext(PRODUCER_CLONE_ID_PREFIX + cloneId);
+ return PortletContext.createPortletContext(PRODUCER_CLONE_ID_PREFIX +
cloneId);
}
else
{
@@ -491,7 +492,7 @@
String referencedPortletId = state.getPortletId();
// Get the container
- Portlet referencedPortlet = portletInvoker.getPortlet(new
PortletContext(referencedPortletId));
+ Portlet referencedPortlet =
portletInvoker.getPortlet(PortletContext.createPortletContext(referencedPortletId));
// We need the referenced portlet
if (referencedPortlet == null)
@@ -558,7 +559,7 @@
String referencedPortletId = state.getPortletId();
// Get the container
- Portlet referencedPortlet = portletInvoker.getPortlet(new
PortletContext(referencedPortletId));
+ Portlet referencedPortlet =
portletInvoker.getPortlet(PortletContext.createPortletContext(referencedPortletId));
// We need the referenced portlet
if (referencedPortlet == null)
@@ -619,7 +620,7 @@
{
throw new InvalidPortletIdException(e, portletId);
}
- return new PortletContext(portletId);
+ return PortletContext.createPortletContext(portletId);
}
else
{
@@ -627,13 +628,13 @@
}
}
- private StatefulPortletContext marshall(String portletId, PropertyMap props) throws
PortletInvokerException
+ private PortletContext marshall(String portletId, PropertyMap props) throws
PortletInvokerException
{
try
{
ProducerState sstate = new ProducerState(portletId, props);
byte[] marshalledState = stateConverter.marshall(sstate);
- return new StatefulPortletContext(CONSUMER_CLONE_ID, marshalledState);
+ return PortletContext.createStatefulPortletContext(CONSUMER_CLONE_ID,
marshalledState);
}
catch (StateConversionException e)
{
@@ -651,7 +652,7 @@
private PropertyMap getPropertiesFromMetaData(String portletId) throws
PortletInvokerException
{
//
- Portlet portlet = portletInvoker.getPortlet(new PortletContext(portletId));
+ Portlet portlet =
portletInvoker.getPortlet(PortletContext.createPortletContext(portletId));
// The prefs info
PreferencesInfo prefs = portlet.getInfo().getPreferences();
@@ -680,7 +681,8 @@
*/
private ProducerState getProducerState(PortletContext portletContext) throws
NoSuchPortletException, InvalidPortletIdException
{
- if (!(portletContext instanceof StatefulPortletContext))
+ byte[] state = portletContext.getState();
+ if (state == null)
{
String portletId = portletContext.getId();
if (portletContext.getId().startsWith(PRODUCER_CLONE_ID_PREFIX))
@@ -708,10 +710,7 @@
{
try
{
- StatefulPortletContext statefulPortletContext =
(StatefulPortletContext)portletContext;
- byte[] marshalledState = statefulPortletContext.getMarshalledState();
- ProducerState state = stateConverter.unmarshall(marshalledState);
- return state;
+ return stateConverter.unmarshall(state);
}
catch (StateConversionException e)
{
Modified:
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/ProducerState.java
===================================================================
Property changes on:
trunk/portlet/src/main/org/jboss/portal/portlet/state/producer/ProducerStateContext.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/tck/TCKPortletController.java
===================================================================
---
trunk/portlet/src/main/org/jboss/portal/portlet/tck/TCKPortletController.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/portlet/src/main/org/jboss/portal/portlet/tck/TCKPortletController.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -64,7 +64,7 @@
for (Iterator i = portletIds.iterator(); i.hasNext();)
{
String portletId = (String)i.next();
- Portlet portlet = portletInvoker.getPortlet(new PortletContext(portletId));
+ Portlet portlet =
portletInvoker.getPortlet(PortletContext.createPortletContext(portletId));
portlets.add(portlet);
}
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/test/PortletController.java
===================================================================
--- trunk/portlet/src/main/org/jboss/portal/portlet/test/PortletController.java 2006-12-09
17:58:29 UTC (rev 5775)
+++ trunk/portlet/src/main/org/jboss/portal/portlet/test/PortletController.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -36,11 +36,11 @@
import org.jboss.portal.portlet.PortletContext;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
-import org.jboss.portal.portlet.impl.PortletRequestDecoder;
import org.jboss.portal.portlet.PortletURL;
import org.jboss.portal.portlet.RenderURL;
import org.jboss.portal.portlet.StateEvent;
import org.jboss.portal.portlet.StateString;
+import org.jboss.portal.portlet.impl.PortletRequestDecoder;
import org.jboss.portal.portlet.impl.spi.AbstractPortletInvocationContext;
import org.jboss.portal.portlet.impl.spi.AbstractRequestContext;
import org.jboss.portal.portlet.impl.spi.AbstractSecurityContext;
@@ -134,7 +134,7 @@
{
// Get the portlet
String portletId = requestPath.substring("/portlet/".length());
- Portlet portlet = portletInvoker.getPortlet(new PortletContext(portletId));
+ Portlet portlet =
portletInvoker.getPortlet(PortletContext.createPortletContext(portletId));
PortletRequestDecoder decoder = new PortletRequestDecoder();
decoder.decode(invocation.getServerContext().getQueryParameterMap(),
invocation.getServerContext().getBodyParameterMap());
Modified:
trunk/portlet/src/main/org/jboss/portal/portlet/test/support/PortletInvokerSupport.java
===================================================================
---
trunk/portlet/src/main/org/jboss/portal/portlet/test/support/PortletInvokerSupport.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/portlet/src/main/org/jboss/portal/portlet/test/support/PortletInvokerSupport.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -161,7 +161,7 @@
{
throw new IllegalArgumentException();
}
- this.portletContext = new PortletContext(portletId);
+ this.portletContext = PortletContext.createPortletContext(portletId);
this.support = support;
this.valid = true;
}
Modified: trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/MarkupTestCase.java
===================================================================
---
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/MarkupTestCase.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/MarkupTestCase.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -169,7 +169,7 @@
RenderInvocation render = new RenderInvocation(rc);
render.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE,
- new PortletContext(portletHandle));
+ PortletContext.createPortletContext(portletHandle));
render.setInstanceContext(new BasicInstanceContext(portletHandle));
render.setSecurityContext(new BasicSecurityContext());
@@ -192,7 +192,7 @@
action.setSecurityContext(new BasicSecurityContext());
action.setUserContext(new BasicUserContext());
action.setAttribute(PortletInvocation.REQUEST_SCOPE,
PortletInvocation.PORTLET_CONTEXT_ATTRIBUTE,
- new PortletContext(portletHandle));
+ PortletContext.createPortletContext(portletHandle));
return action;
}
}
Modified:
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/ServiceDescriptionTestCase.java
===================================================================
---
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/ServiceDescriptionTestCase.java 2006-12-09
17:58:29 UTC (rev 5775)
+++
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/v1/consumer/ServiceDescriptionTestCase.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -62,10 +62,10 @@
public void testGetPortlet() throws Exception
{
//obtain one portlet
- Portlet portlet = consumer.getPortlet(new
PortletContext(BasicMarkupBehavior.PORTLET_HANDLE));
+ Portlet portlet =
consumer.getPortlet(PortletContext.createPortletContext(BasicMarkupBehavior.PORTLET_HANDLE));
checkPortlet(portlet, "", BasicMarkupBehavior.PORTLET_HANDLE);
- portlet = consumer.getPortlet(new
PortletContext(SessionMarkupBehavior.PORTLET_HANDLE));
+ portlet =
consumer.getPortlet(PortletContext.createPortletContext(SessionMarkupBehavior.PORTLET_HANDLE));
checkPortlet(portlet, "2", SessionMarkupBehavior.PORTLET_HANDLE);
}
}
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPUtils.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPUtils.java 2006-12-09 17:58:29 UTC (rev
5775)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPUtils.java 2006-12-09 19:12:54 UTC (rev
5776)
@@ -31,7 +31,6 @@
import org.jboss.portal.portlet.PortletContext;
import org.jboss.portal.portlet.PortletURL;
import org.jboss.portal.portlet.RenderURL;
-import org.jboss.portal.portlet.StatefulPortletContext;
import org.jboss.portal.portlet.state.AccessMode;
import org.jboss.portal.wsrp.core.Fault;
import org.jboss.portal.wsrp.core.MissingParametersFault;
@@ -231,14 +230,7 @@
PortletContext context;
byte[] state = portletContext.getPortletState();
- if (state != null && state.length > 0)
- {
- context = new StatefulPortletContext(handle, state);
- }
- else
- {
- context = new PortletContext(handle);
- }
+ context = PortletContext.createPortletContext(handle, state);
return context;
}
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/portlet/WSRPPortlet.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/portlet/WSRPPortlet.java 2006-12-09
17:58:29 UTC (rev 5775)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/portlet/WSRPPortlet.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -59,7 +59,7 @@
public PortletContext getContext()
{
- return new PortletContext(id);
+ return PortletContext.createPortletContext(id);
}
public PortletInfo getInfo()
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/MarkupHandler.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/MarkupHandler.java 2006-12-09
17:58:29 UTC (rev 5775)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/MarkupHandler.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -26,11 +26,13 @@
import org.jboss.logging.Logger;
import org.jboss.portal.common.MediaType;
import org.jboss.portal.common.util.LocaleInfo;
+import org.jboss.portal.common.util.ParameterValidation;
import org.jboss.portal.portlet.OpaqueStateString;
import org.jboss.portal.portlet.Parameters;
import org.jboss.portal.portlet.Portlet;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
+import org.jboss.portal.portlet.StateEvent;
import org.jboss.portal.portlet.StateString;
import org.jboss.portal.portlet.info.CacheInfo;
import org.jboss.portal.portlet.invocation.ActionInvocation;
@@ -47,7 +49,7 @@
import org.jboss.portal.portlet.spi.UserContext;
import org.jboss.portal.portlet.spi.WindowContext;
import org.jboss.portal.portlet.state.AccessMode;
-import org.jboss.portal.portlet.support.spi.InstanceContextSupport;
+import org.jboss.portal.portlet.state.producer.PortletStateChangeRequiredException;
import org.jboss.portal.server.util.HTTPStreamInfo;
import org.jboss.portal.wsrp.UserContextConverter;
import org.jboss.portal.wsrp.WSRPConstants;
@@ -283,7 +285,7 @@
final Portlet portlet;
try
{
- portlet = invoker.getPortlet(new
org.jboss.portal.portlet.PortletContext(portletHandle));
+ portlet =
invoker.getPortlet(org.jboss.portal.portlet.PortletContext.createPortletContext(portletHandle));
}
catch (PortletInvokerException e)
{
@@ -315,7 +317,7 @@
StateChange stateChange = interactionParams.getPortletStateChange();
WSRPUtils.throwMissingParametersFaultIfValueIsMissing(stateChange,
"portletStateChange", "InteractionParams");
- InstanceContext instanceContext = createInstanceContext(portletHandle,
WSRPUtils.getAccessModeFromStateChange(stateChange));
+ WSRPInstanceContext instanceContext = createInstanceContext(portletHandle,
WSRPUtils.getAccessModeFromStateChange(stateChange));
Parameters parameters;
@@ -370,6 +372,10 @@
response = producer.getInvoker().invoke(invocation);
log.debug("ActionInvocation done");
}
+ catch (PortletStateChangeRequiredException e)
+ {
+ throw
(PortletStateChangeRequiredFault)WSRPUtils.createFaultFrom(PortletStateChangeRequiredFault.class,
e);
+ }
catch (PortletInvokerException e)
{
log.fatal(e);
@@ -386,6 +392,8 @@
updateResponse.setNewWindowState(WSRPUtils.convertJSR168WindowStateNameToWSRPName(getNewStateOrNull(renderResult,
false)));
StateString ns = renderResult.getNavigationalState();
updateResponse.setNavigationalState(ns != null ? ns.getStringValue() : null);
+ PortletContext updatedPortletContext =
WSRPTypeFactory.createPortletContext(instanceContext.getId());
+ updateResponse.setPortletContext(updatedPortletContext);
return WSRPTypeFactory.createBlockingInteractionResponse(updateResponse);
}
@@ -412,12 +420,12 @@
Throwable throwable = errorResult.getThrowable();
if (throwable instanceof PortletModeException)
{
-
throw(UnsupportedModeFault)WSRPUtils.createFaultFrom(UnsupportedModeFault.class,
+ throw
(UnsupportedModeFault)WSRPUtils.createFaultFrom(UnsupportedModeFault.class,
new IllegalArgumentException("Unsupported mode: " +
((PortletModeException)throwable).getMode()));
}
if (throwable instanceof WindowStateException)
{
-
throw(UnsupportedWindowStateFault)WSRPUtils.createFaultFrom(UnsupportedWindowStateFault.class,
+ throw
(UnsupportedWindowStateFault)WSRPUtils.createFaultFrom(UnsupportedWindowStateFault.class,
new IllegalArgumentException("Unsupported window state: " +
((WindowStateException)throwable).getState()));
}
// todo: deal with other exceptions
@@ -523,20 +531,9 @@
}
}
- private InstanceContext createInstanceContext(final String portletHandle, final
AccessMode accessMode)
+ private WSRPInstanceContext createInstanceContext(final String portletHandle, final
AccessMode accessMode)
{
- return new InstanceContextSupport()
- {
- public String getId()
- {
- return portletHandle;
- }
-
- public AccessMode getAccessMode()
- {
- return accessMode;
- }
- };
+ return new WSRPInstanceContext(portletHandle, accessMode);
}
private WindowContext createWindowContext(final String portletHandle, final
RuntimeContext runtimeContext)
@@ -620,7 +617,7 @@
}
catch (MimeTypeParseException e)
{
-
throw(UnsupportedMimeTypeFault)WSRPUtils.createFaultFrom(UnsupportedMimeTypeFault.class,
e);
+ throw
(UnsupportedMimeTypeFault)WSRPUtils.createFaultFrom(UnsupportedMimeTypeFault.class, e);
}
return streamInfo;
}
@@ -704,7 +701,7 @@
// no MIME type was found: error!
if (markupType == null)
{
-
throw(UnsupportedMimeTypeFault)WSRPUtils.createFaultFrom(UnsupportedMimeTypeFault.class,
+ throw
(UnsupportedMimeTypeFault)WSRPUtils.createFaultFrom(UnsupportedMimeTypeFault.class,
new IllegalArgumentException("None of the specified MIME types are
supported by this Portlet."));
}
@@ -716,7 +713,7 @@
}
catch (IllegalArgumentException e)
{
- throw(UnsupportedModeFault)WSRPUtils.createFaultFrom(UnsupportedModeFault.class,
e);
+ throw
(UnsupportedModeFault)WSRPUtils.createFaultFrom(UnsupportedModeFault.class, e);
}
// get the window state
@@ -727,7 +724,7 @@
}
catch (IllegalArgumentException e)
{
-
throw(UnsupportedWindowStateFault)WSRPUtils.createFaultFrom(UnsupportedWindowStateFault.class,
e);
+ throw
(UnsupportedWindowStateFault)WSRPUtils.createFaultFrom(UnsupportedWindowStateFault.class,
e);
}
// get the character set
@@ -901,4 +898,34 @@
return result;
}
}
+
+ class WSRPInstanceContext implements InstanceContext
+ {
+ private String id;
+ private final AccessMode accessMode;
+ private boolean wasModified = false;
+
+ public WSRPInstanceContext(String portletHandle, AccessMode accessMode)
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(portletHandle,
"portlet handle", "InstanceContext");
+ ParameterValidation.throwIllegalArgExceptionIfNull(accessMode,
"AccessMode");
+
+ this.id = portletHandle;
+ this.accessMode = accessMode;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public AccessMode getAccessMode()
+ {
+ return accessMode;
+ }
+
+ public void onStateEvent(StateEvent event)
+ {
+ }
+ }
}
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/WSRPProducerImpl.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/WSRPProducerImpl.java 2006-12-09
17:58:29 UTC (rev 5775)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/WSRPProducerImpl.java 2006-12-09
19:12:54 UTC (rev 5776)
@@ -403,7 +403,7 @@
Portlet portlet;
try
{
- portlet = invoker.getPortlet(new
org.jboss.portal.portlet.PortletContext(handle));
+ portlet =
invoker.getPortlet(org.jboss.portal.portlet.PortletContext.createPortletContext(handle));
}
catch (NoSuchPortletException e)
{