Author: nfilotto
Date: 2010-08-19 13:11:10 -0400 (Thu, 19 Aug 2010)
New Revision: 2953
Added:
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/PortalContainerFilter.java
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainer.java
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/AbstractHttpServlet.java
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/AbstractHttpSessionListener.java
kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/TestPortalContainer.java
kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def2.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def2.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values2.xml
Log:
EXOJCR-842: commit patch (implementation part)
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainer.java
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainer.java 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainer.java 2010-08-19
17:11:10 UTC (rev 2953)
@@ -18,6 +18,7 @@
*/
package org.exoplatform.container;
+import org.exoplatform.commons.utils.PropertyManager;
import org.exoplatform.container.RootContainer.PortalContainerInitTask;
import org.exoplatform.container.definition.PortalContainerConfig;
import org.exoplatform.container.jmx.MX4JComponentAdapterFactory;
@@ -378,6 +379,21 @@
}
/**
+ * @see the method isPortalContainerNameDisabled of {@link PortalContainerConfig}
+ */
+ public static boolean isPortalContainerNameDisabled(String name)
+ {
+ if (CONFIG == null)
+ {
+ return false;
+ }
+ else
+ {
+ return CONFIG.isPortalContainerNameDisabled(name);
+ }
+ }
+
+ /**
* Add an init-task to all the portal container instances related to the given
ServletContext
*
* @param context the context from which we extract the context name
@@ -430,8 +446,11 @@
String portalContainerName =
CONFIG.getPortalContainerName(context.getServletContextName());
if (portalContainerName == null)
{
- log.warn("The Servlet Context '" + context.getServletContextName()
+ "' has not been registered"
- + " has a dependency of any PortalContainerDefinitions.");
+ if (PropertyManager.isDevelopping())
+ {
+ log.warn("The Servlet Context '" +
context.getServletContextName() + "' has not been registered"
+ + " has a dependency of any PortalContainerDefinitions.");
+ }
return null;
}
RootContainer root = RootContainer.getInstance();
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java 2010-08-19
17:11:10 UTC (rev 2953)
@@ -18,6 +18,7 @@
*/
package org.exoplatform.container;
+import org.exoplatform.commons.utils.PropertyManager;
import org.exoplatform.container.configuration.ConfigurationManager;
import org.exoplatform.container.configuration.ConfigurationManagerImpl;
import org.exoplatform.container.configuration.MockConfigurationManagerImpl;
@@ -189,12 +190,25 @@
public void registerPortalContainer(ServletContext context)
{
PortalContainerConfig config = getPortalContainerConfig();
- // Ensure that the portal container has been registered
- config.registerPortalContainerName(context.getServletContextName());
if (config.hasDefinition())
{
// The new behavior has been detected thus, the creation will be done at the end
asynchronously
- portalContexts.add(new WebAppInitContext(context));
+ if (config.isPortalContainerName(context.getServletContextName()))
+ {
+ // The portal context has been registered has a portal container
+ portalContexts.add(new WebAppInitContext(context));
+ }
+ else
+ {
+ if (PropertyManager.isDevelopping())
+ {
+ log.info("We assume that the ServletContext '" +
context.getServletContextName()
+ + "' is not a portal since no portal container definition with
the same name has been"
+ + " registered to the component PortalContainerConfig. The related
portal container"
+ + " will be declared as disabled.");
+ }
+ config.disablePortalContainer(context.getServletContextName());
+ }
// We assume that a ServletContext of a portal container owns configuration
files
final PortalContainerPreInitTask task = new PortalContainerPreInitTask()
{
@@ -208,6 +222,8 @@
}
else
{
+ // Ensure that the portal container has been registered
+ config.registerPortalContainerName(context.getServletContextName());
// The old behavior has been detected thus, the creation will be done
synchronously
createPortalContainer(context);
}
@@ -244,11 +260,14 @@
PortalContainerConfig config = getPortalContainerConfig();
for (String portalContainerName : initTasks.keySet())
{
- // Unregister name of portal container that doesn't exist
- log.warn("The portal container '" + portalContainerName +
"' doesn't not exist or"
- + " it has not yet been registered, please check your
PortalContainerDefinitions and "
- + "the loading order.");
- config.unregisterPortalContainerName(portalContainerName);
+ if (config.isPortalContainerName(portalContainerName))
+ {
+ // Unregister name of portal container that doesn't exist
+ log.warn("The portal container '" + portalContainerName +
"' doesn't not exist or"
+ + " it has not yet been registered, please check your
PortalContainerDefinitions and "
+ + "the loading order.");
+ config.unregisterPortalContainerName(portalContainerName);
+ }
}
// remove all the unneeded tasks
initTasks.clear();
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java 2010-08-19
17:11:10 UTC (rev 2953)
@@ -18,6 +18,7 @@
*/
package org.exoplatform.container.definition;
+import org.exoplatform.commons.utils.PropertyManager;
import org.exoplatform.container.PortalContainer;
import org.exoplatform.container.PropertyConfigurator;
import org.exoplatform.container.RootContainer;
@@ -38,9 +39,12 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.servlet.ServletContext;
@@ -105,14 +109,19 @@
private volatile boolean initialized;
/**
- * The list of all the portal containers
+ * The set of all the portal containers
*/
- private List<String> portalContainerNames;
+ private Set<String> portalContainerNames = Collections.unmodifiableSet(new
HashSet<String>());
/**
+ * The set of all the portal containers that have been disabled
+ */
+ private Set<String> portalContainerNamesDisabled =
Collections.unmodifiableSet(new HashSet<String>());
+
+ /**
* The list of all the web application scopes
*/
- private Map<String, List<String>> scopes;
+ private Map<String, List<String>> scopes = Collections.unmodifiableMap(new
HashMap<String, List<String>>());
/**
* The list of all the {@link PortalContainerDefinition} that have been registered
@@ -345,8 +354,70 @@
{
return !definitions.isEmpty();
}
+
+ /**
+ * Disables a portal container if it has not yet been disabled.
+ * @param name the name of the portal container to disable
+ */
+ public synchronized void disablePortalContainer(String name)
+ {
+ if (!portalContainerNamesDisabled.contains(name))
+ {
+ if (PropertyManager.isDevelopping())
+ {
+ log.info("The portal container '" + name + "' will be
disabled");
+ }
+ final Set<String> lPortalContainerNames = new
HashSet<String>(portalContainerNamesDisabled.size() + 1);
+ lPortalContainerNames.add(name);
+ lPortalContainerNames.addAll(portalContainerNamesDisabled);
+ this.portalContainerNamesDisabled =
Collections.unmodifiableSet(lPortalContainerNames);
+ if (hasDefinition())
+ {
+ // The new behavior is expected
+ // Remove the portal container from the registered portal container list
+ unregisterPortalContainerName(name);
+ }
+ }
+ }
+
+ /**
+ * Remove the given portal container name from all the existing scopes
+ *
+ * @param name the name of the portal container to remove from all the scopes
+ */
+ private void removePortalContainerNameFromScopes(String name)
+ {
+ final Map<String, List<String>> tmpScopes = new HashMap<String,
List<String>>(scopes);
+ boolean changed = false;
+ for (String ctx : tmpScopes.keySet())
+ {
+ List<String> portalContainerNames = tmpScopes.get(ctx);
+ if (portalContainerNames.contains(name))
+ {
+ List<String> tmpPortalContainerNames = new
ArrayList<String>(portalContainerNames);
+ tmpPortalContainerNames.remove(name);
+ tmpScopes.put(ctx, Collections.unmodifiableList(tmpPortalContainerNames));
+ changed = true;
+ }
+ }
+ if (changed)
+ {
+ this.scopes = Collections.unmodifiableMap(tmpScopes);
+ }
+ }
/**
+ * Indicates if the given name is the name of a portal container that has been
registered as disabled
+ * @param name the name to check
+ * @return <code>true</code> if the name is a name of a disabled portal
container, <code>false</code>
+ * otherwise.
+ */
+ public boolean isPortalContainerNameDisabled(String name)
+ {
+ return name == null ? false : portalContainerNamesDisabled.contains(name);
+ }
+
+ /**
* Registers a name of a portal container if it has not yet been registered
* @param name the name of the portal container to register
*/
@@ -354,10 +425,10 @@
{
if (!portalContainerNames.contains(name))
{
- final List<String> lPortalContainerNames = new
ArrayList<String>(portalContainerNames.size() + 1);
+ final Set<String> lPortalContainerNames = new
LinkedHashSet<String>(portalContainerNames.size() + 1);
lPortalContainerNames.add(name);
lPortalContainerNames.addAll(portalContainerNames);
- this.portalContainerNames =
Collections.unmodifiableList(lPortalContainerNames);
+ this.portalContainerNames = Collections.unmodifiableSet(lPortalContainerNames);
}
}
@@ -369,9 +440,15 @@
{
if (portalContainerNames.contains(name))
{
- final List<String> lPortalContainerNames = new
ArrayList<String>(portalContainerNames);
+ final Set<String> lPortalContainerNames = new
LinkedHashSet<String>(portalContainerNames);
lPortalContainerNames.remove(name);
- this.portalContainerNames =
Collections.unmodifiableList(lPortalContainerNames);
+ this.portalContainerNames = Collections.unmodifiableSet(lPortalContainerNames);
+ if (hasDefinition())
+ {
+ // The new behavior is expected
+ // Remove the portal container from all the scopes
+ removePortalContainerNameFromScopes(name);
+ }
}
}
@@ -397,7 +474,7 @@
{
throw new IllegalArgumentException("The context name cannot be
null");
}
- if (scopes.isEmpty())
+ if (definitions.isEmpty())
{
// we assume that the old behavior is expected
final String portalContainerName =
@@ -435,15 +512,20 @@
// The given context name is a context name of a portal container
return contextName;
}
- else if (scopes.isEmpty())
+ else if (definitions.isEmpty())
{
// we assume that the old behavior is expected
- return defaultDefinition.getName();
+ return defaultDefinition.getName();
}
final List<String> result = scopes.get(contextName);
if (result == null || result.isEmpty())
{
- // This context has not been added as dependency of any portal containers
+ // This context has not been added as dependency of any portal containers
+ if (PropertyManager.isDevelopping())
+ {
+ log.info("The context '" + contextName + "' has not
been added as " +
+ "dependency of any portal containers");
+ }
return null;
}
return result.get(0);
@@ -457,12 +539,18 @@
public List<String> getDependencies(String portalContainerName)
{
final PortalContainerDefinition definition = definitions.get(portalContainerName);
- List<String> result = null;
if (definition != null)
{
- result = definition.getDependencies();
+ // A definition has been defined
+ List<String> result = definition.getDependencies();
+ return result == null || result.isEmpty() ? defaultDefinition.getDependencies()
: result;
}
- return result == null || result.isEmpty() ? defaultDefinition.getDependencies() :
result;
+ else if (definitions.isEmpty())
+ {
+ // The old behavior is expected
+ return defaultDefinition.getDependencies();
+ }
+ return null;
}
/**
@@ -542,7 +630,7 @@
if (portalContainerName == null)
{
throw new IllegalArgumentException("The portal container name cannot be
null");
- }
+ }
return getPortalContainerNames(contextName).contains(portalContainerName);
}
@@ -584,6 +672,29 @@
}
/**
+ * Allow to disable a set of portal containers
+ * @param plugin the plugin that defines the name of portal containers to disable
+ */
+ public void registerDisablePlugin(PortalContainerDefinitionDisablePlugin plugin)
+ {
+ final Set<String> sPortalContainerNames = plugin.getNames();
+ if (sPortalContainerNames != null && !sPortalContainerNames.isEmpty())
+ {
+ synchronized (this)
+ {
+ if (initialized)
+ {
+ throw new IllegalStateException("The PortalContainerConfig has
already been initialized");
+ }
+ for (String name : sPortalContainerNames)
+ {
+ disablePortalContainer(name);
+ }
+ }
+ }
+ }
+
+ /**
* Allow to define a set of changes to apply to the registered {@link
PortalContainerDefinition}
* @param plugin the plugin that defines the changes to apply
*/
@@ -975,20 +1086,21 @@
*/
private void initialize(Map<String, PortalContainerDefinition> mDefinitions)
{
- final List<String> lPortalContainerNames = new
ArrayList<String>(mDefinitions.size() + 1);
- // Add the default portal container name
- lPortalContainerNames.add(defaultDefinition.getName());
+ final Set<String> lPortalContainerNames = new
LinkedHashSet<String>(mDefinitions.size() + 1);
final Map<String, List<String>> mScopes = new HashMap<String,
List<String>>();
boolean first = true;
for (Map.Entry<String, PortalContainerDefinition> entry :
mDefinitions.entrySet())
{
PortalContainerDefinition definition = entry.getValue();
String name = definition.getName();
- boolean hasChanged = false;
- if (!name.equals(defaultDefinition.getName()))
+ if (isPortalContainerNameDisabled(name))
{
- lPortalContainerNames.add(name);
+ // The portal container has been disabled so the related portal container
definition
+ // will be ignored
+ continue;
}
+ boolean hasChanged = false;
+ lPortalContainerNames.add(name);
if (first)
{
first = false;
@@ -1020,8 +1132,10 @@
}
initializeSettings(definition, true);
}
- if (!mDefinitions.containsKey(defaultDefinition.getName()))
+ if (mDefinitions.isEmpty())
{
+ // Add the default portal container name
+ lPortalContainerNames.add(defaultDefinition.getName());
// Apply the changes corresponding to the default definition
applyChanges(defaultDefinition);
initializeSettings(defaultDefinition, false);
@@ -1031,8 +1145,18 @@
// dependencies have been defined
registerDependencies(defaultDefinition, mScopes);
}
+ if (!portalContainerNamesDisabled.isEmpty())
+ {
+ if (PropertyManager.isDevelopping())
+ {
+ log.warn("No portal container definition has been registered, the old
behavior is" +
+ " then expected so you cannot disable any portal container. The
list of" +
+ " portal containers to disable will be ignored");
+ }
+ portalContainerNamesDisabled = Collections.unmodifiableSet(new
HashSet<String>());
+ }
}
- this.portalContainerNames = Collections.unmodifiableList(lPortalContainerNames);
+ this.portalContainerNames = Collections.unmodifiableSet(lPortalContainerNames);
this.scopes = Collections.unmodifiableMap(mScopes);
// clear the changes
changes.clear();
Added:
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java
(rev 0)
+++
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java 2010-08-19
17:11:10 UTC (rev 2953)
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2003-2010 eXo Platform SAS.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not,
see<http://www.gnu.org/licenses/>.
+ */
+package org.exoplatform.container.definition;
+
+import org.exoplatform.container.component.BaseComponentPlugin;
+import org.exoplatform.container.xml.InitParams;
+import org.exoplatform.container.xml.ValuesParam;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * This class allows you to dynamically disable one or several portal containers.
+ *
+ * Created by The eXo Platform SAS
+ * Author : Nicolas Filotto
+ * nicolas.filotto(a)exoplatform.com
+ * 9 juil. 2010
+ */
+public class PortalContainerDefinitionDisablePlugin extends BaseComponentPlugin
+{
+
+ /**
+ * A set of specific portal container names that we want to disable.
+ */
+ private Set<String> names;
+
+ @SuppressWarnings("unchecked")
+ public PortalContainerDefinitionDisablePlugin(InitParams params)
+ {
+ ValuesParam vsp = params.getValuesParam("names");
+ if (vsp != null && !vsp.getValues().isEmpty())
+ {
+ this.names = new HashSet<String>(vsp.getValues());
+ }
+ }
+
+ public Set<String> getNames()
+ {
+ return names;
+ }
+}
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/AbstractHttpServlet.java
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/AbstractHttpServlet.java 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/AbstractHttpServlet.java 2010-08-19
17:11:10 UTC (rev 2953)
@@ -18,10 +18,13 @@
*/
package org.exoplatform.container.web;
+import org.exoplatform.commons.utils.PropertyManager;
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.container.PortalContainer;
import org.exoplatform.container.RootContainer;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
import java.io.IOException;
@@ -40,6 +43,10 @@
*/
public abstract class AbstractHttpServlet extends HttpServlet
{
+ /**
+ * The logger
+ */
+ private static final Log log =
ExoLogger.getLogger("exo.kernel.container.AbstractHttpServlet");
/**
* Serial Version ID.
@@ -102,16 +109,25 @@
ExoContainerContext.setCurrentContainer(container);
hasBeenSet = true;
}
- if (requirePortalEnvironment() && container instanceof PortalContainer)
+ if (requirePortalEnvironment())
{
- if (PortalContainer.getInstanceIfPresent() == null)
+ final String ctxName = config.getServletContext().getServletContextName();
+ if (!PortalContainer.isPortalContainerNameDisabled(ctxName) &&
container instanceof PortalContainer)
{
- // The portal container has not been set
- PortalContainer.setInstance((PortalContainer)container);
- hasBeenSet = true;
+ if (PortalContainer.getInstanceIfPresent() == null)
+ {
+ // The portal container has not been set
+ PortalContainer.setInstance((PortalContainer)container);
+ hasBeenSet = true;
+ }
+ // Set the full classloader of the portal container
+
Thread.currentThread().setContextClassLoader(((PortalContainer)container).getPortalClassLoader());
}
- // Set the full classloader of the portal container
-
Thread.currentThread().setContextClassLoader(((PortalContainer)container).getPortalClassLoader());
+ else
+ {
+ onPortalEnvironmentError(req, res);
+ return;
+ }
}
onService(container, req, res);
}
@@ -168,6 +184,26 @@
}
/**
+ * Allow the sub classed to execute a task when the portal environment could not be
set
+ * because no related portal container could be found
+ * @param req the {@link HttpServletRequest}
+ * @param res the {@link HttpServletResponse}
+ */
+ protected void onPortalEnvironmentError(HttpServletRequest req, HttpServletResponse
res) throws ServletException,
+ IOException
+ {
+ if (PropertyManager.isDevelopping())
+ {
+ log.info("The portal environment could not be set for the webapp
'"
+ + config.getServletContext().getServletContextName()
+ + "' because this servlet context has not been defined as a "
+ + "dependency of any portal container or it is a disabled portal"
+ + " container, the target URI was " + req.getRequestURI());
+ }
+ res.sendError(HttpServletResponse.SC_NOT_FOUND);
+ }
+
+ /**
* @return Gives the {@link ExoContainer} that fits best with the current context
*/
protected final ExoContainer getContainer()
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/AbstractHttpSessionListener.java
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/AbstractHttpSessionListener.java 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/AbstractHttpSessionListener.java 2010-08-19
17:11:10 UTC (rev 2953)
@@ -18,10 +18,13 @@
*/
package org.exoplatform.container.web;
+import org.exoplatform.commons.utils.PropertyManager;
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.container.PortalContainer;
import org.exoplatform.container.RootContainer;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@@ -34,6 +37,10 @@
*/
public abstract class AbstractHttpSessionListener implements HttpSessionListener
{
+ /**
+ * The logger
+ */
+ private static final Log log =
ExoLogger.getLogger("exo.kernel.container.AbstractHttpSessionListener");
/**
* @see
javax.servlet.http.HttpSessionListener#sessionCreated(javax.servlet.http.HttpSessionEvent)
@@ -57,16 +64,31 @@
ExoContainerContext.setCurrentContainer(container);
hasBeenSet = true;
}
- if (requirePortalEnvironment() && container instanceof PortalContainer)
+ if (requirePortalEnvironment())
{
- if (PortalContainer.getInstanceIfPresent() == null)
+ final String ctxName =
event.getSession().getServletContext().getServletContextName();
+ if (!PortalContainer.isPortalContainerNameDisabled(ctxName) &&
container instanceof PortalContainer)
{
- // The portal container has not been set
- PortalContainer.setInstance((PortalContainer)container);
- hasBeenSet = true;
+ if (PortalContainer.getInstanceIfPresent() == null)
+ {
+ // The portal container has not been set
+ PortalContainer.setInstance((PortalContainer)container);
+ hasBeenSet = true;
+ }
+ // Set the full classloader of the portal container
+
Thread.currentThread().setContextClassLoader(((PortalContainer)container).getPortalClassLoader());
}
- // Set the full classloader of the portal container
-
Thread.currentThread().setContextClassLoader(((PortalContainer)container).getPortalClassLoader());
+ else
+ {
+ if (PropertyManager.isDevelopping())
+ {
+ log.info("The portal environment could not be set for the webapp
'" + ctxName
+ + "' because this servlet context has not been defined as a
"
+ + "dependency of any portal container or it is a disabled
portal"
+ + " container, the sessionCreated event will be ignored");
+ }
+ return;
+ }
}
onSessionCreated(container, event);
}
@@ -112,16 +134,31 @@
ExoContainerContext.setCurrentContainer(container);
hasBeenSet = true;
}
- if (requirePortalEnvironment() && container instanceof PortalContainer)
+ if (requirePortalEnvironment())
{
- if (PortalContainer.getInstanceIfPresent() == null)
+ final String ctxName =
event.getSession().getServletContext().getServletContextName();
+ if (!PortalContainer.isPortalContainerNameDisabled(ctxName) &&
container instanceof PortalContainer)
{
- // The portal container has not been set
- PortalContainer.setInstance((PortalContainer)container);
- hasBeenSet = true;
+ if (PortalContainer.getInstanceIfPresent() == null)
+ {
+ // The portal container has not been set
+ PortalContainer.setInstance((PortalContainer)container);
+ hasBeenSet = true;
+ }
+ // Set the full classloader of the portal container
+
Thread.currentThread().setContextClassLoader(((PortalContainer)container).getPortalClassLoader());
}
- // Set the full classloader of the portal container
-
Thread.currentThread().setContextClassLoader(((PortalContainer)container).getPortalClassLoader());
+ else
+ {
+ if (PropertyManager.isDevelopping())
+ {
+ log.info("The portal environment could not be set for the webapp
'" + ctxName
+ + "' because this servlet context has not been defined as a
"
+ + "dependency of any portal container or it is a disabled
portal"
+ + " container, the sessionDestroyed event will be
ignored");
+ }
+ return;
+ }
}
onSessionDestroyed(container, event);
}
Added:
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/PortalContainerFilter.java
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/PortalContainerFilter.java
(rev 0)
+++
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/web/PortalContainerFilter.java 2010-08-19
17:11:10 UTC (rev 2953)
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2003-2010 eXo Platform SAS.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not,
see<http://www.gnu.org/licenses/>.
+ */
+package org.exoplatform.container.web;
+
+import org.exoplatform.commons.utils.PropertyManager;
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
+import java.io.IOException;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * This filter will allow to prevent to any accesses to a web application corresponding
to a
+ * {@link PortalContainer} that has been disabled.
+ *
+ * Created by The eXo Platform SAS
+ * Author : Nicolas Filotto
+ * nicolas.filotto(a)exoplatform.com
+ * 8 juil. 2010
+ */
+public class PortalContainerFilter extends AbstractFilter
+{
+ /**
+ * The logger
+ */
+ private static final Log log =
ExoLogger.getLogger("exo.kernel.container.PortalContainerFilter");
+
+ /**
+ * @see javax.servlet.Filter#destroy()
+ */
+ public void destroy()
+ {
+ }
+
+ /**
+ * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
javax.servlet.ServletResponse, javax.servlet.FilterChain)
+ */
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain
chain) throws IOException,
+ ServletException
+ {
+ if (PortalContainer.isPortalContainerNameDisabled(servletContextName))
+ {
+ // The current portal container has been disabled
+ onPortalContainerDisabled(request, response, chain);
+ return;
+ }
+
+ chain.doFilter(request, response);
+ }
+
+ /**
+ * Allow the sub classed to execute a task when a user try to access to a
+ * web application corresponding to a {@link PortalContainer} that has been disabled.
+ * @param request the {@link ServletRequest}
+ * @param response the {@link ServletResponse}
+ * @param response the {@link FilterChain}
+ */
+ protected void onPortalContainerDisabled(ServletRequest request, ServletResponse
response, FilterChain chain)
+ throws IOException, ServletException
+ {
+ if (PropertyManager.isDevelopping())
+ {
+ log.info("The portal container corresponding to the webapp '" +
servletContextName
+ + "' is disabled, thus the request is cancelled: target URI was
"
+ + ((HttpServletRequest)request).getRequestURI());
+ }
+ ((HttpServletResponse)response).sendError(HttpServletResponse.SC_NOT_FOUND);
+ }
+}
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/TestPortalContainer.java
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/TestPortalContainer.java 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/TestPortalContainer.java 2010-08-19
17:11:10 UTC (rev 2953)
@@ -43,7 +43,7 @@
assertEquals("myRest", portal.getRestContextName());
assertEquals("my-exo-domain", portal.getRealmName());
- assertTrue(PortalContainer.isPortalContainerName("myPortal"));
+ assertFalse(PortalContainer.isPortalContainerName("myPortal"));
assertTrue(PortalContainer.isPortalContainerName("portal"));
assertFalse(PortalContainer.isPortalContainerName("foo"));
@@ -73,7 +73,7 @@
assertEquals("myRest",
PortalContainer.getRestContextName("foo"));
assertEquals("my-exo-domain",
PortalContainer.getRealmName("foo"));
- assertTrue(PortalContainer.isPortalContainerName("myPortal"));
+ assertFalse(PortalContainer.isPortalContainerName("myPortal"));
assertTrue(PortalContainer.isPortalContainerName("portal"));
assertFalse(PortalContainer.isPortalContainerName("foo"));
@@ -84,7 +84,7 @@
assertEquals("myRest", PortalContainer.getCurrentRestContextName());
assertEquals("my-exo-domain", PortalContainer.getCurrentRealmName());
- assertTrue(PortalContainer.isPortalContainerName("myPortal"));
+ assertFalse(PortalContainer.isPortalContainerName("myPortal"));
assertTrue(PortalContainer.isPortalContainerName("portal"));
assertFalse(PortalContainer.isPortalContainerName("foo"));
}
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java 2010-08-19
17:11:10 UTC (rev 2953)
@@ -48,6 +48,9 @@
assertEquals(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
config.getDefaultPortalContainer());
assertEquals(PortalContainerConfig.DEFAULT_REST_CONTEXT_NAME,
config.getDefaultRestContext());
assertEquals(PortalContainerConfig.DEFAULT_REALM_NAME,
config.getDefaultRealmName());
+ assertTrue(config.isPortalContainerName("portal"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal-dpcdef"));
assertFalse(config.hasDefinition());
rootContainer =
createRootContainer("portal-container-config-with-default-values.xml");
@@ -56,6 +59,9 @@
assertEquals("myPortal", config.getDefaultPortalContainer());
assertEquals("myRest", config.getDefaultRestContext());
assertEquals("my-exo-domain", config.getDefaultRealmName());
+ assertFalse(config.isPortalContainerName("portal"));
+ assertTrue(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal-dpcdef"));
assertFalse(config.hasDefinition());
rootContainer =
@@ -65,6 +71,9 @@
assertEquals("myPortal-dpcdef", config.getDefaultPortalContainer());
assertEquals("myRest-dpcdef", config.getDefaultRestContext());
assertEquals("my-exo-domain-dpcdef", config.getDefaultRealmName());
+ assertFalse(config.isPortalContainerName("portal"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
assertFalse(config.hasDefinition());
rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
@@ -205,6 +214,7 @@
assertFalse(config.isPortalContainerName("myPortal"));
assertFalse(config.isPortalContainerName("myPortal-pcdef"));
assertTrue(config.isPortalContainerName(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME));
+
// Needed for backward compatibility
assertTrue(config.isScopeValid(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
"foo"));
assertFalse(config.isScopeValid("foo", "foo"));
@@ -212,6 +222,16 @@
assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));
assertFalse(config.hasDefinition());
+ // Unregister the portal container
+ rootContainer =
createRootContainer("portal-container-config-with-no-default-values.xml",
"disable-pc");
+ config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertEquals(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
config.getPortalContainerName("foo"));
+
assertTrue(config.isPortalContainerName(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME));
+ assertTrue(config.isScopeValid(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
"foo"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME, names.get(0));
+
// Empty with AddDependencies, AddDependenciesBefore and AddDependenciesAfter
String[] profiles =
{"AddDependencies", "AddDependenciesBefore-No-Target",
"AddDependenciesBefore-With-Fake-Target",
@@ -234,12 +254,14 @@
assertTrue(names != null && !names.isEmpty());
assertEquals(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
names.get(0));
names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && names.isEmpty());
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
names.get(0));
names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && names.isEmpty());
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
names.get(0));
assertEquals(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
config.getPortalContainerName("foo"));
- assertNull(config.getPortalContainerName("myPortal"));
- assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertEquals(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
config.getPortalContainerName("myPortal"));
+ assertEquals(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
config.getPortalContainerName("myPortal-pcdef"));
assertEquals(PortalContainerConfig.DEFAULT_REST_CONTEXT_NAME,
config.getRestContextName("foo"));
assertEquals(PortalContainerConfig.DEFAULT_REST_CONTEXT_NAME,
config.getRestContextName("myPortal"));
assertEquals(PortalContainerConfig.DEFAULT_REST_CONTEXT_NAME,
config.getRestContextName("myPortal-pcdef"));
@@ -256,6 +278,16 @@
assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));
assertTrue(config.isScopeValid(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
"foo"));
assertFalse(config.hasDefinition());
+
+ // Unregister the portal container
+ rootContainer =
createRootContainer("portal-container-config-with-no-default-values2.xml",
profile, "disable-pc");
+ config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertEquals(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
config.getPortalContainerName("foo"));
+
assertTrue(config.isPortalContainerName(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME));
+
assertTrue(config.isScopeValid(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
"foo"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(PortalContainerConfig.DEFAULT_PORTAL_CONTAINER_NAME,
names.get(0));
}
// Without dependencies
rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
@@ -264,16 +296,14 @@
assertNull(config.getDependencies("myPortal"));
assertNull(config.getDependencies("myPortal-pcdef"));
names = config.getPortalContainerNames("foo");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal", names.get(0));
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal", names.get(0));
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("myPortal-pcdef");
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal-pcdef", names.get(0));
- assertEquals("myPortal",
config.getPortalContainerName("foo"));
- assertEquals("myPortal",
config.getPortalContainerName("myPortal"));
+ assertNull(config.getPortalContainerName("foo"));
+ assertNull(config.getPortalContainerName("myPortal"));
assertEquals("myPortal-pcdef",
config.getPortalContainerName("myPortal-pcdef"));
assertEquals("myRest", config.getRestContextName("foo"));
assertEquals("myRest", config.getRestContextName("myPortal"));
@@ -282,16 +312,24 @@
assertEquals("my-exo-domain",
config.getRealmName("myPortal"));
assertEquals("my-exo-domain-pcdef",
config.getRealmName("myPortal-pcdef"));
assertFalse(config.isPortalContainerName("foo"));
- assertTrue(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal"));
assertTrue(config.isPortalContainerName("myPortal-pcdef"));
// Needed for backward compatibility
assertFalse(config.isScopeValid("foo", "foo"));
- assertTrue(config.isScopeValid("myPortal", "foo"));
+ assertFalse(config.isScopeValid("myPortal", "foo"));
assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));
- assertTrue(config.isScopeValid("myPortal", "myPortal"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal"));
assertTrue(config.isScopeValid("myPortal-pcdef",
"myPortal-pcdef"));
assertTrue(config.hasDefinition());
-
+ // Unregister the portal container
+ rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml",
"disable-pc");
+ config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef",
"myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+
// Without dependencies and with no portal container name
rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def.xml");
config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -319,6 +357,15 @@
assertFalse(config.isPortalContainerName("foo"));
assertTrue(config.isPortalContainerName("myPortal"));
assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ // Unregister the portal container
+ rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def.xml",
"disable-pc");
+ config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertEquals("myPortal",
config.getPortalContainerName("foo"));
+ assertTrue(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isScopeValid("myPortal", "foo"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals("myPortal", names.get(0));
// Without dependencies and with no rest context name an realm name
rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def2.xml");
@@ -327,16 +374,14 @@
assertNull(config.getDependencies("myPortal"));
assertNull(config.getDependencies("myPortal-pcdef"));
names = config.getPortalContainerNames("foo");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal", names.get(0));
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal", names.get(0));
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("myPortal-pcdef");
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal-pcdef", names.get(0));
- assertEquals("myPortal",
config.getPortalContainerName("foo"));
- assertEquals("myPortal",
config.getPortalContainerName("myPortal"));
+ assertNull(config.getPortalContainerName("foo"));
+ assertNull(config.getPortalContainerName("myPortal"));
assertEquals("myPortal-pcdef",
config.getPortalContainerName("myPortal-pcdef"));
assertEquals("myRest", config.getRestContextName("foo"));
assertEquals("myRest", config.getRestContextName("myPortal"));
@@ -345,30 +390,37 @@
assertEquals("my-exo-domain",
config.getRealmName("myPortal"));
assertEquals("my-exo-domain",
config.getRealmName("myPortal-pcdef"));
assertFalse(config.isPortalContainerName("foo"));
- assertTrue(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal"));
assertTrue(config.isPortalContainerName("myPortal-pcdef"));
// Needed for backward compatibility
assertFalse(config.isScopeValid("foo", "foo"));
- assertTrue(config.isScopeValid("myPortal", "foo"));
+ assertFalse(config.isScopeValid("myPortal", "foo"));
assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));
- assertTrue(config.isScopeValid("myPortal", "myPortal"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal"));
assertTrue(config.isScopeValid("myPortal-pcdef",
"myPortal-pcdef"));
assertTrue(config.hasDefinition());
+ // Unregister the portal container
+ rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def2.xml",
"disable-pc");
+ config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef",
"myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
// Without dependencies and with default portal container definition
rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
deps = config.getDependencies("foo");
- assertTrue(deps != null && deps.size() == 1 &&
deps.contains("fooX"));
+ assertNull(deps);
deps = config.getDependencies("myPortal");
- assertTrue(deps != null && deps.size() == 1 &&
deps.contains("fooX"));
+ assertNull(deps);
deps = config.getDependencies("myPortal-pcdef");
assertTrue(deps != null && deps.size() == 1 &&
deps.contains("fooX"));
names = config.getPortalContainerNames("fooX");
assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
+ assertEquals(1, names.size());
assertTrue(names.contains("myPortal-pcdef"));
names = config.getPortalContainerNames("foo");
assertTrue(names != null && names.isEmpty());
@@ -393,6 +445,17 @@
assertFalse(config.isScopeValid("myPortal", "fooX"));
assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
assertTrue(config.hasDefinition());
+ // Unregister the portal container
+ rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
"disable-pc");
+ config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef",
"myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ assertFalse(config.isScopeValid("myPortal-pcdef", "fooX"));
+ names = config.getPortalContainerNames("fooX");
+ assertTrue(names != null && names.isEmpty());
profiles =
new String[]{"AddDependencies",
"AddDependenciesBefore-No-Target",
"AddDependenciesBefore-With-Fake-Target",
@@ -407,6 +470,10 @@
"with-profiles", profile);
config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
deps = config.getDependencies("foo");
+ assertNull(deps);
+ deps = config.getDependencies("myPortal");
+ assertNull(deps);
+ deps = config.getDependencies("myPortal-pcdef");
assertTrue(deps != null && deps.size() == 2 &&
deps.contains("fooX") && deps.contains("foo"));
int index = deps.indexOf("foo");
if (profile.equals("AddDependenciesBefore-No-Target")
@@ -419,25 +486,20 @@
{
assertEquals(1, index);
}
- deps = config.getDependencies("myPortal");
- assertTrue(deps != null && deps.size() == 2 &&
deps.contains("fooX") && deps.contains("foo"));
- deps = config.getDependencies("myPortal-pcdef");
- assertTrue(deps != null && deps.size() == 2 &&
deps.contains("fooX") && deps.contains("foo"));
names = config.getPortalContainerNames("fooX");
assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
+ assertEquals(1, names.size());
assertTrue(names.contains("myPortal-pcdef"));
names = config.getPortalContainerNames("foo");
assertTrue(names != null && !names.isEmpty());
assertEquals(1, names.size());
- assertEquals("myPortal-dpcdef", names.get(0));
+ assertEquals("myPortal-pcdef", names.get(0));
names = config.getPortalContainerNames("myPortal");
assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("myPortal-pcdef");
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal-pcdef", names.get(0));
- assertEquals("myPortal-dpcdef",
config.getPortalContainerName("foo"));
+ assertEquals("myPortal-pcdef",
config.getPortalContainerName("foo"));
assertNull(config.getPortalContainerName("myPortal"));
assertEquals("myPortal-pcdef",
config.getPortalContainerName("myPortal-pcdef"));
assertEquals("myRest-dpcdef",
config.getRestContextName("foo"));
@@ -453,6 +515,22 @@
assertFalse(config.isScopeValid("myPortal", "fooX"));
assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
assertTrue(config.hasDefinition());
+ // Unregister the portal container
+ rootContainer = createRootContainer(
+
"portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
+ "with-profiles", profile, "disable-pc");
+ config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getPortalContainerName("foo"));
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef",
"myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ assertFalse(config.isScopeValid("myPortal-pcdef", "fooX"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && names.isEmpty());
+ names = config.getPortalContainerNames("fooX");
+ assertTrue(names != null && names.isEmpty());
}
// With dependencies
@@ -466,13 +544,12 @@
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal-pcdef", names.get(0));
names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal", names.get(0));
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("myPortal-pcdef");
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal-pcdef", names.get(0));
assertEquals("myPortal-pcdef",
config.getPortalContainerName("foo"));
- assertEquals("myPortal",
config.getPortalContainerName("myPortal"));
+ assertNull(config.getPortalContainerName("myPortal"));
assertEquals("myPortal-pcdef",
config.getPortalContainerName("myPortal-pcdef"));
assertEquals("myRest", config.getRestContextName("foo"));
assertEquals("myRest", config.getRestContextName("myPortal"));
@@ -481,7 +558,7 @@
assertEquals("my-exo-domain",
config.getRealmName("myPortal"));
assertEquals("my-exo-domain-pcdef",
config.getRealmName("myPortal-pcdef"));
assertFalse(config.isPortalContainerName("foo"));
- assertTrue(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal"));
assertTrue(config.isPortalContainerName("myPortal-pcdef"));
assertFalse(config.isScopeValid("foo", "foo"));
assertFalse(config.isScopeValid("myPortal", "foo"));
@@ -489,6 +566,18 @@
assertFalse(config.isScopeValid("myPortal-pcdef",
"myPortal"));
assertFalse(config.isScopeValid("myPortal-pcdef", "fooY"));
assertTrue(config.hasDefinition());
+ // Unregister the portal container
+ rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-portal-def2.xml",
"disable-pc");
+ config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getPortalContainerName("foo"));
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef",
"myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && names.isEmpty());
for (String profile : profiles)
{
@@ -497,9 +586,9 @@
"with-profiles", profile);
config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
deps = config.getDependencies("foo");
- assertTrue(deps != null && deps.size() == 1 &&
deps.contains("fooX"));
+ assertNull(deps);
deps = config.getDependencies("myPortal");
- assertTrue(deps != null && deps.size() == 1 &&
deps.contains("fooX"));
+ assertNull(deps);
deps = config.getDependencies("myPortal-pcdef");
assertTrue(deps != null && deps.size() == 4);
int index = deps.indexOf("fooX");
@@ -523,13 +612,12 @@
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal-pcdef", names.get(0));
names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal", names.get(0));
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("myPortal-pcdef");
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal-pcdef", names.get(0));
assertEquals("myPortal-pcdef",
config.getPortalContainerName("foo"));
- assertEquals("myPortal",
config.getPortalContainerName("myPortal"));
+ assertNull(config.getPortalContainerName("myPortal"));
assertEquals("myPortal-pcdef",
config.getPortalContainerName("myPortal-pcdef"));
assertEquals("myRest", config.getRestContextName("foo"));
assertEquals("myRest",
config.getRestContextName("myPortal"));
@@ -538,12 +626,25 @@
assertEquals("my-exo-domain",
config.getRealmName("myPortal"));
assertEquals("my-exo-domain-pcdef",
config.getRealmName("myPortal-pcdef"));
assertFalse(config.isPortalContainerName("foo"));
- assertTrue(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal"));
assertTrue(config.isPortalContainerName("myPortal-pcdef"));
assertFalse(config.isScopeValid("foo", "foo"));
assertFalse(config.isScopeValid("myPortal", "foo"));
assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
assertTrue(config.hasDefinition());
+ // Unregister the portal container
+ rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-portal-def2.xml",
+ "with-profiles", profile, "disable-pc");
+ config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getPortalContainerName("foo"));
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef",
"myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && names.isEmpty());
}
// With dependencies and with default portal container definition
@@ -551,27 +652,24 @@
createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def2.xml");
config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
deps = config.getDependencies("foo");
- assertTrue(deps != null && deps.size() == 1 &&
deps.contains("fooX"));
+ assertNull(deps);
deps = config.getDependencies("myPortal");
- assertTrue(deps != null && deps.size() == 1 &&
deps.contains("fooX"));
+ assertNull(deps);
deps = config.getDependencies("myPortal-pcdef");
assertTrue(deps != null && deps.size() == 3);
names = config.getPortalContainerNames("fooX");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertEquals("myPortal", names.get(0));
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("foo");
assertTrue(names != null && !names.isEmpty());
assertEquals(1, names.size());
assertEquals("myPortal-pcdef", names.get(0));
names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal", names.get(0));
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("myPortal-pcdef");
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal-pcdef", names.get(0));
assertEquals("myPortal-pcdef",
config.getPortalContainerName("foo"));
- assertEquals("myPortal",
config.getPortalContainerName("myPortal"));
+ assertNull(config.getPortalContainerName("myPortal"));
assertEquals("myPortal-pcdef",
config.getPortalContainerName("myPortal-pcdef"));
assertEquals("myRest", config.getRestContextName("foo"));
assertEquals("myRest", config.getRestContextName("myPortal"));
@@ -580,12 +678,24 @@
assertEquals("my-exo-domain",
config.getRealmName("myPortal"));
assertEquals("my-exo-domain-pcdef",
config.getRealmName("myPortal-pcdef"));
assertFalse(config.isPortalContainerName("foo"));
- assertTrue(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal"));
assertTrue(config.isPortalContainerName("myPortal-pcdef"));
assertFalse(config.isScopeValid("foo", "foo"));
assertFalse(config.isScopeValid("myPortal", "foo"));
assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
assertTrue(config.hasDefinition());
+ // Unregister the portal container
+ rootContainer =
createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def2.xml",
"disable-pc");
+ config =
(PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getPortalContainerName("foo"));
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef",
"myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && names.isEmpty());
}
public void testSettings()
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def.xml
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def.xml 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def.xml 2010-08-19
17:11:10 UTC (rev 2953)
@@ -57,4 +57,23 @@
</init-params>
</component-plugin>
</external-component-plugins>
+ <external-component-plugins>
+ <!-- The full qualified name of the PortalContainerConfig -->
+ <target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
+ <component-plugin profiles="disable-pc">
+ <!-- The name of the plugin -->
+ <name>Disable a PortalContainer</name>
+ <!-- The name of the method to call on the PortalContainerConfig in order to
register the changes on the PortalContainerDefinitions -->
+ <set-method>registerDisablePlugin</set-method>
+ <!-- The full qualified name of the PortalContainerDefinitionDisablePlugin -->
+ <type>org.exoplatform.container.definition.PortalContainerDefinitionDisablePlugin</type>
+ <init-params>
+ <!-- The list of the name of the portal containers to disable -->
+ <values-param>
+ <name>names</name>
+ <value>myPortal</value>
+ </values-param>
+ </init-params>
+ </component-plugin>
+ </external-component-plugins>
</configuration>
\ No newline at end of file
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml 2010-08-19
17:11:10 UTC (rev 2953)
@@ -53,4 +53,23 @@
</init-params>
</component-plugin>
</external-component-plugins>
+ <external-component-plugins>
+ <!-- The full qualified name of the PortalContainerConfig -->
+ <target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
+ <component-plugin profiles="disable-pc">
+ <!-- The name of the plugin -->
+ <name>Disable a PortalContainer</name>
+ <!-- The name of the method to call on the PortalContainerConfig in order to
register the changes on the PortalContainerDefinitions -->
+ <set-method>registerDisablePlugin</set-method>
+ <!-- The full qualified name of the PortalContainerDefinitionDisablePlugin -->
+ <type>org.exoplatform.container.definition.PortalContainerDefinitionDisablePlugin</type>
+ <init-params>
+ <!-- The list of the name of the portal containers to disable -->
+ <values-param>
+ <name>names</name>
+ <value>myPortal-pcdef</value>
+ </values-param>
+ </init-params>
+ </component-plugin>
+ </external-component-plugins>
</configuration>
\ No newline at end of file
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml 2010-08-19
17:11:10 UTC (rev 2953)
@@ -107,7 +107,7 @@
<values-param>
<name>apply.specific</name>
<value>fake</value>
- <value>myPortal-dpcdef</value>
+ <value>myPortal-pcdef</value>
</values-param>
<object-param profiles="AddDependencies">
<name>change</name>
@@ -219,4 +219,23 @@
</init-params>
</component-plugin>
</external-component-plugins>
+ <external-component-plugins>
+ <!-- The full qualified name of the PortalContainerConfig -->
+ <target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
+ <component-plugin profiles="disable-pc">
+ <!-- The name of the plugin -->
+ <name>Disable a PortalContainer</name>
+ <!-- The name of the method to call on the PortalContainerConfig in order to
register the changes on the PortalContainerDefinitions -->
+ <set-method>registerDisablePlugin</set-method>
+ <!-- The full qualified name of the PortalContainerDefinitionDisablePlugin -->
+ <type>org.exoplatform.container.definition.PortalContainerDefinitionDisablePlugin</type>
+ <init-params>
+ <!-- The list of the name of the portal containers to disable -->
+ <values-param>
+ <name>names</name>
+ <value>myPortal-pcdef</value>
+ </values-param>
+ </init-params>
+ </component-plugin>
+ </external-component-plugins>
</configuration>
\ No newline at end of file
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def2.xml
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def2.xml 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def2.xml 2010-08-19
17:11:10 UTC (rev 2953)
@@ -89,4 +89,23 @@
</init-params>
</component-plugin>
</external-component-plugins>
+ <external-component-plugins>
+ <!-- The full qualified name of the PortalContainerConfig -->
+ <target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
+ <component-plugin profiles="disable-pc">
+ <!-- The name of the plugin -->
+ <name>Disable a PortalContainer</name>
+ <!-- The name of the method to call on the PortalContainerConfig in order to
register the changes on the PortalContainerDefinitions -->
+ <set-method>registerDisablePlugin</set-method>
+ <!-- The full qualified name of the PortalContainerDefinitionDisablePlugin -->
+ <type>org.exoplatform.container.definition.PortalContainerDefinitionDisablePlugin</type>
+ <init-params>
+ <!-- The list of the name of the portal containers to disable -->
+ <values-param>
+ <name>names</name>
+ <value>myPortal-pcdef</value>
+ </values-param>
+ </init-params>
+ </component-plugin>
+ </external-component-plugins>
</configuration>
\ No newline at end of file
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml 2010-08-19
17:11:10 UTC (rev 2953)
@@ -61,4 +61,23 @@
</init-params>
</component-plugin>
</external-component-plugins>
+ <external-component-plugins>
+ <!-- The full qualified name of the PortalContainerConfig -->
+ <target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
+ <component-plugin profiles="disable-pc">
+ <!-- The name of the plugin -->
+ <name>Disable a PortalContainer</name>
+ <!-- The name of the method to call on the PortalContainerConfig in order to
register the changes on the PortalContainerDefinitions -->
+ <set-method>registerDisablePlugin</set-method>
+ <!-- The full qualified name of the PortalContainerDefinitionDisablePlugin -->
+ <type>org.exoplatform.container.definition.PortalContainerDefinitionDisablePlugin</type>
+ <init-params>
+ <!-- The list of the name of the portal containers to disable -->
+ <values-param>
+ <name>names</name>
+ <value>myPortal-pcdef</value>
+ </values-param>
+ </init-params>
+ </component-plugin>
+ </external-component-plugins>
</configuration>
\ No newline at end of file
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def2.xml
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def2.xml 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def2.xml 2010-08-19
17:11:10 UTC (rev 2953)
@@ -196,4 +196,23 @@
</init-params>
</component-plugin>
</external-component-plugins>
+ <external-component-plugins>
+ <!-- The full qualified name of the PortalContainerConfig -->
+ <target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
+ <component-plugin profiles="disable-pc">
+ <!-- The name of the plugin -->
+ <name>Disable a PortalContainer</name>
+ <!-- The name of the method to call on the PortalContainerConfig in order to
register the changes on the PortalContainerDefinitions -->
+ <set-method>registerDisablePlugin</set-method>
+ <!-- The full qualified name of the PortalContainerDefinitionDisablePlugin -->
+ <type>org.exoplatform.container.definition.PortalContainerDefinitionDisablePlugin</type>
+ <init-params>
+ <!-- The list of the name of the portal containers to disable -->
+ <values-param>
+ <name>names</name>
+ <value>myPortal-pcdef</value>
+ </values-param>
+ </init-params>
+ </component-plugin>
+ </external-component-plugins>
</configuration>
\ No newline at end of file
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values.xml
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values.xml 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values.xml 2010-08-19
17:11:10 UTC (rev 2953)
@@ -56,4 +56,23 @@
</init-params>
</component-plugin>
</external-component-plugins>
+ <external-component-plugins>
+ <!-- The full qualified name of the PortalContainerConfig -->
+ <target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
+ <component-plugin profiles="disable-pc">
+ <!-- The name of the plugin -->
+ <name>Disable a PortalContainer</name>
+ <!-- The name of the method to call on the PortalContainerConfig in order to
register the changes on the PortalContainerDefinitions -->
+ <set-method>registerDisablePlugin</set-method>
+ <!-- The full qualified name of the PortalContainerDefinitionDisablePlugin -->
+ <type>org.exoplatform.container.definition.PortalContainerDefinitionDisablePlugin</type>
+ <init-params>
+ <!-- The list of the name of the portal containers to disable -->
+ <values-param>
+ <name>names</name>
+ <value>portal</value>
+ </values-param>
+ </init-params>
+ </component-plugin>
+ </external-component-plugins>
</configuration>
\ No newline at end of file
Modified:
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values2.xml
===================================================================
---
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values2.xml 2010-08-19
14:26:58 UTC (rev 2952)
+++
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values2.xml 2010-08-19
17:11:10 UTC (rev 2953)
@@ -103,4 +103,23 @@
</init-params>
</component-plugin>
</external-component-plugins>
+ <external-component-plugins>
+ <!-- The full qualified name of the PortalContainerConfig -->
+ <target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
+ <component-plugin profiles="disable-pc">
+ <!-- The name of the plugin -->
+ <name>Disable a PortalContainer</name>
+ <!-- The name of the method to call on the PortalContainerConfig in order to
register the changes on the PortalContainerDefinitions -->
+ <set-method>registerDisablePlugin</set-method>
+ <!-- The full qualified name of the PortalContainerDefinitionDisablePlugin -->
+ <type>org.exoplatform.container.definition.PortalContainerDefinitionDisablePlugin</type>
+ <init-params>
+ <!-- The list of the name of the portal containers to disable -->
+ <values-param>
+ <name>names</name>
+ <value>portal</value>
+ </values-param>
+ </init-params>
+ </component-plugin>
+ </external-component-plugins>
</configuration>
\ No newline at end of file