Author: chris.laprun(a)jboss.com
Date: 2009-07-24 14:08:22 -0400 (Fri, 24 Jul 2009)
New Revision: 13603
Modified:
modules/portlet/trunk/mc/src/main/java/org/jboss/portal/portlet/mc/PortletApplicationDeployer.java
Log:
- Worked around jboss-service.xml injection mechanism so that it can be used in an MBean
context.
Modified:
modules/portlet/trunk/mc/src/main/java/org/jboss/portal/portlet/mc/PortletApplicationDeployer.java
===================================================================
---
modules/portlet/trunk/mc/src/main/java/org/jboss/portal/portlet/mc/PortletApplicationDeployer.java 2009-07-24
18:03:18 UTC (rev 13602)
+++
modules/portlet/trunk/mc/src/main/java/org/jboss/portal/portlet/mc/PortletApplicationDeployer.java 2009-07-24
18:08:22 UTC (rev 13603)
@@ -24,27 +24,29 @@
import org.apache.log4j.Logger;
import org.jboss.portal.common.io.IOTools;
-import org.jboss.portal.portlet.container.managed.PortletApplicationRegistry;
-import org.jboss.portal.portlet.container.managed.ManagedPortletApplication;
+import org.jboss.portal.portlet.PortletInvoker;
+import org.jboss.portal.portlet.container.ContainerPortletInvoker;
+import org.jboss.portal.portlet.container.PortletContainer;
+import org.jboss.portal.portlet.container.managed.LifeCycleStatus;
+import org.jboss.portal.portlet.container.managed.ManagedObject;
+import org.jboss.portal.portlet.container.managed.ManagedObjectEvent;
+import org.jboss.portal.portlet.container.managed.ManagedObjectLifeCycleEvent;
+import org.jboss.portal.portlet.container.managed.ManagedObjectRegistryEvent;
import org.jboss.portal.portlet.container.managed.ManagedObjectRegistryEventBroadcaster;
import org.jboss.portal.portlet.container.managed.ManagedObjectRegistryEventListener;
-import org.jboss.portal.portlet.container.managed.ManagedObjectRegistryEvent;
-import org.jboss.portal.portlet.container.managed.ManagedObjectEvent;
-import org.jboss.portal.portlet.container.managed.ManagedObject;
-import org.jboss.portal.portlet.container.managed.ManagedObjectLifeCycleEvent;
-import org.jboss.portal.portlet.container.managed.LifeCycleStatus;
-import org.jboss.portal.portlet.container.ContainerPortletInvoker;
-import org.jboss.portal.portlet.container.PortletContainer;
+import org.jboss.portal.portlet.container.managed.ManagedPortletApplication;
+import org.jboss.portal.portlet.container.managed.PortletApplicationRegistry;
+import org.jboss.portal.portlet.impl.container.PortletApplicationLifeCycle;
+import org.jboss.portal.portlet.impl.container.PortletContainerLifeCycle;
import org.jboss.portal.portlet.impl.metadata.PortletApplication10MetaData;
import static
org.jboss.portal.portlet.impl.metadata.PortletMetaDataConstants.PORTLET_JSR_168_NS;
import static
org.jboss.portal.portlet.impl.metadata.PortletMetaDataConstants.PORTLET_JSR_286_NS;
-import org.jboss.portal.portlet.impl.container.PortletApplicationLifeCycle;
-import org.jboss.portal.portlet.impl.container.PortletContainerLifeCycle;
import org.jboss.portal.portlet.mc.metadata.factory.PortletApplicationModelFactory;
import org.jboss.portal.portlet.mc.metadata.impl.AnnotationPortletApplication10MetaData;
import org.jboss.portal.portlet.mc.metadata.impl.AnnotationPortletApplication20MetaData;
import org.jboss.portal.portlet.mc.metadata.impl.ValueTrimmingFilter;
import org.jboss.portal.web.ServletContainer;
+import org.jboss.portal.web.ServletContainerFactory;
import org.jboss.portal.web.WebApp;
import org.jboss.portal.web.WebAppEvent;
import org.jboss.portal.web.WebAppLifeCycleEvent;
@@ -58,9 +60,9 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
-import java.util.Collection;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -97,6 +99,8 @@
/** . */
private ServletContainer servletContainer;
+ private ServletContainerFactory servletContainerFactory;
+
/** . */
private Map<String, PortletApplicationDeployment> deploymentMap = new
HashMap<String, PortletApplicationDeployment>();
@@ -124,22 +128,47 @@
public ServletContainer getServletContainer()
{
+ if (servletContainer == null)
+ {
+ servletContainer = servletContainerFactory.getServletContainer();
+ }
return servletContainer;
}
public void setServletContainer(ServletContainer servletContainer)
{
- this.servletContainer = servletContainer;
+ throw new UnsupportedOperationException("Inject ServletContainerFactory
instead!");
}
- public ContainerPortletInvoker getContainerPortletInvoker()
+ public ServletContainerFactory getServletContainerFactory()
{
+ return servletContainerFactory;
+ }
+
+ public void setServletContainerFactory(ServletContainerFactory
servletContainerFactory)
+ {
+ this.servletContainerFactory = servletContainerFactory;
+ }
+
+ public PortletInvoker getContainerPortletInvoker()
+ {
return containerPortletInvoker;
}
- public void setContainerPortletInvoker(ContainerPortletInvoker
containerPortletInvoker)
+ public void setContainerPortletInvoker(PortletInvoker containerPortletInvoker)
{
- this.containerPortletInvoker = containerPortletInvoker;
+ if (containerPortletInvoker instanceof ContainerPortletInvoker)
+ {
+ this.containerPortletInvoker =
(ContainerPortletInvoker)containerPortletInvoker;
+ }
+ else
+ {
+ if (containerPortletInvoker == null)
+ {
+ return; // this method is called with null on shutdown
+ }
+ throw new IllegalArgumentException("PortletApplicationDeployer can only
accept ContainerPortletInvokers!");
+ }
}
public void onEvent(WebAppEvent event)
@@ -225,14 +254,14 @@
//
broadcaster.addListener(bridgeToInvoker);
- servletContainer.addWebAppListener(this);
+ getServletContainer().addWebAppListener(this);
}
public void stop()
{
// This should generate remove web app event and in cascade clear the registry
// as well as the portlet container invoker
- servletContainer.removeWebAppListener(this);
+ getServletContainer().removeWebAppListener(this);
//
classLoader = null;
@@ -303,9 +332,7 @@
broadcaster.addListener(listener);
}
- /**
- * Bridge managed object event to add/remove portlet container in portlet container
invoker.
- */
+ /** Bridge managed object event to add/remove portlet container in portlet container
invoker. */
private final ManagedObjectRegistryEventListener bridgeToInvoker = new
ManagedObjectRegistryEventListener()
{
public void onEvent(ManagedObjectRegistryEvent event)
Show replies by date