Author: mwringe
Date: 2009-08-17 23:49:09 -0400 (Mon, 17 Aug 2009)
New Revision: 13774
Added:
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/PortletStateType.java
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/ExoKernelIntegration.java
Modified:
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/PortletContext.java
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/StatefulPortletContext.java
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/spi/InstanceContext.java
jbossexo/modules/portlet/trunk/exo/src/main/java/org/jboss/portal/portlet/exo/ExoKernelIntegration.java
jbossexo/modules/portlet/trunk/federation/src/main/java/org/jboss/portal/portlet/federation/impl/FederatedPortletInvokerService.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/aspects/portlet/PortletCustomizationInterceptor.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/ContainerPortletInvoker.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletResourceBundleFactory.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractInstanceContext.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/StateConverterV0.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/consumer/AbstractConsumerPersistenceManagerService.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/consumer/ConsumerPersistenceManagerService.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/StateConverter.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPersistenceManager.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerState.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerStateContext.java
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/PortletSupport.java
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/spi/InstanceContextSupport.java
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/AbstractStatefulPortletInvokerTestCase.java
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/StateConverterV0TestCase.java
jbossexo/modules/portlet/trunk/test/pom.xml
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletControllerContextImpl.java
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPortletControllerContext.java
jbossexo/modules/portlet/trunk/test/src/test/build.xml
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-portal-beans.xml
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/web.xml
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-portal-beans.xml
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/web.xml
Log:
Update tests to get them mostly working again.
Apply Julien's patch to create a separate StatefulPortletContext which contains a
serializable class as its state instead of using a byte array. This will allow using
portlet specific preference classes without having to rely on costly byte array
transformations.
Modified:
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/PortletContext.java
===================================================================
---
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/PortletContext.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/PortletContext.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -74,11 +74,6 @@
return "PortletContext[" + id + "]";
}
- public byte[] getState()
- {
- return null;
- }
-
/**
* Create a PortletContext based on id and optional state.
*
@@ -86,11 +81,12 @@
* @param state the optional state
* @return a new PortletContext based on the provided information
*/
+ @Deprecated()
public static PortletContext createPortletContext(String id, byte[] state)
{
if (state != null && state.length > 0)
{
- return new StatefulPortletContext(id, state);
+ return new StatefulPortletContext<byte[]>(id, PortletStateType.OPAQUE,
state);
}
else
{
@@ -107,9 +103,10 @@
* @param state the mandatory state
* @return a new PortletContext
*/
- public static PortletContext createStatefulPortletContext(String id, byte[] state)
+ @Deprecated
+ public static StatefulPortletContext<byte[]> createStatefulPortletContext(String
id, byte[] state)
{
- return new StatefulPortletContext(id, state);
+ return new StatefulPortletContext<byte[]>(id, PortletStateType.OPAQUE,
state);
}
public static PortletContext createPortletContext(String portletId)
Added:
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/PortletStateType.java
===================================================================
---
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/PortletStateType.java
(rev 0)
+++
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/PortletStateType.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2003-2007 eXo Platform SAS.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not,
see<http://www.gnu.org/licenses/>.
+ */
+package org.jboss.portal.portlet.api;
+
+import java.io.Serializable;
+import java.util.Arrays;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
+ * @version $Revision$
+ */
+public abstract class PortletStateType<S extends Serializable>
+{
+
+ public static final PortletStateType<byte[]> OPAQUE = new
PortletStateType<byte[]>()
+ {
+ public Class<byte[]> getJavaType() {
+ return byte[].class;
+ }
+
+ @Override
+ public boolean equals(byte[] state1, byte[] state2) {
+ return Arrays.equals(state1, state2);
+ }
+
+ @Override
+ public int hashCode(byte[] state) {
+ return (state != null ? state.hashCode() : 0);
+ }
+
+ @Override
+ public String toString(byte[] state) {
+ return "" + state.length;
+ }
+ };
+
+ public abstract Class<S> getJavaType();
+
+ public abstract boolean equals(S state1, S state2);
+
+ public abstract int hashCode(S state);
+
+ public abstract String toString(S state);
+
+}
Modified:
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/StatefulPortletContext.java
===================================================================
---
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/StatefulPortletContext.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/StatefulPortletContext.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -24,7 +24,7 @@
import org.jboss.portal.common.util.ParameterValidation;
-import java.util.Arrays;
+import java.io.Serializable;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -32,21 +32,44 @@
* @version $Revision: 1.1 $
* @since 2.6
*/
-public class StatefulPortletContext extends PortletContext
+public class StatefulPortletContext<S extends Serializable> extends PortletContext
{
+ public static <S extends Serializable> StatefulPortletContext<S>
create(String id, StatefulPortletContext<S> spc)
+ {
+ return new StatefulPortletContext<S>(id, spc.type, spc.state);
+ }
+
+ public static <S extends Serializable> StatefulPortletContext<S> create(
+ String id,
+ PortletStateType<S> type,
+ S state)
+ {
+ return new StatefulPortletContext<S>(id, type, state);
+ }
+
/** . */
- private final byte[] marshalledState;
+ private final S state;
- StatefulPortletContext(String id, byte[] marshalledState) throws
IllegalArgumentException
+ /** . */
+ private final PortletStateType<S> type;
+
+ StatefulPortletContext(String id, PortletStateType<S> type, S state) throws
IllegalArgumentException
{
super(id);
- ParameterValidation.throwIllegalArgExceptionIfNull(marshalledState, "Portlet
state");
+ //
+ ParameterValidation.throwIllegalArgExceptionIfNull(type, "Portlet
type");
+ ParameterValidation.throwIllegalArgExceptionIfNull(state, "Portlet
state");
- this.marshalledState = marshalledState;
+ //
+ this.type = type;
+ this.state = state;
}
+ public PortletStateType<S> getType() {
+ return type;
+ }
public boolean equals(Object o)
{
@@ -63,25 +86,34 @@
return false;
}
- StatefulPortletContext that = (StatefulPortletContext)o;
+ //
+ StatefulPortletContext<?> that = (StatefulPortletContext<?>)o;
- return Arrays.equals(marshalledState, that.marshalledState);
+ //
+ if (type.getJavaType().equals(that.type.getJavaType()))
+ {
+ S thatState = type.getJavaType().cast(that.getState());
+ return type.equals(state, thatState);
+ }
+
+ //
+ return false;
}
public int hashCode()
{
int result = super.hashCode();
- result = 31 * result + (marshalledState != null ? marshalledState.hashCode() : 0);
+ result = 31 * result + (state != null ? state.hashCode() : 0);
return result;
}
- public byte[] getState()
+ public S getState()
{
- return marshalledState;
+ return state;
}
public String toString()
{
- return "StatefulPortletContext[" + id + "," +
marshalledState.length + "]";
+ return "StatefulPortletContext[" + id + "," +
type.toString(state) + "]";
}
}
Modified:
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/spi/InstanceContext.java
===================================================================
---
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/spi/InstanceContext.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/api/src/main/java/org/jboss/portal/portlet/api/spi/InstanceContext.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -23,8 +23,11 @@
package org.jboss.portal.portlet.api.spi;
import org.jboss.portal.portlet.api.StateEvent;
+import org.jboss.portal.portlet.api.PortletStateType;
import org.jboss.portal.portlet.api.state.AccessMode;
+import java.io.Serializable;
+
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 5448 $
@@ -51,4 +54,12 @@
* @param event the event
*/
void onStateEvent(StateEvent event);
+
+ /**
+ * Returns the state type managed by the consumer. If the consumer cannot manage
+ * state by itself, then null must be returned.
+ *
+ * @return the consumer state type
+ */
+ PortletStateType<?> getStateType();
}
Modified:
jbossexo/modules/portlet/trunk/exo/src/main/java/org/jboss/portal/portlet/exo/ExoKernelIntegration.java
===================================================================
---
jbossexo/modules/portlet/trunk/exo/src/main/java/org/jboss/portal/portlet/exo/ExoKernelIntegration.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/exo/src/main/java/org/jboss/portal/portlet/exo/ExoKernelIntegration.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -127,17 +127,16 @@
PortletInvokerInterceptor consumerPortletInvoker = new
PortletInvokerInterceptor();
consumerPortletInvoker.setNext(consumerCacheInterceptor);
- container.registerComponentInstance(PortletInvoker.class, consumerPortletInvoker);
+ //container.registerComponentInstance(PortletInvoker.class,
consumerPortletInvoker);
// Federating portlet invoker
FederatingPortletInvoker federatingPortletInvoker = new
FederatingPortletInvokerService();
// register local portlet invoker with federating portlet invoker
federatingPortletInvoker.registerInvoker(FederatingPortletInvoker.LOCAL_PORTLET_INVOKER_ID,
consumerPortletInvoker);
-
/* register with container */
- container.registerComponentInstance(PortletInvoker.class,
federatingPortletInvoker);
-
+ container.registerComponentInstance(PortletInvoker.class, consumerPortletInvoker);
//federatingPortletInvoker);
+
portletApplicationRegistry.start();
}
Modified:
jbossexo/modules/portlet/trunk/federation/src/main/java/org/jboss/portal/portlet/federation/impl/FederatedPortletInvokerService.java
===================================================================
---
jbossexo/modules/portlet/trunk/federation/src/main/java/org/jboss/portal/portlet/federation/impl/FederatedPortletInvokerService.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/federation/src/main/java/org/jboss/portal/portlet/federation/impl/FederatedPortletInvokerService.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -30,6 +30,8 @@
import org.jboss.portal.portlet.api.StateEvent;
import org.jboss.portal.portlet.api.PortletInvoker;
import org.jboss.portal.portlet.api.PortletInvokerException;
+import org.jboss.portal.portlet.api.StatefulPortletContext;
+import org.jboss.portal.portlet.api.PortletStateType;
import org.jboss.portal.portlet.api.state.PropertyMap;
import org.jboss.portal.portlet.api.invocation.PortletInvocation;
import org.jboss.portal.portlet.api.invocation.response.PortletInvocationResponse;
@@ -131,6 +133,10 @@
{
ctx.onStateEvent(new StateEvent(reference(event.getPortletContext()),
event.getType()));
}
+
+ public PortletStateType<?> getStateType() {
+ return ctx.getStateType();
+ }
}
public PortletInvocationResponse invoke(PortletInvocation invocation) throws
InvocationException, PortletInvokerException
@@ -215,13 +221,29 @@
private PortletContext dereference(PortletContext compoundPortletContext)
{
String portletId = compoundPortletContext.getId().substring(id.length() + 1);
- return PortletContext.createPortletContext(portletId,
compoundPortletContext.getState());
+ if (compoundPortletContext instanceof StatefulPortletContext)
+ {
+ StatefulPortletContext<?> compoundStatefulPortletContext =
(StatefulPortletContext<?>)compoundPortletContext;
+ return StatefulPortletContext.create(portletId,
compoundStatefulPortletContext);
+ }
+ else
+ {
+ return PortletContext.createPortletContext(portletId);
+ }
}
private PortletContext reference(PortletContext portletContext)
{
String compoundPortletId = reference(portletContext.getId());
- return PortletContext.createPortletContext(compoundPortletId,
portletContext.getState());
+ if (portletContext instanceof StatefulPortletContext)
+ {
+ StatefulPortletContext<?> statefulPortletContext =
(StatefulPortletContext<?>)portletContext;
+ return StatefulPortletContext.create(compoundPortletId,
statefulPortletContext);
+ }
+ else
+ {
+ return PortletContext.createPortletContext(compoundPortletId);
+ }
}
private String reference(String portletId)
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/aspects/portlet/PortletCustomizationInterceptor.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/aspects/portlet/PortletCustomizationInterceptor.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/aspects/portlet/PortletCustomizationInterceptor.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -33,6 +33,7 @@
import org.jboss.portal.portlet.api.StateEvent;
import org.jboss.portal.portlet.api.PortletContext;
import org.jboss.portal.portlet.api.PortletInvokerException;
+import org.jboss.portal.portlet.api.PortletStateType;
/**
* <p>This interceptor takes in charge the management of portlet customization when
the invocation carries
@@ -133,5 +134,9 @@
useClone = true;
userContext.setAttribute("clone." + id, target);
}
+
+ public PortletStateType<?> getStateType() {
+ return PortletStateType.OPAQUE;
+ }
}
}
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/ContainerPortletInvoker.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/ContainerPortletInvoker.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/ContainerPortletInvoker.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -206,6 +206,7 @@
{
this.container = container;
this.context =
PortletContext.createPortletContext(container.getPortletApplication().getId() +
"." + container.getId());
+ //this.context =
PortletContext.createPortletContext(container.getPortletApplication().getId().substring(1)
+ "/" + container.getId());
}
public PortletContext getContext()
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletResourceBundleFactory.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletResourceBundleFactory.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletResourceBundleFactory.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -129,7 +129,7 @@
}
//needed for name recursion
- MapResourceBundle mapRB = new MapResourceBundle(bundle, locale);
+ MapResourceBundle mapRB = new MapResourceBundle(bundle, bundle.getLocale());
mapRB.resolveDependencies();
//
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractInstanceContext.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractInstanceContext.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractInstanceContext.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -25,6 +25,7 @@
import org.jboss.portal.portlet.api.state.AccessMode;
import org.jboss.portal.portlet.api.PortletContext;
import org.jboss.portal.portlet.api.StateEvent;
+import org.jboss.portal.portlet.api.PortletStateType;
import org.jboss.portal.portlet.api.spi.InstanceContext;
/**
@@ -99,4 +100,8 @@
{
return modifiedContext;
}
+
+ public PortletStateType<?> getStateType() {
+ return null;
+ }
}
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/StateConverterV0.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/StateConverterV0.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/StateConverterV0.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -23,6 +23,7 @@
package org.jboss.portal.portlet.impl.state;
import org.jboss.portal.portlet.api.state.PropertyMap;
+import org.jboss.portal.portlet.api.PortletStateType;
import org.jboss.portal.portlet.state.SimplePropertyMap;
import org.jboss.portal.portlet.state.StateConversionException;
import org.jboss.portal.portlet.state.StateConverter;
@@ -33,6 +34,7 @@
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
+import java.io.Serializable;
import java.util.Map;
import java.util.List;
import java.util.Arrays;
@@ -57,7 +59,19 @@
/** . */
private static final byte VERSION_ID = 0;
- public byte[] marshall(PortletState state) throws StateConversionException
+ public <S extends Serializable> S marshall(PortletStateType<S> stateType,
PortletState state) throws StateConversionException, IllegalArgumentException {
+ if (stateType.getJavaType().equals(byte[].class))
+ {
+ Object bytes = marshall(state);
+ return (S)bytes;
+ }
+ else
+ {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ public byte[] marshall(PortletState state) throws StateConversionException
{
if (state == null)
{
@@ -103,6 +117,19 @@
}
}
+ public <S extends Serializable> PortletState
unmarshall(PortletStateType<S> stateType, S marshalledState) throws
StateConversionException, IllegalArgumentException
+ {
+ if (stateType.getJavaType().equals(byte[].class))
+ {
+ byte[] bytes = (byte[])marshalledState;
+ return unmarshall(bytes);
+ }
+ else
+ {
+ throw new UnsupportedOperationException();
+ }
+ }
+
public PortletState unmarshall(byte[] marshalledState) throws
StateConversionException
{
if (marshalledState == null)
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/consumer/AbstractConsumerPersistenceManagerService.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/consumer/AbstractConsumerPersistenceManagerService.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/consumer/AbstractConsumerPersistenceManagerService.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -28,25 +28,27 @@
import org.jboss.portal.portlet.state.NoSuchStateException;
import org.jboss.portal.portlet.state.InvalidStateIdException;
+import java.io.Serializable;
+
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 1.1 $
*/
-public abstract class AbstractConsumerPersistenceManagerService implements
ConsumerPersistenceManager
+public abstract class AbstractConsumerPersistenceManagerService<S extends
Serializable> implements ConsumerPersistenceManager<S>
{
/** . */
private int counter = 0;
- protected abstract ConsumerStateContext get(String stateId);
- protected abstract void put(String stateId, ConsumerStateContext state);
+ protected abstract ConsumerStateContext<S> get(String stateId);
+ protected abstract void put(String stateId, ConsumerStateContext<S> state);
protected abstract void remove(String stateId);
protected abstract int size();
- public synchronized ConsumerStateContext loadState(String stateId) throws
IllegalArgumentException, NoSuchStateException, InvalidStateIdException
+ public synchronized ConsumerStateContext<S> loadState(String stateId) throws
IllegalArgumentException, NoSuchStateException, InvalidStateIdException
{
checkId(stateId);
- ConsumerStateContext state = get(stateId);
+ ConsumerStateContext<S> state = get(stateId);
if (state == null)
{
throw new NoSuchStateException(stateId);
@@ -54,18 +56,18 @@
return state;
}
- public synchronized String createState(ConsumerState state) throws
IllegalArgumentException
+ public synchronized String createState(ConsumerState<S> state) throws
IllegalArgumentException
{
if (state == null)
{
throw new IllegalArgumentException();
}
- ConsumerStateContext ctx = new ConsumerStateContext(Integer.toString(counter++),
state.getPortletId(), state.getBytes());
+ ConsumerStateContext<S> ctx = new
ConsumerStateContext<S>(Integer.toString(counter++), state.getPortletId(),
state.getStateType(), state.getState());
put(ctx.getId(), ctx);
return ctx.getId();
}
- public synchronized void updateState(String stateId, ConsumerState state) throws
IllegalArgumentException, NoSuchStateException, InvalidStateIdException
+ public synchronized void updateState(String stateId, ConsumerState<S> state)
throws IllegalArgumentException, NoSuchStateException, InvalidStateIdException
{
checkId(stateId);
if (state == null)
@@ -78,7 +80,7 @@
}
//
- put(stateId, new ConsumerStateContext(stateId, state.getPortletId(),
state.getBytes()));
+ put(stateId, new ConsumerStateContext<S>(stateId, state.getPortletId(),
state.getStateType(), state.getState()));
}
public synchronized void destroyState(String stateId) throws IllegalArgumentException,
NoSuchStateException, InvalidStateIdException
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/consumer/ConsumerPersistenceManagerService.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/consumer/ConsumerPersistenceManagerService.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/state/consumer/ConsumerPersistenceManagerService.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -23,6 +23,7 @@
package org.jboss.portal.portlet.impl.state.consumer;
import org.jboss.portal.portlet.state.consumer.ConsumerStateContext;
+import org.jboss.portal.portlet.api.PortletStateType;
import java.util.HashMap;
import java.util.Map;
@@ -31,18 +32,22 @@
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 1.1 $
*/
-public class ConsumerPersistenceManagerService extends
AbstractConsumerPersistenceManagerService
+public class ConsumerPersistenceManagerService extends
AbstractConsumerPersistenceManagerService<byte[]>
{
/** . */
- private Map<String, ConsumerStateContext> store = new HashMap<String,
ConsumerStateContext>();
+ private Map<String, ConsumerStateContext<byte[]>> store = new
HashMap<String, ConsumerStateContext<byte[]>>();
- protected ConsumerStateContext get(String stateId)
+ public PortletStateType<byte[]> getStateType() {
+ return PortletStateType.OPAQUE;
+ }
+
+ protected ConsumerStateContext<byte[]> get(String stateId)
{
return store.get(stateId);
}
- protected void put(String stateId, ConsumerStateContext state)
+ protected void put(String stateId, ConsumerStateContext<byte[]> state)
{
store.put(stateId, state);
}
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/StateConverter.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/StateConverter.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/StateConverter.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -23,7 +23,10 @@
package org.jboss.portal.portlet.state;
import org.jboss.portal.portlet.state.producer.PortletState;
+import org.jboss.portal.portlet.api.PortletStateType;
+import java.io.Serializable;
+
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 5873 $
@@ -33,20 +36,22 @@
/**
* Marshall the producer state as a byte array.
*
+ * @param stateType the state type
* @param state the producer state
* @return the marshalled state
* @throws StateConversionException if marshalling cannot be performed
* @throws IllegalArgumentException if the state is null
*/
- byte[] marshall(PortletState state) throws StateConversionException,
IllegalArgumentException;
+ <S extends Serializable> S marshall(PortletStateType<S> stateType,
PortletState state) throws StateConversionException, IllegalArgumentException;
/**
* Unmarshall the producer state from a byte array.
*
+ * @param stateType the state type
* @param marshalledState the marshalled state
* @return the producer state
* @throws StateConversionException if unmarshalling cannot be performed
* @throws IllegalArgumentException if the argument is null
*/
- PortletState unmarshall(byte[] marshalledState) throws StateConversionException,
IllegalArgumentException;
+ <S extends Serializable> PortletState unmarshall(PortletStateType<S>
stateType, S marshalledState) throws StateConversionException, IllegalArgumentException;
}
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPersistenceManager.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPersistenceManager.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPersistenceManager.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -24,13 +24,24 @@
import org.jboss.portal.portlet.state.InvalidStateIdException;
import org.jboss.portal.portlet.state.NoSuchStateException;
+import org.jboss.portal.portlet.api.PortletStateType;
+import java.io.Serializable;
+
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 5776 $
*/
-public interface ConsumerPersistenceManager
+public interface ConsumerPersistenceManager<S extends Serializable>
{
+
+ /**
+ * Returns the consumer state type.
+ *
+ * @return the consume state type
+ */
+ PortletStateType<S> getStateType();
+
/**
* Load the state.
*
@@ -40,31 +51,32 @@
* @throws NoSuchStateException is the specified state does not exist
* @throws InvalidStateIdException if the state id is not valid
*/
- ConsumerStateContext loadState(String stateId) throws IllegalArgumentException,
NoSuchStateException, InvalidStateIdException;
+ ConsumerStateContext<S> loadState(String stateId) throws
IllegalArgumentException, NoSuchStateException, InvalidStateIdException;
/**
* Create the initial state.
*
+ * @param state the state
* @return the id of the state created
* @throws IllegalArgumentException if the portlet id is null
*/
- String createState(ConsumerState state) throws IllegalArgumentException;
+ String createState(ConsumerState<S> state) throws IllegalArgumentException;
/**
* Update the state.
*
- * @param stateId
+ * @param stateId the state id
* @param propertyMap the updated state
* @throws IllegalArgumentException if the state id is null or the values are null
* @throws NoSuchStateException is the specified state does not exist
* @throws InvalidStateIdException if the state id is not valid
*/
- void updateState(String stateId, ConsumerState propertyMap) throws
IllegalArgumentException, NoSuchStateException, InvalidStateIdException;
+ void updateState(String stateId, ConsumerState<S> propertyMap) throws
IllegalArgumentException, NoSuchStateException, InvalidStateIdException;
/**
* Destroy the state.
*
- * @param stateId
+ * @param stateId the state id
* @throws IllegalArgumentException if the state id is null
* @throws NoSuchStateException is the specified state does not exist
* @throws InvalidStateIdException if the state id is not valid
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerPortletInvoker.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -29,6 +29,8 @@
import org.jboss.portal.portlet.api.PortletContext;
import org.jboss.portal.portlet.api.StateEvent;
import org.jboss.portal.portlet.api.PortletInvokerException;
+import org.jboss.portal.portlet.api.StatefulPortletContext;
+import org.jboss.portal.portlet.api.PortletStateType;
import org.jboss.portal.portlet.api.state.PropertyMap;
import org.jboss.portal.portlet.PortletInvokerInterceptor;
import org.jboss.portal.portlet.api.invocation.PortletInvocation;
@@ -43,6 +45,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import java.io.Serializable;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -145,11 +148,14 @@
PortletContext clonedContext = pictx.clonedContext;
if (clonedContext != null)
{
- byte[] state = clonedContext.getState();
- if (state != null)
+ if (clonedContext instanceof StatefulPortletContext)
{
+ StatefulPortletContext statefulClonedContext =
(StatefulPortletContext)clonedContext;
+ Serializable state = statefulClonedContext.getState();
+ PortletStateType stateType = statefulClonedContext.getType();
+
// Save the clone state
- ConsumerState consumerState = new ConsumerState(clonedContext.getId(),
state);
+ ConsumerState consumerState = new
ConsumerState<Serializable>(clonedContext.getId(), stateType, state);
String stateId = persistenceManager.createState(consumerState);
String clonedId = CLONE_ID_PREFIX + stateId;
StateEvent event = new
StateEvent(PortletContext.createPortletContext(clonedId),
StateEvent.Type.PORTLET_CLONED_EVENT);
@@ -166,13 +172,15 @@
PortletContext modifiedContext = pictx.modifiedContext;
if (modifiedContext != null)
{
- byte[] state = modifiedContext.getState();
// update state if needed
- if (state != null)
+ if (clonedContext instanceof StatefulPortletContext)
{
+ StatefulPortletContext statefulClonedContext =
(StatefulPortletContext)clonedContext;
+ Serializable state = statefulClonedContext.getState();
+ PortletStateType stateType = statefulClonedContext.getType();
try
{
- ConsumerState consumerState = new
ConsumerState(modifiedContext.getId(), state);
+ ConsumerState consumerState = new
ConsumerState<Serializable>(modifiedContext.getId(), stateType, state);
persistenceManager.updateState(consumerContext.stateId,
consumerState);
}
catch (NoSuchStateException e)
@@ -204,10 +212,10 @@
//
PortletContext clonedContext =
super.createClone(consumerContext.producerPortletContext);
- byte[] state = clonedContext.getState();
- if (state != null)
+ if (clonedContext instanceof StatefulPortletContext)
{
- ConsumerState consumerState = new ConsumerState(clonedContext.getId(), state);
+ StatefulPortletContext statefulClonedContext =
(StatefulPortletContext)clonedContext;
+ ConsumerState consumerState = new
ConsumerState<Serializable>(clonedContext.getId(), statefulClonedContext.getType(),
statefulClonedContext.getState());
String id = persistenceManager.createState(consumerState);
return PortletContext.createPortletContext(CLONE_ID_PREFIX + id);
}
@@ -279,16 +287,20 @@
//
PortletContext updatedPortletContext =
super.setProperties(consumerContext.producerPortletContext, changes);
- byte[] state = updatedPortletContext.getState();
- if (state != null)
+ if (updatedPortletContext instanceof StatefulPortletContext)
{
+ StatefulPortletContext statefulUpdatedPortletContext =
(StatefulPortletContext)updatedPortletContext;
+ Serializable state = statefulUpdatedPortletContext.getState();
+ PortletStateType stateType = statefulUpdatedPortletContext.getType();
+
+ //
if (consumerContext.stateId == null)
{
throw new NotYetImplemented();
}
//
- ConsumerState consumerState = new ConsumerState(updatedPortletContext.getId(),
state);
+ ConsumerState consumerState = new
ConsumerState<Serializable>(updatedPortletContext.getId(), stateType, state);
try
{
persistenceManager.updateState(consumerContext.stateId, consumerState);
@@ -314,7 +326,7 @@
return portletContext;
}
- private static class StatefulInstanceContextImpl implements InstanceContext
+ private class StatefulInstanceContextImpl implements InstanceContext
{
/** . */
@@ -353,6 +365,10 @@
break;
}
}
+
+ public PortletStateType<?> getStateType() {
+ return persistenceManager.getStateType();
+ }
}
private ConsumerContext getConsumerContext(PortletContext portletContext) throws
IllegalArgumentException, InvalidPortletIdException
@@ -372,7 +388,11 @@
try
{
ConsumerStateContext stateCtx = persistenceManager.loadState(stateId);
- return new ConsumerContext(portletContext,
PortletContext.createStatefulPortletContext(stateCtx.getPortletId(), stateCtx.getBytes()),
stateId);
+ StatefulPortletContext<Serializable> blah =
StatefulPortletContext.create(
+ stateCtx.getPortletId(),
+ stateCtx.getStateType(),
+ stateCtx.getState());
+ return new ConsumerContext(portletContext, blah, stateId);
}
catch (NoSuchStateException e)
{
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerState.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerState.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerState.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -22,36 +22,44 @@
******************************************************************************/
package org.jboss.portal.portlet.state.consumer;
+import org.jboss.portal.portlet.api.PortletStateType;
+
import java.util.Date;
+import java.io.Serializable;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 5776 $
*/
-public class ConsumerState
+public class ConsumerState<S extends Serializable>
{
/** . */
- private String portletId;
+ private final String portletId;
/** . */
- private byte[] bytes;
+ private final PortletStateType<S> stateType;
/** . */
- private Date terminationTime;
+ private final S state;
- public ConsumerState(String porteltId, byte[] bytes)
+ /** . */
+ private final Date terminationTime;
+
+ public ConsumerState(String porteltId, PortletStateType<S> stateType, S state)
{
if (porteltId == null)
{
throw new IllegalArgumentException("No portlet id provided");
}
- if (bytes == null)
+ if (state == null)
{
throw new IllegalArgumentException("No bytes provided");
}
this.portletId = porteltId;
- this.bytes = bytes;
+ this.stateType = stateType;
+ this.state = state;
+ this.terminationTime = null;
}
/**
@@ -62,12 +70,17 @@
return portletId;
}
+ public PortletStateType<S> getStateType()
+ {
+ return stateType;
+ }
+
/**
*
*/
- public byte[] getBytes()
+ public S getState()
{
- return bytes;
+ return state;
}
/**
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerStateContext.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerStateContext.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/consumer/ConsumerStateContext.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -22,19 +22,23 @@
******************************************************************************/
package org.jboss.portal.portlet.state.consumer;
+import org.jboss.portal.portlet.api.PortletStateType;
+
+import java.io.Serializable;
+
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 5776 $
*/
-public class ConsumerStateContext extends ConsumerState
+public class ConsumerStateContext<S extends Serializable> extends
ConsumerState<S>
{
/** . */
private final String id;
- public ConsumerStateContext(String id, String portletId, byte[] bytes)
+ public ConsumerStateContext(String id, String portletId, PortletStateType<S>
stateType, S state)
{
- super(portletId, bytes);
+ super(portletId, stateType, state);
//
if (id == null)
Modified:
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -30,6 +30,7 @@
import org.jboss.portal.portlet.api.PortletContext;
import org.jboss.portal.portlet.api.PortletInvokerException;
import org.jboss.portal.portlet.api.StateEvent;
+import org.jboss.portal.portlet.api.PortletStateType;
import org.jboss.portal.portlet.api.state.PropertyMap;
import org.jboss.portal.portlet.api.info.PortletInfo;
import org.jboss.portal.portlet.api.info.PreferenceInfo;
@@ -60,6 +61,7 @@
import java.util.Set;
import java.util.HashSet;
import java.util.Map;
+import java.io.Serializable;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -129,14 +131,14 @@
//
if (CONSUMER_CLONE_ID.equals(portletId))
{
- byte[] state = portletContext.getState();
+ if (portletContext instanceof StatefulPortletContext)
+ {
+ StatefulPortletContext statefulPortletContext =
(StatefulPortletContext)portletContext;
+ Serializable state = statefulPortletContext.getState();
- //
- if (state != null)
- {
try
{
- PortletState portletState = stateConverter.unmarshall(state);
+ PortletState portletState =
stateConverter.unmarshall(statefulPortletContext.getType(), state);
Portlet delegate =
super.getPortlet(PortletContext.createPortletContext(portletState.getPortletId()));
return new ProducerPortlet(portletContext, delegate);
}
@@ -236,17 +238,19 @@
PropertyMap newPrefs = prefs.getPrefs();
//
+ PortletStateType stateType = instanceCtx.getStateType();
+ boolean persistLocally = stateType == null ||
stateManagementPolicy.persistLocally();
+
+ //
switch(access)
{
case CLONE_BEFORE_WRITE:
{
- boolean persist = stateManagementPolicy.persistLocally();
-
// Create the state
if (context.isStateful())
{
StatefulContext statefulContext = (StatefulContext)context;
- if (persist)
+ if (persistLocally)
{
try
{
@@ -272,7 +276,7 @@
}
else
{
- PortletContext clonedCtx = marshall(context.getPortletId(),
newPrefs);
+ PortletContext clonedCtx = marshall(stateType,
context.getPortletId(), newPrefs);
StateEvent event = new StateEvent(clonedCtx,
StateEvent.Type.PORTLET_CLONED_EVENT);
instanceCtx.onStateEvent(event);
}
@@ -283,7 +287,7 @@
getPropertiesFromMetaData(portlet.getContext(), newPrefs);
//
- if (persist)
+ if (persistLocally)
{
// Create the new state
String cloneStateId =
persistenceManager.createState(context.getPortletId(), newPrefs);
@@ -296,7 +300,7 @@
}
else
{
- PortletContext clonedCtx = marshall(context.getPortletId(),
newPrefs);
+ PortletContext clonedCtx = marshall(stateType,
context.getPortletId(), newPrefs);
StateEvent event = new StateEvent(clonedCtx,
StateEvent.Type.PORTLET_CLONED_EVENT);
instanceCtx.onStateEvent(event);
}
@@ -326,7 +330,7 @@
}
else
{
- PortletContext modifiedCtx = marshall(context.getPortletId(),
newPrefs);
+ PortletContext modifiedCtx = marshall(stateType,
context.getPortletId(), newPrefs);
StateEvent event = new StateEvent(modifiedCtx,
StateEvent.Type.PORTLET_MODIFIED_EVENT);
instanceCtx.onStateEvent(event);
}
@@ -354,13 +358,15 @@
//
String portletId = portletContext.getId();
InternalContext context = getStateContext(portletContext);
- boolean useStore = stateManagementPolicy.persistLocally();
//
+ boolean persistLocally = !(portletContext instanceof StatefulPortletContext) ||
stateManagementPolicy.persistLocally();
+
+ //
if (context.isStateful())
{
StatefulContext statefulContext = (StatefulContext)context;
- if (useStore)
+ if (persistLocally)
{
try
{
@@ -379,21 +385,23 @@
}
else
{
- return marshall(statefulContext.getPortletId(),
statefulContext.getProperties());
+ PortletStateType stateType =
((StatefulPortletContext)portletContext).getType();
+ return marshall(stateType, statefulContext.getPortletId(),
statefulContext.getProperties());
}
}
else
{
PropertyMap newState = new SimplePropertyMap();
getPropertiesFromMetaData(portletContext, newState);
- if (useStore)
+ if (persistLocally)
{
String cloneId = persistenceManager.createState(portletId, newState);
return PortletContext.createPortletContext(PRODUCER_CLONE_ID_PREFIX +
cloneId);
}
else
{
- return marshall(portletId, newState);
+ PortletStateType stateType =
((StatefulPortletContext)portletContext).getType();
+ return marshall(stateType, portletId, newState);
}
}
}
@@ -595,17 +603,18 @@
}
else
{
- return marshall(context.getPortletId(), properties);
+ RemoteContext remoteStatefulContext = (RemoteContext)statefulContext;
+ return marshall(remoteStatefulContext.getStateType(), context.getPortletId(),
properties);
}
}
- private PortletContext marshall(String portletId, PropertyMap props) throws
PortletInvokerException
+ private <S extends Serializable> PortletContext
marshall(PortletStateType<S> stateType, String portletId, PropertyMap props) throws
PortletInvokerException
{
try
{
PortletState sstate = new PortletState(portletId, props);
- byte[] marshalledState = stateConverter.marshall(sstate);
- return PortletContext.createStatefulPortletContext(CONSUMER_CLONE_ID,
marshalledState);
+ S marshalledState = stateConverter.marshall(stateType, sstate);
+ return StatefulPortletContext.create(CONSUMER_CLONE_ID, stateType,
marshalledState);
}
catch (StateConversionException e)
{
@@ -660,8 +669,7 @@
*/
private InternalContext getStateContext(final PortletContext portletContext) throws
NoSuchPortletException, InvalidPortletIdException
{
- byte[] bytes = portletContext.getState();
- if (bytes == null)
+ if (!(portletContext instanceof StatefulPortletContext))
{
String portletId = portletContext.getId();
if (portletContext.getId().startsWith(PRODUCER_CLONE_ID_PREFIX))
@@ -688,10 +696,13 @@
}
else
{
+ StatefulPortletContext statefulPortletContext =
(StatefulPortletContext)portletContext;
+ Serializable bytes = statefulPortletContext.getState();
+ PortletStateType stateType = statefulPortletContext.getType();
try
{
- final PortletState state = stateConverter.unmarshall(bytes);
- return new RemoteContext(state.getPortletId(), state.getProperties());
+ final PortletState state = stateConverter.unmarshall(stateType, bytes);
+ return new RemoteContext(stateType, state.getPortletId(),
state.getProperties());
}
catch (StateConversionException e)
{
@@ -826,13 +837,24 @@
private static class RemoteContext extends StatefulContext
{
- public RemoteContext(String portletId, PropertyMap state)
+ /** . */
+ private final PortletStateType stateType;
+
+ public RemoteContext(PortletStateType stateType, String portletId, PropertyMap
state)
{
super(portletId, state);
+
+ //
+ this.stateType = stateType;
}
- public boolean isLocal()
+ public PortletStateType getStateType()
{
+ return stateType;
+ }
+
+ public boolean isLocal()
+ {
return false;
}
}
Modified:
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/PortletSupport.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/PortletSupport.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/PortletSupport.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -25,6 +25,8 @@
import org.jboss.portal.portlet.api.PortletInvokerException;
import org.jboss.portal.portlet.api.PortletContext;
import org.jboss.portal.portlet.api.Portlet;
+import org.jboss.portal.portlet.api.PortletStateType;
+import org.jboss.portal.portlet.api.StatefulPortletContext;
import org.jboss.portal.portlet.support.info.PortletInfoSupport;
import org.jboss.portal.portlet.api.invocation.PortletInvocation;
import org.jboss.portal.portlet.api.invocation.ActionInvocation;
Modified:
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/spi/InstanceContextSupport.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/spi/InstanceContextSupport.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/spi/InstanceContextSupport.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -23,6 +23,7 @@
package org.jboss.portal.portlet.support.spi;
import org.jboss.portal.portlet.api.StateEvent;
+import org.jboss.portal.portlet.api.PortletStateType;
import org.jboss.portal.portlet.api.spi.InstanceContext;
import org.jboss.portal.portlet.api.state.AccessMode;
@@ -46,4 +47,8 @@
{
throw new UnsupportedOperationException();
}
+
+ public PortletStateType<?> getStateType() {
+ throw new UnsupportedOperationException();
+ }
}
Modified:
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/AbstractStatefulPortletInvokerTestCase.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/AbstractStatefulPortletInvokerTestCase.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/AbstractStatefulPortletInvokerTestCase.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -29,6 +29,7 @@
import org.jboss.portal.portlet.api.Portlet;
import org.jboss.portal.portlet.api.PortletContext;
import org.jboss.portal.portlet.api.PortletInvokerException;
+import org.jboss.portal.portlet.api.StatefulPortletContext;
import org.jboss.portal.portlet.api.state.PropertyMap;
import org.jboss.portal.portlet.support.info.PortletInfoSupport;
import org.jboss.portal.portlet.support.PortletSupport;
@@ -900,7 +901,7 @@
PortletSupport portletSupport = getPortletSupport(popCtx);
portletSupport.addHandler(handler);
addPreference(popCtx, "abc", Arrays.asList("def"));
-
+
//
PortletContext ccpCtx = createClone(popCtx);
@@ -932,9 +933,20 @@
// Test handle first
assertEquals(expected.getId(), actual.getId());
- // Compare bytes
- byte[] expectedState = expected.getState();
- byte[] actualState = actual.getState();
+ // Compare States
+ Object expectedState = null;
+ Object actualState = null;
+
+ if (expected instanceof StatefulPortletContext)
+ {
+ expectedState = ((StatefulPortletContext)expected).getState();
+ }
+
+ if (actual instanceof StatefulPortletContext)
+ {
+ actualState = ((StatefulPortletContext)actual).getState();
+ }
+
if (expectedState == null)
{
assertNull("Actual state should be null", actualState);
@@ -942,7 +954,7 @@
else
{
assertNotNull("Actual state should be not null", actualState);
- assertTrue(Arrays.equals(expectedState, actualState));
+ assertTrue(expectedState.equals(actualState));
}
}
}
Modified:
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/StateConverterV0TestCase.java
===================================================================
---
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/StateConverterV0TestCase.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/state/StateConverterV0TestCase.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -23,6 +23,7 @@
package org.jboss.portal.test.portlet.state;
import org.jboss.portal.portlet.impl.state.StateConverterV0;
+import org.jboss.portal.portlet.api.PortletStateType;
import org.jboss.portal.portlet.api.state.PropertyMap;
import org.jboss.portal.portlet.state.SimplePropertyMap;
import org.jboss.portal.portlet.state.StateConversionException;
@@ -50,7 +51,7 @@
{
try
{
- converter.marshall(null);
+ converter.marshall(PortletStateType.OPAQUE, null);
fail("Was expecting an IAE");
}
catch (IllegalArgumentException expected)
@@ -58,7 +59,7 @@
}
try
{
- converter.unmarshall(null);
+ converter.unmarshall(PortletStateType.OPAQUE, null);
fail("Was expecting an IAE");
}
catch (IllegalArgumentException expected)
@@ -69,14 +70,14 @@
@Test
public void testAlteredMagic() throws StateConversionException
{
- byte[] bytes = converter.marshall(new PortletState("foo"));
+ byte[] bytes = converter.marshall(PortletStateType.OPAQUE, new
PortletState("foo"));
bytes[0] = (byte)0xCA;
bytes[1] = (byte)0xFE;
bytes[2] = (byte)0xBA;
bytes[3] = (byte)0xBE;
try
{
- converter.unmarshall(bytes);
+ converter.unmarshall(PortletStateType.OPAQUE, bytes);
fail("Was expecting a state conversion exception");
}
catch (StateConversionException expected)
@@ -87,11 +88,11 @@
@Test
public void testBadVersionNumber() throws StateConversionException
{
- byte[] bytes = converter.marshall(new PortletState("foo"));
+ byte[] bytes = converter.marshall(PortletStateType.OPAQUE,new
PortletState("foo"));
bytes[4] = (byte)0x01;
try
{
- converter.unmarshall(bytes);
+ converter.unmarshall(PortletStateType.OPAQUE, bytes);
fail("Was expecting a state conversion exception");
}
catch (StateConversionException expected)
@@ -118,9 +119,9 @@
private void assertWorks(PortletState expectedState) throws Exception
{
- byte[] bytes = converter.marshall(expectedState);
+ byte[] bytes = converter.marshall(PortletStateType.OPAQUE, expectedState);
assertNotNull(bytes);
- PortletState state = converter.unmarshall(bytes);
+ PortletState state = converter.unmarshall(PortletStateType.OPAQUE, bytes);
assertNotNull(state);
//
Modified: jbossexo/modules/portlet/trunk/test/pom.xml
===================================================================
--- jbossexo/modules/portlet/trunk/test/pom.xml 2009-08-17 20:06:05 UTC (rev 13773)
+++ jbossexo/modules/portlet/trunk/test/pom.xml 2009-08-18 03:49:09 UTC (rev 13774)
@@ -167,6 +167,11 @@
<groupId>javax.portlet</groupId>
<artifactId>portlet-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>sun-jaxb</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <scope>test</scope>
+ </dependency>
<!-- JSTL for Tomcat -->
<dependency>
@@ -184,6 +189,11 @@
<artifactId>exo.kernel.container</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.exoplatform.portletcontainer</groupId>
+ <artifactId>exo.pc.component.common</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
@@ -263,7 +273,8 @@
<property name="dependency.junit.jar"
value="${maven.dependency.junit.junit.jar.path}"/>
<property name="dependency.jsr168api.jar"
value="${maven.dependency.javax.portlet.portlet-api.jar.path}"/>
<property name="dependency.ccpp.jar"
value="${maven.dependency.javax.ccpp.ccpp.jar.path}"/>
- <property name="dependency.jaxb.jar"
value="${maven.dependency.javax.xml.bind.jaxb-api.jar.path}"/>
+ <!-- <property name="dependency.jaxb.jar"
value="${maven.dependency.javax.xml.bind.jaxb-api.jar.path}"/> -->
+ <property name="dependency.jaxb.jar"
value="${maven.dependency.sun-jaxb.jaxb-api.jar.path}"/>
<property name="dependency.portal-common-common.jar"
value="${maven.dependency.org.jboss.portal.common.common-common.jar.path}"/>
<property name="dependency.portal-common-portal.jar"
value="${maven.dependency.org.jboss.portal.common.common-portal.jar.path}"/>
@@ -274,7 +285,7 @@
<property
name="dependency.portal-portlet-portlet.jar"
value="${maven.dependency.org.jboss.portal.portlet.portlet-portlet.jar.path}"/>
<property
name="dependency.portal-portlet-controller.jar"
value="${maven.dependency.org.jboss.portal.portlet.portlet-controller.jar.path}"/>
<property name="dependency.portal-portlet-mc.jar"
value="${maven.dependency.org.jboss.portal.portlet.portlet-mc.jar.path}"/>
- <property
name="dependency.portal-portlet-tests.test-jar"
value="${maven.dependency.org.jboss.portal.portlet.portlet-portlet.tests.test-jar.path}"/>
+ <property
name="dependency.portal-portlet-tests.test-jar"
value="${maven.dependency.org.jboss.portal.portlet.portlet-portlet.tests.jar.path}"/>
<property name="dependency.portal-portlet-api.jar"
value="${maven.dependency.org.jboss.portal.portlet.portlet-api.jar.path}"/>
<property name="dependency.jboss-unit.jar"
value="${maven.dependency.org.jboss.unit.jboss-unit.jar.path}"/>
@@ -293,7 +304,7 @@
<property name="dependency.jboss-dependency.jar"
value="${maven.dependency.org.jboss.microcontainer.jboss-dependency.jar.path}"/>
<property name="dependency.jboss-reflect.jar"
value="${maven.dependency.org.jboss.jboss-reflect.jar.path}"/>
<property name="dependency.jboss-common-core.jar"
value="${maven.dependency.org.jboss.jboss-common-core.jar.path}"/>
- <property name="dependency.jaxb.jar"
value="${maven.dependency.javax.xml.bind.jaxb-api.jar.path}"/>
+ <!-- <property name="dependency.jaxb.jar"
value="${maven.dependency.javax.xml.bind.jaxb-api.jar.path}"/> -->
<property name="dependency.jboss-mdr.jar"
value="${maven.dependency.org.jboss.jboss-mdr.jar.path}"/>
<property name="dependency.javassist.jar"
value="${maven.dependency.org.jboss.javassist.jar.path}"/>
<property name="dependency.resolver.jar"
value="${maven.dependency.apache-xerces.resolver.jar.path}"/>
@@ -312,8 +323,9 @@
<!-- EXO -->
<property name="dependency.exo.kernel.container"
value="${maven.dependency.org.exoplatform.kernel.exo.kernel.container.jar.path}"/>
<property name="dependency.exo.kernel.commons"
value="${maven.dependency.org.exoplatform.kernel.exo.kernel.commons.jar.path}"/>
+ <property name="dependency.exo.pc.component.common"
value="${maven.dependency.org.exoplatform.portletcontainer.exo.pc.component.common.jar.path}"/>
<property name="dependency.picocontainer"
value="${maven.dependency.picocontainer.picocontainer.jar.path}"/>
- <property name="dependency.commons.logging"
value="${maven.dependency.commons-logging.commons-logging-api.jar.path}"/>
+ <property name="dependency.commons.logging"
value="${maven.dependency.commons-logging.commons-logging.jar.path}"/>
<property name="dependency.jibx"
value="${maven.dependency.org.jibx.jibx-run.jar.path}"/>
<property name="dependency.javax.xml.stream"
value="${maven.dependency.javax.xml.stream.stax-api.jar.path}"/>
<property name="dependency.xpp3"
value="${maven.dependency.xpp3.xpp3.jar.path}"/>
Added:
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/ExoKernelIntegration.java
===================================================================
---
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/ExoKernelIntegration.java
(rev 0)
+++
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/ExoKernelIntegration.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -0,0 +1,173 @@
+/*
+ * JBoss, a division of Red Hat
+ * Copyright 2009, 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.test;
+
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
+import org.jboss.portal.portlet.PortletInvokerInterceptor;
+import org.jboss.portal.portlet.api.PortletInvoker;
+import org.jboss.portal.portlet.aspects.portlet.CCPPInterceptor;
+import org.jboss.portal.portlet.aspects.portlet.ConsumerCacheInterceptor;
+import org.jboss.portal.portlet.aspects.portlet.ContextDispatcherInterceptor;
+import org.jboss.portal.portlet.aspects.portlet.EventPayloadInterceptor;
+import org.jboss.portal.portlet.aspects.portlet.PortletCustomizationInterceptor;
+import org.jboss.portal.portlet.aspects.portlet.ProducerCacheInterceptor;
+import org.jboss.portal.portlet.aspects.portlet.RequestAttributeConversationInterceptor;
+import org.jboss.portal.portlet.aspects.portlet.SecureTransportInterceptor;
+import org.jboss.portal.portlet.aspects.portlet.ValveInterceptor;
+import org.jboss.portal.portlet.container.ContainerPortletDispatcher;
+import org.jboss.portal.portlet.container.ContainerPortletInvoker;
+import org.jboss.portal.portlet.impl.state.StateConverterV0;
+import org.jboss.portal.portlet.impl.state.StateManagementPolicyService;
+import
org.jboss.portal.portlet.impl.state.producer.PortletStatePersistenceManagerService;
+import org.jboss.portal.portlet.state.producer.PortletStatePersistenceManager;
+import org.jboss.portal.portlet.state.producer.ProducerPortletInvoker;
+import org.jboss.portal.test.framework.impl.generic.server.GenericServiceExporter;
+import org.jboss.portal.web.ServletContainer;
+import org.jboss.unit.remote.driver.RemoteTestDriverServer;
+
+import javax.servlet.http.HttpServlet;
+
+/**
+ * @author <a href="mailto:mwringe@redhat.com">Matt Wringe</a>
+ * @version $Revision$
+ */
+public class ExoKernelIntegration extends HttpServlet
+{
+
+ //protected PortletApplicationDeployer portletApplicationRegistry;
+ protected TestPortletApplicationDeployer portletApplicationRegistry;
+ protected GenericServiceExporter testDriverServerExporter;
+ private static final String LOCAL_PORTLET_INVOKER_ID = "local";
+
+ public void init()
+ {
+
+ RemoteTestDriverServer testDriverServer = new RemoteTestDriverServer();
+ testDriverServerExporter = new
GenericServiceExporter("socket://localhost:5400", testDriverServer,
"org.jboss.unit.remote.driver.RemoteTestDriver");
+
+ ExoContainer container = ExoContainerContext.getCurrentContainer();
+
+ // The producer persistence manager
+ PortletStatePersistenceManagerService producerPersistenceManager = new
PortletStatePersistenceManagerService();
+ // register the persistence manager so that it can be used by WSRP
+ container.registerComponentInstance(PortletStatePersistenceManager.class,
producerPersistenceManager);
+
+ // The producer state management policy
+ StateManagementPolicyService producerStateManagementPolicy = new
StateManagementPolicyService();
+ producerStateManagementPolicy.setPersistLocally(true);
+
+ // The producer state converter
+ StateConverterV0 producerStateConverter = new StateConverterV0();
+
+ // The portlet container invoker
+ ContainerPortletInvoker containerPortletInvoker = new ContainerPortletInvoker();
+ // continued below
+
+
+ // The portlet application deployer
+ portletApplicationRegistry = new TestPortletApplicationDeployer();//new
PortletApplicationDeployer();
+ portletApplicationRegistry.setContainerPortletInvoker(containerPortletInvoker);
+ portletApplicationRegistry.setDriver(testDriverServer);
+
+ //Container Stack
+ ContainerPortletDispatcher portletContainerDispatcher = new
ContainerPortletDispatcher();
+ EventPayloadInterceptor eventPayloadInterceptor = new EventPayloadInterceptor();
+ eventPayloadInterceptor.setNext(portletContainerDispatcher);
+ RequestAttributeConversationInterceptor requestAttributeConversationInterceptor =
new RequestAttributeConversationInterceptor();
+ requestAttributeConversationInterceptor.setNext(eventPayloadInterceptor);
+ CCPPInterceptor ccppInterceptor = new CCPPInterceptor();
+ ccppInterceptor.setNext(requestAttributeConversationInterceptor);
+ ProducerCacheInterceptor producerCacheInterceptor = new
ProducerCacheInterceptor();
+ producerCacheInterceptor.setNext(ccppInterceptor);
+ ContextDispatcherInterceptor contextDispatcherInterceptor = new
ContextDispatcherInterceptor();
+ contextDispatcherInterceptor.setNext(producerCacheInterceptor);
+ SecureTransportInterceptor secureTransportInterceptor = new
SecureTransportInterceptor();
+ secureTransportInterceptor.setNext(contextDispatcherInterceptor);
+ ValveInterceptor valveInterceptor = new ValveInterceptor();
+ valveInterceptor.setPortletApplicationRegistry(portletApplicationRegistry);
+ valveInterceptor.setNext(secureTransportInterceptor);
+
+ // inject ServletContainer in objects that need it
+ ServletContainer servletContainer =
(ServletContainer)container.getComponentInstance(ServletContainer.class);
+ portletApplicationRegistry.setServletContainer(servletContainer);
+ contextDispatcherInterceptor.setServletContainer(servletContainer);
+
+ // The portlet container invoker continued
+ containerPortletInvoker.setNext(valveInterceptor);
+
+ // The producer portlet invoker
+ ProducerPortletInvoker producerPortletInvoker = new ProducerPortletInvoker();
+ producerPortletInvoker.setNext(containerPortletInvoker);
+ producerPortletInvoker.setPersistenceManager(producerPersistenceManager);
+ producerPortletInvoker.setStateManagementPolicy(producerStateManagementPolicy);
+ producerPortletInvoker.setStateConverter(producerStateConverter);
+
+ // register producer portlet invoker so that WSRP can use it
+ container.registerComponentInstance(ProducerPortletInvoker.class,
producerPortletInvoker);
+
+ // The consumer portlet invoker
+ PortletCustomizationInterceptor portletCustomizationInterceptor = new
PortletCustomizationInterceptor();
+ portletCustomizationInterceptor.setNext(producerPortletInvoker);
+ ConsumerCacheInterceptor consumerCacheInterceptor = new
ConsumerCacheInterceptor();
+ consumerCacheInterceptor.setNext(portletCustomizationInterceptor);
+ PortletInvokerInterceptor consumerPortletInvoker = new
PortletInvokerInterceptor();
+ consumerPortletInvoker.setNext(consumerCacheInterceptor);
+
+ //container.registerComponentInstance(PortletInvoker.class,
consumerPortletInvoker);
+
+ // Federating portlet invoker
+ //FederatingPortletInvoker federatingPortletInvoker = new
FederatingPortletInvokerService();
+
+ // register local portlet invoker with federating portlet invoker
+ //federatingPortletInvoker.registerInvoker(LOCAL_PORTLET_INVOKER_ID,
containerPortletInvoker);//containerPortletInvoker);
+
+ /* register with container */
+ container.registerComponentInstance(PortletInvoker.class, consumerPortletInvoker);
//federatingPortletInvoker);
+
+ portletApplicationRegistry.start();
+
+ try
+ {
+ testDriverServerExporter.start();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+
+ public void destroy()
+ {
+ if (portletApplicationRegistry != null)
+ {
+ portletApplicationRegistry.stop();
+ }
+ if (testDriverServerExporter != null)
+ {
+ testDriverServerExporter.stop();
+ }
+ }
+}
+
Modified:
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletControllerContextImpl.java
===================================================================
---
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletControllerContextImpl.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletControllerContextImpl.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -23,6 +23,8 @@
package org.jboss.portal.portlet.test.controller;
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
import org.jboss.portal.portlet.api.Portlet;
import org.jboss.portal.portlet.api.PortletContext;
import org.jboss.portal.portlet.api.PortletInvoker;
@@ -71,7 +73,12 @@
super(req, resp);
//
- this.portletInvoker =
(PortletInvoker)servletContext.getAttribute(WebBootstrap.BEAN_PREFIX +
"ConsumerPortletInvoker");
+ //this.portletInvoker =
(PortletInvoker)servletContext.getAttribute(WebBootstrap.BEAN_PREFIX +
"ConsumerPortletInvoker");
+
+ ExoContainer exoContainer = ExoContainerContext.getCurrentContainer();
+ this.portletInvoker =
(PortletInvoker)exoContainer.getComponentInstance(PortletInvoker.class);
+
+
this.eventControllerContext = new EventControllerContextImpl(portletInvoker);
this.stateControllerContext = new StateControllerContextImpl(this);
this.serialization = new
PortletPageNavigationalStateSerialization(stateControllerContext);
Modified:
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPortletControllerContext.java
===================================================================
---
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPortletControllerContext.java 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/tck/TCKPortletControllerContext.java 2009-08-18
03:49:09 UTC (rev 13774)
@@ -22,6 +22,8 @@
******************************************************************************/
package org.jboss.portal.portlet.test.tck;
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
import org.jboss.portal.portlet.controller.impl.AbstractPortletControllerContext;
import org.jboss.portal.portlet.api.Portlet;
import org.jboss.portal.portlet.api.PortletInvokerException;
@@ -71,7 +73,11 @@
super(req, resp);
//
- this.portletInvoker =
(PortletInvoker)servletContext.getAttribute(WebBootstrap.BEAN_PREFIX +
"ConsumerPortletInvoker");
+ //this.portletInvoker =
(PortletInvoker)servletContext.getAttribute(WebBootstrap.BEAN_PREFIX +
"ConsumerPortletInvoker");
+ ExoContainer exoContainer = ExoContainerContext.getCurrentContainer();
+ this.portletInvoker =
(PortletInvoker)exoContainer.getComponentInstance(PortletInvoker.class);
+
+
this.stateControllerContext = new TCKStateControllerContext(new
StateControllerContextImpl(this));
this.eventControllerContext = new EventControllerContextImpl(portletInvoker);
this.serialization = new
TCKPageNavigationalStateSerialization(stateControllerContext);
Modified: jbossexo/modules/portlet/trunk/test/src/test/build.xml
===================================================================
--- jbossexo/modules/portlet/trunk/test/src/test/build.xml 2009-08-17 20:06:05 UTC (rev
13773)
+++ jbossexo/modules/portlet/trunk/test/src/test/build.xml 2009-08-18 03:49:09 UTC (rev
13774)
@@ -100,6 +100,7 @@
<pathelement path="${dependency.jibx}"/>
<pathelement path="${dependency.javax.xml.stream}"/>
<pathelement path="${dependency.xpp3}"/>
+ <pathelement path="${dependency.exo.pc.component.common}"/>
</path>
<path id="jboss-unit">
Modified:
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-portal-beans.xml
===================================================================
---
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-portal-beans.xml 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/jboss-portal-beans.xml 2009-08-18
03:49:09 UTC (rev 13774)
@@ -22,7 +22,7 @@
~ 02110-1301 USA, or see the FSF site:
http://www.fsf.org. ~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<deployment xmlns="urn:jboss:bean-deployer:2.0">
-
+<!--
<bean name="TestDriverServer"
class="org.jboss.unit.remote.driver.RemoteTestDriverServer"/>
<bean name="TestDriverServerExporter"
@@ -40,32 +40,32 @@
<property name="driver"><inject
bean="TestDriverServer"/></property>
<property name="containerPortletInvoker"><inject
bean="ContainerPortletInvoker"/></property>
</bean>
-
+-->
<!-- The ServletContainerFactory -->
- <bean name="ServletContainerFactory"
class="org.jboss.portal.web.impl.DefaultServletContainerFactory">
+<!-- <bean name="ServletContainerFactory"
class="org.jboss.portal.web.impl.DefaultServletContainerFactory">
<constructor
factoryClass="org.jboss.portal.web.impl.DefaultServletContainerFactory"
factoryMethod="getInstance"/>
</bean>
-
+-->
<!-- The servlet container obtained from the ServletContainerFactory -->
- <bean name="ServletContainer"
class="org.jboss.portal.web.ServletContainer">
+<!-- <bean name="ServletContainer"
class="org.jboss.portal.web.ServletContainer">
<constructor factoryMethod="getServletContainer">
<factory bean="ServletContainerFactory"/>
</constructor>
</bean>
-
+-->
<!-- The producer persistence manager -->
- <bean name="ProducerPersistenceManager"
class="org.jboss.portal.portlet.impl.state.producer.PortletStatePersistenceManagerService"/>
-
+<!-- <bean name="ProducerPersistenceManager"
class="org.jboss.portal.portlet.impl.state.producer.PortletStatePersistenceManagerService"/>
+-->
<!-- The producer state management policy -->
- <bean name="ProducerStateManagementPolicy"
class="org.jboss.portal.portlet.impl.state.StateManagementPolicyService">
+<!-- <bean name="ProducerStateManagementPolicy"
class="org.jboss.portal.portlet.impl.state.StateManagementPolicyService">
<property
name="persistLocally"><value>true</value></property>
</bean>
-
+-->
<!-- The producer state converter -->
- <bean name="ProducerStateConverter"
class="org.jboss.portal.portlet.impl.state.StateConverterV0"/>
-
+<!-- <bean name="ProducerStateConverter"
class="org.jboss.portal.portlet.impl.state.StateConverterV0"/>
+-->
<!-- The consumer portlet invoker -->
- <bean name="ConsumerPortletInvoker"
class="org.jboss.portal.portlet.PortletInvokerInterceptor">
+<!-- <bean name="ConsumerPortletInvoker"
class="org.jboss.portal.portlet.PortletInvokerInterceptor">
<property name="next"><inject
bean="ConsumerCacheInterceptor"/></property>
</bean>
<bean name="ConsumerCacheInterceptor"
class="org.jboss.portal.portlet.aspects.portlet.ConsumerCacheInterceptor">
@@ -74,22 +74,22 @@
<bean name="PortletCustomizationInterceptor"
class="org.jboss.portal.portlet.aspects.portlet.PortletCustomizationInterceptor">
<property name="next"><inject
bean="ProducerPortletInvoker"/></property>
</bean>
-
+-->
<!-- The producer portlet invoker -->
- <bean name="ProducerPortletInvoker"
class="org.jboss.portal.portlet.state.producer.ProducerPortletInvoker">
+<!-- <bean name="ProducerPortletInvoker"
class="org.jboss.portal.portlet.state.producer.ProducerPortletInvoker">
<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>
</bean>
-
+-->
<!-- The portlet container invoker -->
- <bean name="ContainerPortletInvoker"
class="org.jboss.portal.portlet.container.ContainerPortletInvoker">
+<!-- <bean name="ContainerPortletInvoker"
class="org.jboss.portal.portlet.container.ContainerPortletInvoker">
<property name="next"><inject
bean="ValveInterceptor"/></property>
</bean>
-
+-->
<!-- Container stack -->
- <bean name="ValveInterceptor"
class="org.jboss.portal.portlet.aspects.portlet.ValveInterceptor">
+<!-- <bean name="ValveInterceptor"
class="org.jboss.portal.portlet.aspects.portlet.ValveInterceptor">
<property name="portletApplicationRegistry"><inject
bean="PortletApplicationRegistry"
state="Instantiated"/></property>
<property name="next"><inject
bean="SecureTransportInterceptor"/></property>
</bean>
@@ -114,5 +114,5 @@
</bean>
<bean name="PortletContainerDispatcher"
class="org.jboss.portal.portlet.container.ContainerPortletDispatcher">
</bean>
-
+-->
</deployment>
Modified:
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/web.xml
===================================================================
---
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/web.xml 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-tck-war/WEB-INF/web.xml 2009-08-18
03:49:09 UTC (rev 13774)
@@ -34,9 +34,14 @@
<listener-class>org.jboss.portal.common.mc.bootstrap.WebBootstrap</listener-class>
</listener>
<servlet>
+ <servlet-name>exoint</servlet-name>
+
<servlet-class>org.jboss.portal.portlet.test.ExoKernelIntegration</servlet-class>
+ <load-on-startup>0</load-on-startup>
+ </servlet>
+ <servlet>
<servlet-name>ContainerServlet</servlet-name>
<servlet-class>org.jboss.portal.web.impl.tomcat.TC6ContainerServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
+ <load-on-startup>0</load-on-startup>
</servlet>
<servlet>
<servlet-name>PortalServlet</servlet-name>
Modified:
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-portal-beans.xml
===================================================================
---
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-portal-beans.xml 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-portal-beans.xml 2009-08-18
03:49:09 UTC (rev 13774)
@@ -22,7 +22,7 @@
~ 02110-1301 USA, or see the FSF site:
http://www.fsf.org. ~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<deployment xmlns="urn:jboss:bean-deployer:2.0">
-
+<!--
<bean name="TestDriverServer"
class="org.jboss.unit.remote.driver.RemoteTestDriverServer"/>
<bean name="TestDriverServerExporter"
@@ -33,39 +33,39 @@
<parameter>org.jboss.unit.remote.driver.RemoteTestDriver</parameter>
</constructor>
</bean>
-
- <bean name="PortletApplicationDeployer"
class="org.jboss.portal.portlet.test.TestPortletApplicationDeployer">
+-->
+<!-- <bean name="PortletApplicationDeployer"
class="org.jboss.portal.portlet.test.TestPortletApplicationDeployer">
<alias>PortletApplicationRegistry</alias>
<property name="servletContainer"><inject
bean="ServletContainer"/></property>
<property name="driver"><inject
bean="TestDriverServer"/></property>
<property name="containerPortletInvoker"><inject
bean="ContainerPortletInvoker"/></property>
</bean>
-
+-->
<!-- The ServletContainerFactory -->
- <bean name="ServletContainerFactory"
class="org.jboss.portal.web.impl.DefaultServletContainerFactory">
+<!-- <bean name="ServletContainerFactory"
class="org.jboss.portal.web.impl.DefaultServletContainerFactory">
<constructor
factoryClass="org.jboss.portal.web.impl.DefaultServletContainerFactory"
factoryMethod="getInstance"/>
</bean>
-
+-->
<!-- The servlet container obtained from the ServletContainerFactory -->
- <bean name="ServletContainer"
class="org.jboss.portal.web.ServletContainer">
+<!-- <bean name="ServletContainer"
class="org.jboss.portal.web.ServletContainer">
<constructor factoryMethod="getServletContainer">
<factory bean="ServletContainerFactory"/>
</constructor>
</bean>
-
+-->
<!-- The producer persistence manager -->
- <bean name="ProducerPersistenceManager"
class="org.jboss.portal.portlet.impl.state.producer.PortletStatePersistenceManagerService"/>
-
+<!-- <bean name="ProducerPersistenceManager"
class="org.jboss.portal.portlet.impl.state.producer.PortletStatePersistenceManagerService"/>
+-->
<!-- The producer state management policy -->
- <bean name="ProducerStateManagementPolicy"
class="org.jboss.portal.portlet.impl.state.StateManagementPolicyService">
+<!-- <bean name="ProducerStateManagementPolicy"
class="org.jboss.portal.portlet.impl.state.StateManagementPolicyService">
<property
name="persistLocally"><value>true</value></property>
</bean>
-
+-->
<!-- The producer state converter -->
- <bean name="ProducerStateConverter"
class="org.jboss.portal.portlet.impl.state.StateConverterV0"/>
-
+<!-- <bean name="ProducerStateConverter"
class="org.jboss.portal.portlet.impl.state.StateConverterV0"/>
+-->
<!-- The consumer portlet invoker -->
- <bean name="ConsumerPortletInvoker"
class="org.jboss.portal.portlet.PortletInvokerInterceptor">
+<!-- <bean name="ConsumerPortletInvoker"
class="org.jboss.portal.portlet.PortletInvokerInterceptor">
<property name="next"><inject
bean="ConsumerCacheInterceptor"/></property>
</bean>
<bean name="ConsumerCacheInterceptor"
class="org.jboss.portal.portlet.aspects.portlet.ConsumerCacheInterceptor">
@@ -74,22 +74,22 @@
<bean name="PortletCustomizationInterceptor"
class="org.jboss.portal.portlet.aspects.portlet.PortletCustomizationInterceptor">
<property name="next"><inject
bean="ProducerPortletInvoker"/></property>
</bean>
-
+-->
<!-- The producer portlet invoker -->
- <bean name="ProducerPortletInvoker"
class="org.jboss.portal.portlet.state.producer.ProducerPortletInvoker">
+<!-- <bean name="ProducerPortletInvoker"
class="org.jboss.portal.portlet.state.producer.ProducerPortletInvoker">
<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>
</bean>
-
+-->
<!-- The portlet container invoker -->
- <bean name="ContainerPortletInvoker"
class="org.jboss.portal.portlet.container.ContainerPortletInvoker">
+<!-- <bean name="ContainerPortletInvoker"
class="org.jboss.portal.portlet.container.ContainerPortletInvoker">
<property name="next"><inject
bean="ValveInterceptor"/></property>
</bean>
-
+-->
<!-- Container stack -->
- <bean name="ValveInterceptor"
class="org.jboss.portal.portlet.aspects.portlet.ValveInterceptor">
+<!-- <bean name="ValveInterceptor"
class="org.jboss.portal.portlet.aspects.portlet.ValveInterceptor">
<property name="portletApplicationRegistry"><inject
bean="PortletApplicationRegistry"
state="Instantiated"/></property>
<property name="next"><inject
bean="SecureTransportInterceptor"/></property>
</bean>
@@ -114,5 +114,5 @@
</bean>
<bean name="PortletContainerDispatcher"
class="org.jboss.portal.portlet.container.ContainerPortletDispatcher">
</bean>
-
+-->
</deployment>
Modified:
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/web.xml
===================================================================
---
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/web.xml 2009-08-17
20:06:05 UTC (rev 13773)
+++
jbossexo/modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/web.xml 2009-08-18
03:49:09 UTC (rev 13774)
@@ -34,9 +34,14 @@
<listener-class>org.jboss.portal.common.mc.bootstrap.WebBootstrap</listener-class>
</listener>
<servlet>
+ <servlet-name>exoint</servlet-name>
+
<servlet-class>org.jboss.portal.portlet.test.ExoKernelIntegration</servlet-class>
+ <load-on-startup>0</load-on-startup>
+ </servlet>
+ <servlet>
<servlet-name>ContainerServlet</servlet-name>
<servlet-class>org.jboss.portal.web.impl.tomcat.TC6ContainerServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
+ <load-on-startup>0</load-on-startup>
</servlet>
<servlet>
<servlet-name>PortalServlet</servlet-name>