Author: julien_viet
Date: 2009-12-29 09:49:30 -0500 (Tue, 29 Dec 2009)
New Revision: 1238
Removed:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/KernelManagementContext.java
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableComponentAdapter.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableContainer.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagedResource.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagementProviderImpl.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/TestManagementProvider.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/support/ContainerBuilder.java
Log:
EXOJCR-350 : Enable plugability of management layer : add testing for nested portal
container
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java 2009-12-29
14:04:26 UTC (rev 1237)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java 2009-12-29
14:49:30 UTC (rev 1238)
@@ -333,7 +333,7 @@
pcontainer.start();
// Register the portal as an mbean
- managementContext.register(pcontainer);
+ getManagementContext().register(pcontainer);
//
executeInitTasks(pcontainer, PortalContainerPostInitTask.TYPE);
Deleted:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/KernelManagementContext.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/KernelManagementContext.java 2009-12-29
14:04:26 UTC (rev 1237)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/KernelManagementContext.java 2009-12-29
14:49:30 UTC (rev 1238)
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2009 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.exoplatform.container.management;
-
-import org.exoplatform.management.spi.ManagementProvider;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
- * @version $Revision$
- */
-public class KernelManagementContext
-{
-
- /** . */
- final ManagementContextImpl root;
-
- /** . */
- private final Set<ManagementProvider> providers;
-
- /** . */
- private final ManageableContainer container;
-
- public KernelManagementContext(ManageableContainer container)
- {
- this.providers = new HashSet<ManagementProvider>();
- this.container = container;
-
- // Done last as we pass 'this' as argument
- this.root = new ManagementContextImpl(this, container);
- }
-
- public synchronized Collection<ManagementProvider> getProviders() {
- return providers;
- }
-
- public synchronized boolean addProvider(ManagementProvider provider)
- {
- // Prevent double registration just in case...
- if (providers.contains(provider)) {
- return false;
- }
-
- //
- providers.add(provider);
-
- // Perform registration of already registered managed components
- root.install(provider);
-
- //
- return false;
- }
-}
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableComponentAdapter.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableComponentAdapter.java 2009-12-29
14:04:26 UTC (rev 1237)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableComponentAdapter.java 2009-12-29
14:49:30 UTC (rev 1238)
@@ -83,7 +83,7 @@
if (instance instanceof ManagementProvider)
{
ManagementProvider provider = (ManagementProvider)instance;
- container.managementContext.kernelContext.addProvider(provider);
+ container.addProvider(provider);
}
}
}
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableContainer.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableContainer.java 2009-12-29
14:04:26 UTC (rev 1237)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableContainer.java 2009-12-29
14:49:30 UTC (rev 1238)
@@ -36,6 +36,7 @@
import java.lang.management.ManagementFactory;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@@ -60,15 +61,20 @@
}
/** . */
- private static final ThreadLocal<ManageableComponentAdapterFactory> hack =
- new ThreadLocal<ManageableComponentAdapterFactory>();
+ private static final ThreadLocal<ManageableComponentAdapterFactory> hack = new
ThreadLocal<ManageableComponentAdapterFactory>();
/** . */
- protected ManagementContextImpl managementContext;
+ final ManagementContextImpl managementContext;
/** . */
- protected MBeanServer server;
+ private MBeanServer server;
+ /** . */
+ private final Set<ManagementProvider> providers;
+
+ /** . */
+ private final ManageableContainer parent;
+
public ManageableContainer()
{
this((PicoContainer)null);
@@ -88,29 +94,32 @@
factory.container = this;
hack.set(null);
- // Reference the same mbean server that the parent has
+ // The synchronized wrapper, here will not impact runtime performances
+ // so it's fine
+ this.providers = Collections.synchronizedSet(new
HashSet<ManagementProvider>());
+
+ //
+ ManagementContextImpl parentCtx = null;
if (parent instanceof ManageableContainer)
{
ManageableContainer manageableParent = (ManageableContainer)parent;
+ parentCtx = manageableParent.managementContext;
+ }
- //
- ManagementContextImpl parentManagementContext =
manageableParent.managementContext;
- if (parentManagementContext != null)
- {
- managementContext = new ManagementContextImpl(parentManagementContext,
this);
- }
+ //
+ this.parent = parent instanceof ManageableContainer ? (ManageableContainer)parent :
null;
- // Get server from parent
- server = manageableParent.server;
- } else {
- KernelManagementContext kernelCtx = new KernelManagementContext(this);
-
- //
+ //
+ if (parentCtx != null)
+ {
+ server = parentCtx.container.server;
+ managementContext = new ManagementContextImpl(parentCtx, this);
+ }
+ else
+ {
server = findMBeanServer();
- managementContext = kernelCtx.root;
-
- //
- kernelCtx.addProvider(new JMXManagementProvider(server));
+ managementContext = new ManagementContextImpl(this);
+ addProvider(new JMXManagementProvider(server));
}
}
@@ -172,9 +181,50 @@
if (componentInstance instanceof ManagementProvider)
{
ManagementProvider provider = (ManagementProvider)componentInstance;
- managementContext.kernelContext.addProvider(provider);
+ addProvider(provider);
}
}
return adapter;
}
+
+ /**
+ * Returns the list of the providers which are relevant for this container.
+ *
+ * @return the providers
+ */
+ Collection<ManagementProvider> getProviders()
+ {
+ HashSet<ManagementProvider> allProviders = new
HashSet<ManagementProvider>();
+ computeAllProviders(allProviders);
+ return allProviders;
+ }
+
+ private void computeAllProviders(Set<ManagementProvider> allProviders)
+ {
+ if (parent != null)
+ {
+ parent.computeAllProviders(allProviders);
+ }
+
+ //
+ allProviders.addAll(providers);
+ }
+
+ boolean addProvider(ManagementProvider provider)
+ {
+ // Prevent double registration just in case...
+ if (providers.contains(provider))
+ {
+ return false;
+ }
+
+ //
+ providers.add(provider);
+
+ // Perform registration of already registered managed components
+ managementContext.install(provider);
+
+ //
+ return true;
+ }
}
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java 2009-12-29
14:04:26 UTC (rev 1237)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java 2009-12-29
14:49:30 UTC (rev 1238)
@@ -23,7 +23,6 @@
import org.exoplatform.management.ManagementAware;
import org.exoplatform.management.spi.ManagedResource;
import org.exoplatform.management.spi.ManagedTypeMetaData;
-import org.exoplatform.container.management.MetaDataBuilder;
import org.exoplatform.management.spi.ManagementProvider;
import org.exoplatform.management.ManagementContext;
import org.exoplatform.management.annotations.ManagedBy;
@@ -49,29 +48,22 @@
private final Map<Object, ManagementContextImpl> registrations;
/** . */
- final Map<ManagementProvider, Object> bilto;
+ final Map<ManagementProvider, Object> managedSet;
/** . */
private final ManagementContextImpl parent;
/** . */
- final KernelManagementContext kernelContext;
-
- /** . */
private final Object resource;
/** . */
private final ManagedTypeMetaData typeMD;
/** An optional container setup when the management context is attached to a
container. */
- private final ManageableContainer container;
+ final ManageableContainer container;
- public ManagementContextImpl(KernelManagementContext kernelContext,
ManageableContainer container)
+ public ManagementContextImpl(ManageableContainer container)
{
- if (kernelContext == null)
- {
- throw new NullPointerException();
- }
if (container == null)
{
throw new NullPointerException();
@@ -88,11 +80,10 @@
}
//
- this.bilto = new HashMap<ManagementProvider, Object>();
+ this.managedSet = new HashMap<ManagementProvider, Object>();
this.registrations = new HashMap<Object, ManagementContextImpl>();
this.parent = null;
this.scopingDataList = new HashMap<Class<?>, Object>();
- this.kernelContext = kernelContext;
this.resource = resource;
this.typeMD = typeMD;
this.container = container;
@@ -120,11 +111,10 @@
}
//
- this.bilto = new HashMap<ManagementProvider, Object>();
+ this.managedSet = new HashMap<ManagementProvider, Object>();
this.registrations = new HashMap<Object, ManagementContextImpl>();
this.parent = parent;
this.scopingDataList = new HashMap<Class<?>, Object>();
- this.kernelContext = parent.kernelContext;
this.resource = resource;
this.typeMD = typeMD;
this.container = container;
@@ -142,11 +132,10 @@
}
//
- this.bilto = new HashMap<ManagementProvider, Object>();
+ this.managedSet = new HashMap<ManagementProvider, Object>();
this.registrations = new HashMap<Object, ManagementContextImpl>();
this.parent = parent;
this.scopingDataList = new HashMap<Class<?>, Object>();
- this.kernelContext = parent.kernelContext;
this.resource = resource;
this.typeMD = typeMD;
this.container = null;
@@ -220,12 +209,15 @@
registrations.put(resource, managementContext);
//
- for (ManagementProvider provider : kernelContext.getProviders())
+ ManageableContainer container = findContainer();
+
+ // Install for all the providers related
+ for (ManagementProvider provider : container.getProviders())
{
Object name = provider.manage(managementContext);
if (name != null)
{
- managementContext.bilto.put(provider, name);
+ managementContext.managedSet.put(provider, name);
}
}
@@ -243,7 +235,7 @@
ManagementContextImpl context = registrations.remove(o);
if (context != null)
{
- for (Map.Entry<ManagementProvider, Object> entry :
context.bilto.entrySet()) {
+ for (Map.Entry<ManagementProvider, Object> entry :
context.managedSet.entrySet()) {
entry.getKey().unmanage(entry.getValue());
}
}
@@ -310,16 +302,18 @@
}
void install(ManagementProvider provider) {
+
+ // Install the current resource if necessary
if (resource != null&& typeMD != null)
{
Object name = provider.manage(this);
if (name != null)
{
- bilto.put(provider, name);
+ managedSet.put(provider, name);
}
}
- // Install for all
+ // Install thie children except the container ones
for (ManagementContextImpl registration : registrations.values())
{
registration.install(provider);
Modified:
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagedResource.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagedResource.java 2009-12-29
14:04:26 UTC (rev 1237)
+++
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagedResource.java 2009-12-29
14:49:30 UTC (rev 1238)
@@ -55,4 +55,10 @@
{
context.setScopingData(ScopedData.class, data);
}
+
+ @Override
+ public String toString()
+ {
+ return "ManagedResource[key=" + key + ",resource=" + resource +
"]";
+ }
}
Modified:
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagementProviderImpl.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagementProviderImpl.java 2009-12-29
14:04:26 UTC (rev 1237)
+++
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagementProviderImpl.java 2009-12-29
14:49:30 UTC (rev 1238)
@@ -34,18 +34,22 @@
{
/** . */
- final List<org.exoplatform.container.management.ManagedResource> resources = new
ArrayList<org.exoplatform.container.management.ManagedResource>();
+ final List<org.exoplatform.container.management.ManagedResource>
managedResources = new
ArrayList<org.exoplatform.container.management.ManagedResource>();
+ /** . */
+ final List<Object> resources = new ArrayList<Object>();
+
public Object manage(ManagedResource context)
{
org.exoplatform.container.management.ManagedResource mr = new
org.exoplatform.container.management.ManagedResource(context.getResource(), context,
context.getMetaData());
- resources.add(mr);
+ managedResources.add(mr);
+ resources.add(mr.resource);
return mr.key;
}
public void unmanage(Object key)
{
- for (Iterator<org.exoplatform.container.management.ManagedResource> i =
resources.iterator();i.hasNext();)
+ for (Iterator<org.exoplatform.container.management.ManagedResource> i =
managedResources.iterator();i.hasNext();)
{
org.exoplatform.container.management.ManagedResource mr = i.next();
if (mr.key == key)
Modified:
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/TestManagementProvider.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/TestManagementProvider.java 2009-12-29
14:04:26 UTC (rev 1237)
+++
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/TestManagementProvider.java 2009-12-29
14:49:30 UTC (rev 1238)
@@ -20,6 +20,7 @@
package org.exoplatform.container.management;
import junit.framework.TestCase;
+import org.exoplatform.container.PortalContainer;
import org.exoplatform.container.RootContainer;
import org.exoplatform.container.support.ContainerBuilder;
@@ -47,11 +48,11 @@
URL url = getClass().getResource("configuration1.xml");
RootContainer container = new ContainerBuilder().withRoot(url).build();
ManagementProviderImpl provider =
(ManagementProviderImpl)container.getComponentInstanceOfType(ManagementProviderImpl.class);
- assertEquals(1, provider.resources.size());
+ assertEquals(1, provider.managedResources.size());
Object foo = container.getComponentInstance("Foo");
assertNotNull(foo);
- assertEquals(2, provider.resources.size());
- ManagedResource fooMR = provider.resources.get(1);
+ assertEquals(2, provider.managedResources.size());
+ ManagedResource fooMR = provider.managedResources.get(1);
assertSame(foo, fooMR.resource);
assertEquals(Collections.<ScopedData>emptyList(),
fooMR.context.getScopingData(ScopedData.class));
fooMR.register();
@@ -68,8 +69,8 @@
assertNotNull(foo);
provider = new ManagementProviderImpl();
container.registerComponentInstance(provider);
- assertEquals(2, provider.resources.size());
- ManagedResource fooMR = provider.resources.get(1);
+ assertEquals(2, provider.managedResources.size());
+ ManagedResource fooMR = provider.managedResources.get(1);
assertSame(foo, fooMR.resource);
assertEquals(Collections.<ScopedData>emptyList(),
fooMR.context.getScopingData(ScopedData.class));
fooMR.register();
@@ -82,22 +83,54 @@
RootContainer container = new ContainerBuilder().withRoot(url).build();
ManagementProviderImpl provider =
(ManagementProviderImpl)container.getComponentInstanceOfType(ManagementProviderImpl.class);
Foo foo = (Foo)container.getComponentInstance("Foo");
- assertEquals(2, provider.resources.size());
- ManagedResource fooMR = provider.resources.get(1);
+ assertEquals(2, provider.managedResources.size());
+ ManagedResource fooMR = provider.managedResources.get(1);
fooMR.register();
assertTrue(foo.isAware());
//
foo.deploy();
- assertEquals(3, provider.resources.size());
- ManagedResource barMR = provider.resources.get(2);
+ assertEquals(3, provider.managedResources.size());
+ ManagedResource barMR = provider.managedResources.get(2);
assertSame(foo.bar, barMR.resource);
barMR.register();
assertEquals(Arrays.asList(barMR.data, fooMR.data),
barMR.context.getScopingData(ScopedData.class));
//
foo.undeploy();
- assertEquals(2, provider.resources.size());
- assertEquals(fooMR, provider.resources.get(1));
+ assertEquals(2, provider.managedResources.size());
+ assertEquals(fooMR, provider.managedResources.get(1));
}
+
+ public void testContainerScopedRegistration()
+ {
+ URL rootURL = getClass().getResource("root-configuration.xml");
+ URL portal1URL = getClass().getResource("portal-configuration1.xml");
+ URL portal2URL = getClass().getResource("portal-configuration2.xml");
+ RootContainer root = new
ContainerBuilder().withRoot(rootURL).withPortal("portal1",
portal1URL).withPortal("portal2", portal2URL).build();
+ Foo fooRoot = (Foo)root.getComponentInstanceOfType(Foo.class);
+ ManagementProviderImpl provider =
(ManagementProviderImpl)root.getComponentInstanceOfType(ManagementProviderImpl.class);
+ PortalContainer portal1 = root.getPortalContainer("portal1");
+ Foo fooPortal1 = (Foo)portal1.getComponentInstanceOfType(Foo.class);
+ ManagementProviderImpl provider1 =
(ManagementProviderImpl)portal1.getComponentInstanceOfType(ManagementProviderImpl.class);
+ PortalContainer portal2 = root.getPortalContainer("portal2");
+ Foo fooPortal2 = (Foo)portal2.getComponentInstanceOfType(Foo.class);
+ ManagementProviderImpl provider2 =
(ManagementProviderImpl)portal2.getComponentInstanceOfType(ManagementProviderImpl.class);
+
+ //
+ assertEquals(6, provider.managedResources.size());
+ assertTrue(provider.resources.contains(root));
+ assertTrue(provider.resources.contains(root));
+ assertTrue(provider.resources.contains(portal1));
+ assertTrue(provider.resources.contains(portal2));
+ assertTrue(provider.resources.contains(fooRoot));
+ assertTrue(provider.resources.contains(fooPortal1));
+ assertTrue(provider.resources.contains(fooPortal2));
+ assertEquals(2, provider1.managedResources.size());
+ assertEquals(portal1, provider1.managedResources.get(0).resource);
+ assertEquals(fooPortal1, provider1.managedResources.get(1).resource);
+ assertEquals(2, provider2.managedResources.size());
+ assertEquals(portal2, provider2.managedResources.get(0).resource);
+ assertEquals(fooPortal2, provider2.managedResources.get(1).resource);
+ }
}
Modified:
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/support/ContainerBuilder.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/support/ContainerBuilder.java 2009-12-29
14:04:26 UTC (rev 1237)
+++
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/support/ContainerBuilder.java 2009-12-29
14:49:30 UTC (rev 1238)
@@ -30,20 +30,28 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
+import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
- * An helper for building a root container and a portal container. I have done several
attempt to make easily
- * and safe root/portal container boot for unit test. This one is my best attempt so
far.
+ * <p>An helper for building a root container and a portal container. I have done
several attempt to make easily
+ * and safe root/portal container boot for unit test. This one is my best attempt so
far.</p>
*
+ * <p>Note that the portal container are booted in the order they are declared
first.</p>
+ *
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
* @version $Revision$
*/
public class ContainerBuilder
{
+ /** A hack used during the boot of a portal container. */
+ private final ThreadLocal<String> bootedPortalName = new
ThreadLocal<String>();
+
/** . */
private ClassLoader loader;
@@ -51,7 +59,7 @@
private List<URL> configURLs;
/** . */
- private List<URL> portalConfigURLs;
+ private LinkedHashMap<String, List<URL>> portalConfigURLs;
/** . */
private Set<String> profiles;
@@ -60,7 +68,7 @@
{
this.loader = Thread.currentThread().getContextClassLoader();
this.configURLs = new ArrayList<URL>();
- this.portalConfigURLs = new ArrayList<URL>();
+ this.portalConfigURLs = new LinkedHashMap<String, List<URL>>();
}
public ContainerBuilder withRoot(String configPath)
@@ -77,28 +85,33 @@
public ContainerBuilder withPortal(String configPath)
{
- portalConfigURLs.addAll(urls(configPath));
+ return withPortal("portal", configPath);
+ }
+
+ public ContainerBuilder withPortal(String portalName, String configPath)
+ {
+ for (URL configURL : urls(configPath))
+ {
+ withPortal(portalName, configURL);
+ }
return this;
}
public ContainerBuilder withPortal(URL configURL)
{
- portalConfigURLs.add(configURL);
- return this;
+ return withPortal("portal", configURL);
}
- private List<URL> urls(String path)
+ public ContainerBuilder withPortal(String portalName, URL configURL)
{
- try
+ List<URL> urls = portalConfigURLs.get(portalName);
+ if (urls == null)
{
- return Collections.list(loader.getResources(path));
+ urls = new ArrayList<URL>();
+ portalConfigURLs.put(portalName, urls);
}
- catch (IOException e)
- {
- AssertionFailedError err = new AssertionFailedError();
- err.initCause(e);
- throw err;
- }
+ urls.add(configURL);
+ return this;
}
public ContainerBuilder withLoader(ClassLoader loader)
@@ -113,6 +126,20 @@
return this;
}
+ private List<URL> urls(String path)
+ {
+ try
+ {
+ return Collections.list(loader.getResources(path));
+ }
+ catch (IOException e)
+ {
+ AssertionFailedError err = new AssertionFailedError();
+ err.initCause(e);
+ throw err;
+ }
+ }
+
public RootContainer build()
{
try
@@ -178,7 +205,8 @@
}
else if ("conf/portal/configuration.xml".equals(name))
{
- return Collections.enumeration(portalConfigURLs);
+ String portalName = bootedPortalName.get();
+ return Collections.enumeration(portalConfigURLs.get(portalName));
}
else if ("conf/portal/test-configuration.xml".equals(name))
{
@@ -204,9 +232,17 @@
root = RootContainer.getInstance();
//
- if (portalConfigURLs.size() > 0)
+ for (String portalName : portalConfigURLs.keySet())
{
- root.getPortalContainer("portal");
+ try
+ {
+ bootedPortalName.set(portalName);
+ root.getPortalContainer(portalName);
+ }
+ finally
+ {
+ bootedPortalName.set(null);
+ }
}
}
finally