Author: julien(a)jboss.com
Date: 2008-02-28 08:41:58 -0500 (Thu, 28 Feb 2008)
New Revision: 10155
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AbstractPropertyContext.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AccessMode.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java
Log:
make AccessMode an enum type
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AbstractPropertyContext.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AbstractPropertyContext.java 2008-02-28
12:34:47 UTC (rev 10154)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AbstractPropertyContext.java 2008-02-28
13:41:58 UTC (rev 10155)
@@ -98,9 +98,8 @@
}
//
- for (int i = 0; i < changes.length; i++)
+ for (PropertyChange change : changes)
{
- PropertyChange change = changes[i];
prefs.setProperty(change.getKey(), change.getValue());
}
status = UPDATE_SUCCESSFUL;
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AccessMode.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AccessMode.java 2008-02-28
12:34:47 UTC (rev 10154)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AccessMode.java 2008-02-28
13:41:58 UTC (rev 10155)
@@ -28,17 +28,17 @@
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 5776 $
*/
-public class AccessMode
+public enum AccessMode
{
/** Read only access mode. */
- public static final AccessMode READ_ONLY = new AccessMode("READ_ONLY");
+ READ_ONLY("READ_ONLY"),
/** Read write access mode. */
- public static final AccessMode READ_WRITE = new AccessMode("READ_WRITE");
+ READ_WRITE("READ_WRITE"),
/** Clone before write access mode. */
- public static final AccessMode CLONE_BEFORE_WRITE = new
AccessMode("CLONE_BEFORE_WRITE");
+ CLONE_BEFORE_WRITE("CLONE_BEFORE_WRITE");
/** The type as a string. */
private final String name;
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java 2008-02-28
12:34:47 UTC (rev 10154)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/producer/ProducerPortletInvoker.java 2008-02-28
13:41:58 UTC (rev 10155)
@@ -253,29 +253,84 @@
PropertyMap newPrefs = prefs.getPrefs();
//
- if (access == AccessMode.CLONE_BEFORE_WRITE)
+ switch(access)
{
- boolean persist = stateManagementPolicy.persistLocally();
+ case CLONE_BEFORE_WRITE:
+ {
+ boolean persist = stateManagementPolicy.persistLocally();
- // Create the state
- if (context.isStateful())
- {
- StatefulContext statefulContext = (StatefulContext)context;
- if (persist)
+ // Create the state
+ if (context.isStateful())
{
- try
+ StatefulContext statefulContext = (StatefulContext)context;
+ if (persist)
{
- // The state id should be ok as it was used before to load the
state
- LocalContext localContext = (LocalContext)statefulContext;
- String portletStateId = localContext.getStateId();
- String cloneStateId = persistenceManager.cloneState(portletStateId,
newPrefs);
+ try
+ {
+ // The state id should be ok as it was used before to load the
state
+ LocalContext localContext = (LocalContext)statefulContext;
+ String portletStateId = localContext.getStateId();
+ String cloneStateId =
persistenceManager.cloneState(portletStateId, newPrefs);
+ // Return the clone context
+ String cloneId = PRODUCER_CLONE_ID_PREFIX + cloneStateId;
+ PortletContext clonedCtx =
PortletContext.createPortletContext(cloneId);
+ StateEvent event = new StateEvent(clonedCtx,
StateEvent.Type.PORTLET_CLONED_EVENT);
+ instanceCtx.onStateEvent(event);
+ }
+ catch (NoSuchStateException e)
+ {
+ throw new PortletInvokerException("Unexpected
exception", e);
+ }
+ catch (InvalidStateIdException e)
+ {
+ throw new PortletInvokerException("Unexpected
exception", e);
+ }
+ }
+ else
+ {
+ PortletContext clonedCtx = marshall(context.getPortletId(),
newPrefs);
+ StateEvent event = new StateEvent(clonedCtx,
StateEvent.Type.PORTLET_CLONED_EVENT);
+ instanceCtx.onStateEvent(event);
+ }
+ }
+ else
+ {
+ // Add the missing mutable portlet state
+ getPropertiesFromMetaData(portlet.getContext(), newPrefs);
+
+ //
+ if (persist)
+ {
+ // Create the new state
+ String cloneStateId =
persistenceManager.createState(context.getPortletId(), newPrefs);
+
// Return the clone context
String cloneId = PRODUCER_CLONE_ID_PREFIX + cloneStateId;
PortletContext clonedCtx =
PortletContext.createPortletContext(cloneId);
StateEvent event = new StateEvent(clonedCtx,
StateEvent.Type.PORTLET_CLONED_EVENT);
instanceCtx.onStateEvent(event);
}
+ else
+ {
+ PortletContext clonedCtx = marshall(context.getPortletId(),
newPrefs);
+ StateEvent event = new StateEvent(clonedCtx,
StateEvent.Type.PORTLET_CLONED_EVENT);
+ instanceCtx.onStateEvent(event);
+ }
+ }
+ }
+ case READ_WRITE:
+ {
+ StatefulContext statefulContext = (StatefulContext)context;
+ if (statefulContext.isLocal())
+ {
+ // Update the state
+ try
+ {
+ LocalContext localContext = (LocalContext)statefulContext;
+ String stateId = localContext.getStateId();
+ persistenceManager.updateState(stateId, newPrefs);
+ }
catch (NoSuchStateException e)
{
throw new PortletInvokerException("Unexpected exception",
e);
@@ -287,69 +342,17 @@
}
else
{
- PortletContext clonedCtx = marshall(context.getPortletId(), newPrefs);
- StateEvent event = new StateEvent(clonedCtx,
StateEvent.Type.PORTLET_CLONED_EVENT);
+ PortletContext modifiedCtx = marshall(context.getPortletId(),
newPrefs);
+ StateEvent event = new StateEvent(modifiedCtx,
StateEvent.Type.PORTLET_MODIFIED_EVENT);
instanceCtx.onStateEvent(event);
}
}
- else
+ case READ_ONLY:
{
- // Add the missing mutable portlet state
- getPropertiesFromMetaData(portlet.getContext(), newPrefs);
-
- //
- if (persist)
- {
- // Create the new state
- String cloneStateId =
persistenceManager.createState(context.getPortletId(), newPrefs);
-
- // Return the clone context
- String cloneId = PRODUCER_CLONE_ID_PREFIX + cloneStateId;
- PortletContext clonedCtx =
PortletContext.createPortletContext(cloneId);
- StateEvent event = new StateEvent(clonedCtx,
StateEvent.Type.PORTLET_CLONED_EVENT);
- instanceCtx.onStateEvent(event);
- }
- else
- {
- PortletContext clonedCtx = marshall(context.getPortletId(), newPrefs);
- StateEvent event = new StateEvent(clonedCtx,
StateEvent.Type.PORTLET_CLONED_EVENT);
- instanceCtx.onStateEvent(event);
- }
+ throw new PortletStateChangeRequiredException("Modification was
requested for portlet with id '"
+ + context.getPortletId() + "' but access mode was READ
ONLY.");
}
}
- else if (access == AccessMode.READ_WRITE)
- {
- StatefulContext statefulContext = (StatefulContext)context;
- if (statefulContext.isLocal())
- {
- // Update the state
- try
- {
- LocalContext localContext = (LocalContext)statefulContext;
- String stateId = localContext.getStateId();
- persistenceManager.updateState(stateId, newPrefs);
- }
- catch (NoSuchStateException e)
- {
- throw new PortletInvokerException("Unexpected exception",
e);
- }
- catch (InvalidStateIdException e)
- {
- throw new PortletInvokerException("Unexpected exception",
e);
- }
- }
- else
- {
- PortletContext modifiedCtx = marshall(context.getPortletId(), newPrefs);
- StateEvent event = new StateEvent(modifiedCtx,
StateEvent.Type.PORTLET_MODIFIED_EVENT);
- instanceCtx.onStateEvent(event);
- }
- }
- else if (access == AccessMode.READ_ONLY)
- {
- throw new PortletStateChangeRequiredException("Modification was
requested for portlet with id '"
- + context.getPortletId() + "' but access mode was READ
ONLY.");
- }
}
//
Show replies by date