Author: chris.laprun(a)jboss.com
Date: 2011-09-15 07:35:56 -0400 (Thu, 15 Sep 2011)
New Revision: 7440
Added:
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/RegisteringPortletInvokerResolver.java
Removed:
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/ActivatingNullInvokerHandler.java
Modified:
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/AbstractConsumerRegistry.java
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/spi/ConsumerRegistrySPI.java
components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/support/MockConsumerRegistry.java
Log:
- Renamed ActivatingNullInvokerHandler to RegisteringPortletInvokerResolver and fixed
implementation of resolvePortletInvokerFor to only register the consumer instead of
activating it (which might not be required) and return null if something went wrong.
- Added (de/)registerWithFederatingPortletInvoker methods on ConsumerRegistrySPI.
Modified:
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/AbstractConsumerRegistry.java
===================================================================
---
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/AbstractConsumerRegistry.java 2011-09-15
11:28:21 UTC (rev 7439)
+++
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/AbstractConsumerRegistry.java 2011-09-15
11:35:56 UTC (rev 7440)
@@ -24,9 +24,7 @@
package org.gatein.wsrp.consumer.registry;
import org.gatein.common.util.ParameterValidation;
-import org.gatein.pc.api.PortletInvoker;
import org.gatein.pc.api.PortletInvokerException;
-import org.gatein.pc.federation.FederatedPortletInvoker;
import org.gatein.pc.federation.FederatingPortletInvoker;
import org.gatein.wsrp.WSRPConsumer;
import org.gatein.wsrp.api.session.SessionEventBroadcaster;
@@ -218,13 +216,7 @@
protected void activateConsumer(WSRPConsumer consumer)
{
- ParameterValidation.throwIllegalArgExceptionIfNull(consumer,
"WSRPConsumer");
- String id = consumer.getProducerId();
-
- if (!federatingPortletInvoker.isResolved(id))
- {
- startOrStopConsumer(consumer, true);
- }
+ startOrStopConsumer(consumer, true, false);
}
public void deactivateConsumerWith(String id) throws ConsumerException
@@ -235,16 +227,19 @@
protected void deactivateConsumer(WSRPConsumer consumer)
{
- ParameterValidation.throwIllegalArgExceptionIfNull(consumer,
"Consumer");
- String id = consumer.getProducerId();
+ startOrStopConsumer(consumer, false, false);
+ }
- // only process if there is a registered Consumer with the specified id
- if (federatingPortletInvoker.isResolved(id))
- {
- startOrStopConsumer(consumer, false);
- }
+ public void registerWithFederatingPortletInvoker(WSRPConsumer consumer)
+ {
+ startOrStopConsumer(consumer, true, true);
}
+ public void deregisterWithFederatingPortletInvoker(WSRPConsumer consumer)
+ {
+ startOrStopConsumer(consumer, false, true);
+ }
+
public String updateProducerInfo(ProducerInfo producerInfo)
{
ParameterValidation.throwIllegalArgExceptionIfNull(producerInfo,
"ProducerInfo");
@@ -408,39 +403,39 @@
}
}
- private void startOrStopConsumer(WSRPConsumer consumer, boolean start)
+ private void startOrStopConsumer(WSRPConsumer consumer, boolean start, boolean
registerOrDeregisterOnly)
{
+ ParameterValidation.throwIllegalArgExceptionIfNull(consumer,
"WSRPConsumer");
try
{
String id = consumer.getProducerId();
if (start)
{
- consumer.activate();
- federatingPortletInvoker.registerInvoker(id, consumer);
+ if (!registerOrDeregisterOnly)
+ {
+ consumer.activate();
+ }
+
+ if (!federatingPortletInvoker.isResolved(id))
+ {
+ federatingPortletInvoker.registerInvoker(id, consumer);
+ }
+
sessionEventBroadcaster.registerListener(getListenerIdFrom(id), consumer);
}
else
{
- FederatedPortletInvoker fedInvoker =
federatingPortletInvoker.getFederatedInvoker(id);
- if (fedInvoker != null)
+ if (!registerOrDeregisterOnly)
{
- PortletInvoker invoker = fedInvoker.getPortletInvoker();
- if (invoker instanceof WSRPConsumer)
- {
- consumer = (WSRPConsumer)invoker;
- consumer.deactivate();
- federatingPortletInvoker.unregisterInvoker(id);
- sessionEventBroadcaster.unregisterListener(getListenerIdFrom(id));
- }
- else
- {
- throw new IllegalArgumentException("PortletInvoker with id
'" + id + "' is not a WSRPConsumer!");
- }
+ consumer.deactivate();
}
- else
+
+ if (federatingPortletInvoker.isResolved(id))
{
- throw new IllegalArgumentException("There is no registered
PortletInvoker with id '" + id + "'");
+ federatingPortletInvoker.unregisterInvoker(id);
}
+
+ sessionEventBroadcaster.unregisterListener(getListenerIdFrom(id));
}
}
catch (Exception e)
Deleted:
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/ActivatingNullInvokerHandler.java
===================================================================
---
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/ActivatingNullInvokerHandler.java 2011-09-15
11:28:21 UTC (rev 7439)
+++
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/ActivatingNullInvokerHandler.java 2011-09-15
11:35:56 UTC (rev 7440)
@@ -1,96 +0,0 @@
-/*
- * JBoss, a division of Red Hat
- * Copyright 2011, 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.gatein.wsrp.consumer.registry;
-
-import org.gatein.pc.api.NoSuchPortletException;
-import org.gatein.pc.federation.FederatedPortletInvoker;
-import org.gatein.pc.federation.FederatingPortletInvoker;
-import org.gatein.pc.federation.NullInvokerHandler;
-import org.gatein.pc.federation.impl.FederatedPortletInvokerService;
-import org.gatein.wsrp.WSRPConsumer;
-
-import java.util.Collection;
-
-/**
- * Attempts to activate a WSRP consumer named like the missing invoker that trigger the
invocation of this
- * NullInvokerHandler. This is in particularly helpful to activate configured consumers
that haven't been started yet
- * when a portlet referencing them is accessed.
- *
- * @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
- * @version $Revision$
- */
-public class ActivatingNullInvokerHandler implements NullInvokerHandler
-{
- private transient ConsumerRegistry consumerRegistry;
-
- public FederatedPortletInvoker resolvePortletInvokerFor(String invokerId,
FederatingPortletInvoker callingInvoker, String compoundPortletId) throws
NoSuchPortletException
- {
- FederatingPortletInvoker registryInvoker =
consumerRegistry.getFederatingPortletInvoker();
- if (registryInvoker != callingInvoker)
- {
- throw new IllegalArgumentException("Trying to use a ConsumerRegistry
already linked to a different FederatingPortletInvoker ("
- + registryInvoker + ") than the specified one (" + callingInvoker +
")");
- }
-
- WSRPConsumer consumer = consumerRegistry.getConsumer(invokerId);
-
- // if there's no consumer with that invoker id, then there's nothing much
we can do
- if (consumer == null)
- {
- if (compoundPortletId != null)
- {
- throw new NoSuchPortletException(compoundPortletId);
- }
- else
- {
- return null;
- }
- }
- else
- {
- // activate the consumer which should register it with this
FederatingPortletInvoker
- synchronized (this)
- {
- consumerRegistry.activateConsumerWith(invokerId);
-
- return new FederatedPortletInvokerService(callingInvoker, invokerId,
consumer);
- }
- }
- }
-
- public boolean knows(String invoker)
- {
- return consumerRegistry.containsConsumer(invoker);
- }
-
- public Collection<String> getKnownInvokerIds()
- {
- return consumerRegistry.getConfiguredConsumersIds();
- }
-
- public void setConsumerRegistry(ConsumerRegistry consumerRegistry)
- {
- this.consumerRegistry = consumerRegistry;
- }
-}
Copied:
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/RegisteringPortletInvokerResolver.java
(from rev 7393,
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/ActivatingNullInvokerHandler.java)
===================================================================
---
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/RegisteringPortletInvokerResolver.java
(rev 0)
+++
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/RegisteringPortletInvokerResolver.java 2011-09-15
11:35:56 UTC (rev 7440)
@@ -0,0 +1,105 @@
+/*
+ * JBoss, a division of Red Hat
+ * Copyright 2011, 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.gatein.wsrp.consumer.registry;
+
+import org.gatein.pc.api.NoSuchPortletException;
+import org.gatein.pc.federation.FederatedPortletInvoker;
+import org.gatein.pc.federation.FederatingPortletInvoker;
+import org.gatein.pc.federation.PortletInvokerResolver;
+import org.gatein.pc.federation.impl.FederatedPortletInvokerService;
+import org.gatein.wsrp.WSRPConsumer;
+import org.gatein.wsrp.consumer.ConsumerException;
+import org.gatein.wsrp.consumer.spi.ConsumerRegistrySPI;
+
+import java.util.Collection;
+
+/**
+ * Attempts to activate a WSRP consumer named like the missing invoker that trigger the
invocation of this
+ * PortletInvokerResolver. This is in particularly helpful to activate configured
consumers that haven't been started
+ * yet
+ * when a portlet referencing them is accessed.
+ *
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
+ * @version $Revision$
+ */
+public class RegisteringPortletInvokerResolver implements PortletInvokerResolver
+{
+ private transient ConsumerRegistrySPI consumerRegistry;
+
+ public FederatedPortletInvoker resolvePortletInvokerFor(String invokerId,
FederatingPortletInvoker callingInvoker, String compoundPortletId) throws
NoSuchPortletException
+ {
+ FederatingPortletInvoker registryInvoker =
consumerRegistry.getFederatingPortletInvoker();
+ if (registryInvoker != callingInvoker)
+ {
+ throw new IllegalArgumentException("Trying to use a ConsumerRegistry
already linked to a different FederatingPortletInvoker ("
+ + registryInvoker + ") than the specified one (" + callingInvoker +
")");
+ }
+
+ WSRPConsumer consumer = consumerRegistry.getConsumer(invokerId);
+
+ // if there's no consumer with that invoker id, then there's nothing much
we can do
+ if (consumer == null)
+ {
+ if (compoundPortletId != null)
+ {
+ throw new NoSuchPortletException(compoundPortletId);
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else
+ {
+ // register it with the FederatingPortletInvoker
+ synchronized (this)
+ {
+ try
+ {
+ consumerRegistry.registerWithFederatingPortletInvoker(consumer);
+ return new FederatedPortletInvokerService(callingInvoker, invokerId,
consumer);
+ }
+ catch (ConsumerException e)
+ {
+ return null;
+ }
+ }
+ }
+ }
+
+ public boolean knows(String invoker)
+ {
+ return consumerRegistry.containsConsumer(invoker);
+ }
+
+ public Collection<String> getKnownInvokerIds()
+ {
+ return consumerRegistry.getConfiguredConsumersIds();
+ }
+
+ public void setConsumerRegistry(ConsumerRegistrySPI consumerRegistry)
+ {
+ this.consumerRegistry = consumerRegistry;
+ }
+}
Modified:
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/spi/ConsumerRegistrySPI.java
===================================================================
---
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/spi/ConsumerRegistrySPI.java 2011-09-15
11:28:21 UTC (rev 7439)
+++
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/spi/ConsumerRegistrySPI.java 2011-09-15
11:35:56 UTC (rev 7440)
@@ -70,4 +70,8 @@
ProducerInfo loadProducerInfo(String id);
WSRPConsumer createConsumerFrom(ProducerInfo producerInfo);
+
+ void registerWithFederatingPortletInvoker(WSRPConsumer consumer);
+
+ void deregisterWithFederatingPortletInvoker(WSRPConsumer consumer);
}
Modified:
components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/support/MockConsumerRegistry.java
===================================================================
---
components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/support/MockConsumerRegistry.java 2011-09-15
11:28:21 UTC (rev 7439)
+++
components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/support/MockConsumerRegistry.java 2011-09-15
11:35:56 UTC (rev 7440)
@@ -224,4 +224,14 @@
{
throw new UnsupportedOperationException();
}
+
+ public void registerWithFederatingPortletInvoker(WSRPConsumer consumer)
+ {
+ consumers.put(consumer.getProducerId(), consumer);
+ }
+
+ public void deregisterWithFederatingPortletInvoker(WSRPConsumer consumer)
+ {
+ consumers.remove(consumer.getProducerId());
+ }
}