Author: julien_viet
Date: 2011-01-15 09:52:32 -0500 (Sat, 15 Jan 2011)
New Revision: 5758
Added:
components/pc/trunk/api/src/main/java/org/gatein/pc/api/PortletStatus.java
Modified:
components/pc/trunk/api/src/main/java/org/gatein/pc/api/PortletInvoker.java
components/pc/trunk/federation/src/main/java/org/gatein/pc/federation/impl/FederatedPortletInvokerService.java
components/pc/trunk/federation/src/main/java/org/gatein/pc/federation/impl/FederatingPortletInvokerService.java
components/pc/trunk/federation/src/test/java/org/gatein/pc/federation/FederatingPortletInvokerTestCase.java
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/PortletInvokerInterceptor.java
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/container/ContainerPortletInvoker.java
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/state/producer/ProducerPortletInvoker.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/support/PortletInvokerSupport.java
Log:
GTNPC-49 : Add methods on PortletInvoker to determine the relationship between a portlet
and an invoker
Modified: components/pc/trunk/api/src/main/java/org/gatein/pc/api/PortletInvoker.java
===================================================================
--- components/pc/trunk/api/src/main/java/org/gatein/pc/api/PortletInvoker.java 2011-01-15
01:21:08 UTC (rev 5757)
+++ components/pc/trunk/api/src/main/java/org/gatein/pc/api/PortletInvoker.java 2011-01-15
14:52:32 UTC (rev 5758)
@@ -62,6 +62,17 @@
Portlet getPortlet(PortletContext portletContext) throws IllegalArgumentException,
PortletInvokerException;
/**
+ * Returns the status of a specified {@code #PortletContext} or null if the portlet
context does not have
+ * a relationship with this portlet invoker.
+ *
+ * @param portletContext the portlet context
+ * @return
+ * @throws IllegalArgumentException
+ * @throws PortletInvokerException
+ */
+ PortletStatus getStatus(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException;
+
+ /**
* Determines whether the specified PortletContext is part of the set of exposed
Portlets as returned by {@link
* #getPortlets()}.
*
Added: components/pc/trunk/api/src/main/java/org/gatein/pc/api/PortletStatus.java
===================================================================
--- components/pc/trunk/api/src/main/java/org/gatein/pc/api/PortletStatus.java
(rev 0)
+++ components/pc/trunk/api/src/main/java/org/gatein/pc/api/PortletStatus.java 2011-01-15
14:52:32 UTC (rev 5758)
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2010 eXo Platform SAS.
+ *
+ * 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.gatein.pc.api;
+
+/**
+ * The status of the relationship of a portlet with an invoker.
+ *
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
+ * @version $Revision$
+ */
+public enum PortletStatus
+{
+
+ /**
+ * A portlet is managed by the PortletInvoker when the invoker is able to perform any
operation on it.
+ */
+ MANAGED,
+
+ /**
+ * A portlet part of the set of exposed portlets as returned by {@link
PortletInvoker#getPortlets()}.
+ */
+ OFFERED
+
+}
Modified:
components/pc/trunk/federation/src/main/java/org/gatein/pc/federation/impl/FederatedPortletInvokerService.java
===================================================================
---
components/pc/trunk/federation/src/main/java/org/gatein/pc/federation/impl/FederatedPortletInvokerService.java 2011-01-15
01:21:08 UTC (rev 5757)
+++
components/pc/trunk/federation/src/main/java/org/gatein/pc/federation/impl/FederatedPortletInvokerService.java 2011-01-15
14:52:32 UTC (rev 5758)
@@ -27,6 +27,7 @@
import org.gatein.pc.api.PortletInvoker;
import org.gatein.pc.api.PortletInvokerException;
import org.gatein.pc.api.PortletStateType;
+import org.gatein.pc.api.PortletStatus;
import org.gatein.pc.api.StateEvent;
import org.gatein.pc.api.invocation.InvocationException;
import org.gatein.pc.api.invocation.PortletInvocation;
@@ -107,16 +108,20 @@
return new FederatedPortlet(this, compoundPortletContext, portlet);
}
- public boolean isExposed(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
+ public PortletStatus getStatus(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
{
PortletContext context = dereference(portletContext);
- return portletInvoker.isExposed(context);
+ return portletInvoker.getStatus(context);
}
+ public boolean isExposed(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
+ {
+ return getStatus(portletContext) == PortletStatus.OFFERED;
+ }
+
public boolean isKnown(PortletContext portletContext) throws IllegalArgumentException,
PortletInvokerException
{
- PortletContext context = dereference(portletContext);
- return portletInvoker.isKnown(context);
+ return getStatus(portletContext) != null;
}
private class FederatedInstanceContext implements InstanceContext
Modified:
components/pc/trunk/federation/src/main/java/org/gatein/pc/federation/impl/FederatingPortletInvokerService.java
===================================================================
---
components/pc/trunk/federation/src/main/java/org/gatein/pc/federation/impl/FederatingPortletInvokerService.java 2011-01-15
01:21:08 UTC (rev 5757)
+++
components/pc/trunk/federation/src/main/java/org/gatein/pc/federation/impl/FederatingPortletInvokerService.java 2011-01-15
14:52:32 UTC (rev 5758)
@@ -31,6 +31,7 @@
import org.gatein.pc.api.PortletInvoker;
import org.gatein.pc.api.PortletInvokerException;
import org.gatein.pc.api.PortletStateType;
+import org.gatein.pc.api.PortletStatus;
import org.gatein.pc.api.StatefulPortletContext;
import org.gatein.pc.api.invocation.PortletInvocation;
import org.gatein.pc.api.invocation.response.PortletInvocationResponse;
@@ -204,16 +205,20 @@
return federated.getPortlet(compoundPortletContext);
}
- public boolean isExposed(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
+ public PortletStatus getStatus(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
{
PortletInvoker federated = getFederatedPortletInvokerFor(portletContext);
- return federated.isExposed(portletContext);
+ return federated.getStatus(portletContext);
}
+ public boolean isExposed(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
+ {
+ return getStatus(portletContext) == PortletStatus.OFFERED;
+ }
+
public boolean isKnown(PortletContext portletContext) throws IllegalArgumentException,
PortletInvokerException
{
- PortletInvoker federated = getFederatedPortletInvokerFor(portletContext);
- return federated.isKnown(portletContext);
+ return getStatus(portletContext) != null;
}
public PortletInvocationResponse invoke(PortletInvocation invocation) throws
PortletInvokerException
Modified:
components/pc/trunk/federation/src/test/java/org/gatein/pc/federation/FederatingPortletInvokerTestCase.java
===================================================================
---
components/pc/trunk/federation/src/test/java/org/gatein/pc/federation/FederatingPortletInvokerTestCase.java 2011-01-15
01:21:08 UTC (rev 5757)
+++
components/pc/trunk/federation/src/test/java/org/gatein/pc/federation/FederatingPortletInvokerTestCase.java 2011-01-15
14:52:32 UTC (rev 5758)
@@ -28,6 +28,7 @@
import org.gatein.pc.api.PortletContext;
import org.gatein.pc.api.PortletInvoker;
import org.gatein.pc.api.PortletInvokerException;
+import org.gatein.pc.api.PortletStatus;
import org.gatein.pc.api.info.MetaInfo;
import org.gatein.pc.api.info.PortletInfo;
import org.gatein.pc.federation.impl.FederatingPortletInvokerService;
@@ -116,26 +117,16 @@
}
@Test
- public void testIsExposed() throws PortletInvokerException
+ public void testGetStatus() throws PortletInvokerException
{
-
assertTrue(federatingInvoker.isExposed(PortletContext.createPortletContext("foo.MyPortlet")));
-
assertTrue(federatingInvoker.isExposed(PortletContext.createPortletContext(PortletInvoker.LOCAL_PORTLET_INVOKER_ID
+ ".MyLocalPortlet")));
+ assertEquals(PortletStatus.OFFERED,
federatingInvoker.getStatus(PortletContext.createPortletContext("foo.MyPortlet")));
+ assertEquals(PortletStatus.OFFERED,
federatingInvoker.getStatus(PortletContext.createPortletContext(PortletInvoker.LOCAL_PORTLET_INVOKER_ID
+ ".MyLocalPortlet")));
-
assertTrue(federatedInvoker.isExposed(PortletContext.createPortletContext("foo.MyPortlet")));
-
assertTrue(localInvoker.isExposed(PortletContext.createPortletContext(PortletInvoker.LOCAL_PORTLET_INVOKER_ID
+ ".MyLocalPortlet")));
+ assertEquals(PortletStatus.OFFERED,
federatedInvoker.getStatus(PortletContext.createPortletContext("foo.MyPortlet")));
+ assertEquals(PortletStatus.OFFERED,
localInvoker.getStatus(PortletContext.createPortletContext(PortletInvoker.LOCAL_PORTLET_INVOKER_ID
+ ".MyLocalPortlet")));
}
@Test
- public void testIsKnown() throws PortletInvokerException
- {
-
assertTrue(federatingInvoker.isKnown(PortletContext.createPortletContext("foo.MyPortlet")));
-
assertTrue(federatingInvoker.isKnown(PortletContext.createPortletContext(PortletInvoker.LOCAL_PORTLET_INVOKER_ID
+ ".MyLocalPortlet")));
-
-
assertTrue(federatedInvoker.isKnown(PortletContext.createPortletContext("foo.MyPortlet")));
-
assertTrue(localInvoker.isKnown(PortletContext.createPortletContext(PortletInvoker.LOCAL_PORTLET_INVOKER_ID
+ ".MyLocalPortlet")));
- }
-
- @Test
public void testFederation() throws PortletInvokerException
{
Collection federateds = federatingInvoker.getFederatedInvokers();
Modified:
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/PortletInvokerInterceptor.java
===================================================================
---
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/PortletInvokerInterceptor.java 2011-01-15
01:21:08 UTC (rev 5757)
+++
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/PortletInvokerInterceptor.java 2011-01-15
14:52:32 UTC (rev 5758)
@@ -27,6 +27,7 @@
import org.gatein.pc.api.PortletInvoker;
import org.gatein.pc.api.PortletInvokerException;
import org.gatein.pc.api.PortletStateType;
+import org.gatein.pc.api.PortletStatus;
import org.gatein.pc.api.invocation.PortletInvocation;
import org.gatein.pc.api.invocation.response.PortletInvocationResponse;
import org.gatein.pc.api.state.DestroyCloneFailure;
@@ -82,6 +83,11 @@
return safeGetNext().getPortlet(portletContext);
}
+ public PortletStatus getStatus(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
+ {
+ return safeGetNext().getStatus(portletContext);
+ }
+
public boolean isExposed(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
{
return safeGetNext().isExposed(portletContext);
Modified:
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/container/ContainerPortletInvoker.java
===================================================================
---
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/container/ContainerPortletInvoker.java 2011-01-15
01:21:08 UTC (rev 5757)
+++
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/container/ContainerPortletInvoker.java 2011-01-15
14:52:32 UTC (rev 5758)
@@ -28,6 +28,7 @@
import org.gatein.pc.api.PortletContext;
import org.gatein.pc.api.PortletInvokerException;
import org.gatein.pc.api.PortletStateType;
+import org.gatein.pc.api.PortletStatus;
import org.gatein.pc.api.info.PortletInfo;
import org.gatein.pc.api.invocation.InvocationException;
import org.gatein.pc.api.invocation.PortletInvocation;
@@ -87,17 +88,27 @@
return new HashSet<Portlet>(portlets.values());
}
- @Override
+ public PortletStatus getStatus(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
+ {
+ if (portletContext == null)
+ {
+ throw new IllegalArgumentException("The portlet context cannot be
null");
+ }
+ if (portlets.containsKey(portletContext.getId()))
+ {
+ return PortletStatus.OFFERED;
+ }
+ return null;
+ }
+
public boolean isExposed(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
{
- ParameterValidation.throwIllegalArgExceptionIfNull(portletContext,
"PortletContext");
- return portlets.containsKey(portletContext.getId());
+ return getStatus(portletContext) == PortletStatus.OFFERED;
}
- @Override
public boolean isKnown(PortletContext portletContext) throws IllegalArgumentException,
PortletInvokerException
{
- return isExposed(portletContext);
+ return getStatus(portletContext) != null;
}
public Portlet getPortlet(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
Modified:
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/state/producer/ProducerPortletInvoker.java
===================================================================
---
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/state/producer/ProducerPortletInvoker.java 2011-01-15
01:21:08 UTC (rev 5757)
+++
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/state/producer/ProducerPortletInvoker.java 2011-01-15
14:52:32 UTC (rev 5758)
@@ -30,6 +30,7 @@
import org.gatein.pc.api.PortletContext;
import org.gatein.pc.api.PortletInvokerException;
import org.gatein.pc.api.PortletStateType;
+import org.gatein.pc.api.PortletStatus;
import org.gatein.pc.api.StateEvent;
import org.gatein.pc.api.StatefulPortletContext;
import org.gatein.pc.api.info.PortletInfo;
@@ -125,18 +126,25 @@
}
@Override
- public boolean isKnown(PortletContext portletContext) throws IllegalArgumentException,
PortletInvokerException
+ public PortletStatus getStatus(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
{
try
{
- return getPortlet(portletContext) != null;
+ getPortlet(portletContext);
+ return PortletStatus.MANAGED;
}
catch (NoSuchPortletException e)
{
- return false;
+ return null;
}
}
+ @Override
+ public boolean isKnown(PortletContext portletContext) throws IllegalArgumentException,
PortletInvokerException
+ {
+ return getStatus(portletContext) != null;
+ }
+
private <S extends Serializable> Portlet _getPortlet(PortletContext
portletContext) throws IllegalArgumentException, PortletInvokerException
{
Modified:
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/support/PortletInvokerSupport.java
===================================================================
---
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/support/PortletInvokerSupport.java 2011-01-15
01:21:08 UTC (rev 5757)
+++
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/support/PortletInvokerSupport.java 2011-01-15
14:52:32 UTC (rev 5758)
@@ -29,6 +29,7 @@
import org.gatein.pc.api.PortletInvoker;
import org.gatein.pc.api.PortletInvokerException;
import org.gatein.pc.api.PortletStateType;
+import org.gatein.pc.api.PortletStatus;
import org.gatein.pc.api.invocation.PortletInvocation;
import org.gatein.pc.api.invocation.response.PortletInvocationResponse;
import org.gatein.pc.api.state.DestroyCloneFailure;
@@ -132,14 +133,19 @@
return internalGetPortlet(portletContext);
}
+ public PortletStatus getStatus(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
+ {
+ return portlets.containsKey(portletContext.getId()) ? PortletStatus.OFFERED :
null;
+ }
+
public boolean isExposed(PortletContext portletContext) throws
IllegalArgumentException, PortletInvokerException
{
- return portlets.containsKey(portletContext.getId());
+ return getStatus(portletContext) == PortletStatus.OFFERED;
}
public boolean isKnown(PortletContext portletContext) throws IllegalArgumentException,
PortletInvokerException
{
- return isExposed(portletContext);
+ return getStatus(portletContext) != null;
}
public PortletInvocationResponse invoke(PortletInvocation invocation) throws
PortletInvokerException