[exo-jcr-commits] exo-jcr SVN: r3309 - kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition and 2 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Oct 21 05:40:09 EDT 2010


Author: nfilotto
Date: 2010-10-21 05:40:08 -0400 (Thu, 21 Oct 2010)
New Revision: 3309

Modified:
   jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java
   kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java
   kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml
   kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml
   kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml
   kernel/trunk/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/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml
   kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml
Log:
EXOJCR-1011: Now most of the value of the parameters can be set thanks to variables defined in the file loaded by the PropertyConfiguration which is by default configuration.properties in GateIn. Refer to the doc for more details

Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml	2010-10-21 09:33:22 UTC (rev 3308)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml	2010-10-21 09:40:08 UTC (rev 3309)
@@ -454,28 +454,28 @@
           <tgroup cols="2">
             <tbody>
               <row>
-                <entry>default.portal.container</entry>
+                <entry>default.portal.container (*)</entry>
 
                 <entry>The name of the default portal container. This field is
                 optional.</entry>
               </row>
 
               <row>
-                <entry>default.rest.context</entry>
+                <entry>default.rest.context (*)</entry>
 
                 <entry>The name of the default rest
                 <envar>ServletContext</envar>. This field is optional.</entry>
               </row>
 
               <row>
-                <entry>default.realm.name</entry>
+                <entry>default.realm.name (*)</entry>
 
                 <entry>The name of the default realm. This field is
                 optional.</entry>
               </row>
 
               <row>
-                <entry>ignore.unregistered.webapp</entry>
+                <entry>ignore.unregistered.webapp (*)</entry>
 
                 <entry>Indicates whether the unregistered webapps have to be
                 ignored. If a webapp has not been registered as a dependency
@@ -510,6 +510,15 @@
           </tgroup>
         </table>
 
+        <note>
+          <para>All the value of the parameters marked with a (*) can be
+          defined thanks to System properties like any values in configuration
+          files but also thanks to variables loaded by the
+          <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+          default, it would be all the variables defined in the file
+          <emphasis>configuration.properties</emphasis>.</para>
+        </note>
+
         <para>A new <envar>PortalContainerDefinition</envar> can be defined at
         the <envar>RootContainer</envar> level thanks to an external plugin,
         see an example below:<programlisting>  &lt;external-component-plugins&gt;
@@ -615,14 +624,14 @@
           <tgroup cols="2">
             <tbody>
               <row>
-                <entry>name</entry>
+                <entry>name (*)</entry>
 
                 <entry>The name of the portal container. This field is
                 mandatory .</entry>
               </row>
 
               <row>
-                <entry>restContextName</entry>
+                <entry>restContextName (*)</entry>
 
                 <entry>The name of the context name of the rest web
                 application. This field is optional. The default value will be
@@ -631,7 +640,7 @@
               </row>
 
               <row>
-                <entry>realmName</entry>
+                <entry>realmName (*)</entry>
 
                 <entry>The name of the realm. This field is optional. The
                 default value will be defined at the
@@ -757,7 +766,7 @@
           <tgroup cols="2">
             <tbody>
               <row>
-                <entry>name</entry>
+                <entry>name (*)</entry>
 
                 <entry>The name of the portal container. This field is
                 optional. The default portal name will be:<orderedlist>
@@ -783,7 +792,7 @@
               </row>
 
               <row>
-                <entry>restContextName</entry>
+                <entry>restContextName (*)</entry>
 
                 <entry>The name of the context name of the rest web
                 application. This field is optional. The default value wil
@@ -810,7 +819,7 @@
               </row>
 
               <row>
-                <entry>realmName</entry>
+                <entry>realmName (*)</entry>
 
                 <entry>The name of the realm. This field is optional. The
                 default value wil be:<orderedlist>
@@ -891,6 +900,15 @@
           </tgroup>
         </table>
 
+        <note>
+          <para>All the value of the parameters marked with a (*) can be
+          defined thanks to System properties like any values in configuration
+          files but also thanks to variables loaded by the
+          <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+          default, it would be all the variables defined in the file
+          <emphasis>configuration.properties</emphasis>.</para>
+        </note>
+
         <para>Internal and external settings are both optional, but if we give
         a non empty value for both the application will merge the settings. If
         the same setting name exists in both settings, we apply the following
@@ -1102,7 +1120,7 @@
           <tgroup cols="2">
             <tbody>
               <row>
-                <entry>apply.all</entry>
+                <entry>apply.all (*)</entry>
 
                 <entry>Indicates whether the changes have to be applied to all
                 the portal containers or not. The default value of this field
@@ -1111,7 +1129,7 @@
               </row>
 
               <row>
-                <entry>apply.default</entry>
+                <entry>apply.default (*)</entry>
 
                 <entry>Indicates whether the changes have to be applied to the
                 default portal container or not. The default value of this
@@ -1120,7 +1138,7 @@
               </row>
 
               <row>
-                <entry>apply.specific</entry>
+                <entry>apply.specific (*)</entry>
 
                 <entry>A set of specific portal container names to which we
                 want to apply the changes. This field is a
@@ -1143,6 +1161,15 @@
           </tgroup>
         </table>
 
+        <note>
+          <para>All the value of the parameters marked with a (*) can be
+          defined thanks to System properties like any values in configuration
+          files but also thanks to variables loaded by the
+          <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+          default, it would be all the variables defined in the file
+          <emphasis>configuration.properties</emphasis>.</para>
+        </note>
+
         <para>To identify the portal containers to which the changes have to
         be applied, we use the follwing algorithm:</para>
 
@@ -1534,7 +1561,7 @@
           <tgroup cols="2">
             <tbody>
               <row>
-                <entry>names</entry>
+                <entry>names (*)</entry>
 
                 <entry>The list of the name of the portal containers to
                 disable.</entry>
@@ -1543,6 +1570,15 @@
           </tgroup>
         </table>
 
+        <note>
+          <para>All the value of the parameters marked with a (*) can be
+          defined thanks to System properties like any values in configuration
+          files but also thanks to variables loaded by the
+          <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+          default, it would be all the variables defined in the file
+          <emphasis>configuration.properties</emphasis>.</para>
+        </note>
+
         <para>To prevent any accesses to a web application corresponding to
         <envar>PortalContainer</envar> that has been disabled, you need to
         make sure that the following Http Filter (or a sub class of it) has

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java	2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java	2010-10-21 09:40:08 UTC (rev 3309)
@@ -205,8 +205,10 @@
       this.serverInfo = serverInfo;
       this.defaultDefinition = create(params);
       this.ignoreUnregisteredWebapp =
-         params != null && params.getValueParam("ignore.unregistered.webapp") != null
-            && Boolean.valueOf(params.getValueParam("ignore.unregistered.webapp").getValue());
+         params != null
+            && params.getValueParam("ignore.unregistered.webapp") != null
+            && Boolean.valueOf(Deserializer.resolveVariables(params.getValueParam("ignore.unregistered.webapp")
+               .getValue()));
    }
 
    /**
@@ -266,7 +268,7 @@
          if (vp != null && vp.getValue().trim().length() > 0)
          {
             // A realm name has been defined in the value parameter, thus we use it
-            def.setRealmName(vp.getValue().trim());
+            def.setRealmName(Deserializer.resolveVariables(vp.getValue().trim()));
          }
       }
       else
@@ -294,7 +296,7 @@
          if (vp != null && vp.getValue().trim().length() > 0)
          {
             // A rest context name has been defined in the value parameter, thus we use it
-            def.setRestContextName(vp.getValue().trim());
+            def.setRestContextName(Deserializer.resolveVariables(vp.getValue().trim()));
          }
       }
       else
@@ -322,7 +324,7 @@
          if (vp != null && vp.getValue().trim().length() > 0)
          {
             // A name has been defined in the value parameter, thus we use it
-            def.setName(vp.getValue().trim());
+            def.setName(Deserializer.resolveVariables(vp.getValue().trim()));
          }
       }
       else

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java	2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java	2010-10-21 09:40:08 UTC (rev 3309)
@@ -19,9 +19,11 @@
 package org.exoplatform.container.definition;
 
 import org.exoplatform.container.PortalContainer;
+import org.exoplatform.container.xml.Deserializer;
 
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.servlet.ServletContext;
 
@@ -39,6 +41,11 @@
 {
 
    /**
+    * Indicates whether the current instance has been initialized
+    */
+   private final AtomicBoolean initialized = new AtomicBoolean();
+   
+   /**
     * The name of the related {@link PortalContainer}
     */
    private String name;
@@ -72,6 +79,7 @@
 
    public String getName()
    {
+      init();
       return name;
    }
 
@@ -92,6 +100,7 @@
 
    public String getRealmName()
    {
+      init();
       return realmName;
    }
 
@@ -102,6 +111,7 @@
 
    public String getRestContextName()
    {
+      init();
       return restContextName;
    }
 
@@ -129,4 +139,26 @@
    {
       this.externalSettingsPath = externalSettingsPath;
    }
+   
+   /**
+    * Ensure that all the parameter values have been resolved in order to allow to
+    * use variables to define their values. It will be executed only if it has the current
+    * instance has not been initialized
+    */
+   private void init()
+   {
+      if (!initialized.get())
+      {
+         synchronized (this)
+         {
+            if (!initialized.get())
+            {
+               setName(Deserializer.resolveVariables(name));
+               setRestContextName(Deserializer.resolveVariables(restContextName));
+               setRealmName(Deserializer.resolveVariables(realmName));
+               initialized.set(true);
+            }
+         }
+      }
+   }   
 }

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java	2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java	2010-10-21 09:40:08 UTC (rev 3309)
@@ -17,6 +17,7 @@
 package org.exoplatform.container.definition;
 
 import org.exoplatform.container.component.BaseComponentPlugin;
+import org.exoplatform.container.xml.Deserializer;
 import org.exoplatform.container.xml.InitParams;
 import org.exoplatform.container.xml.ValueParam;
 import org.exoplatform.container.xml.ValuesParam;
@@ -62,17 +63,22 @@
       ValueParam vp = params.getValueParam("apply.all");
       if (vp != null && vp.getValue().length() > 0)
       {
-         this.all = Boolean.valueOf(vp.getValue());
+         this.all = Boolean.valueOf(Deserializer.resolveVariables(vp.getValue()));
       }
       vp = params.getValueParam("apply.default");
       if (vp != null && vp.getValue().length() > 0)
       {
-         this.bDefault = Boolean.valueOf(vp.getValue());
+         this.bDefault = Boolean.valueOf(Deserializer.resolveVariables(vp.getValue()));
       }
       ValuesParam vsp = params.getValuesParam("apply.specific");
       if (vsp != null && !vsp.getValues().isEmpty())
       {
-         this.names = new HashSet<String>(vsp.getValues());
+         this.names = new HashSet<String>(vsp.getValues().size());
+         List<String> lnames = vsp.getValues();
+         for (String name : lnames)
+         {
+            names.add(Deserializer.resolveVariables(name));
+         }
       }
       this.changes = params.getObjectParamValues(PortalContainerDefinitionChange.class);
    }

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java	2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java	2010-10-21 09:40:08 UTC (rev 3309)
@@ -17,10 +17,12 @@
 package org.exoplatform.container.definition;
 
 import org.exoplatform.container.component.BaseComponentPlugin;
+import org.exoplatform.container.xml.Deserializer;
 import org.exoplatform.container.xml.InitParams;
 import org.exoplatform.container.xml.ValuesParam;
 
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -45,7 +47,12 @@
       ValuesParam vsp = params.getValuesParam("names");
       if (vsp != null && !vsp.getValues().isEmpty())
       {
-         this.names = new HashSet<String>(vsp.getValues());
+         this.names = new HashSet<String>(vsp.getValues().size());
+         List<String> lnames = vsp.getValues();
+         for (String name : lnames)
+         {
+            names.add(Deserializer.resolveVariables(name));
+         }         
       }
    }
 

Modified: kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java	2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java	2010-10-21 09:40:08 UTC (rev 3309)
@@ -16,6 +16,7 @@
  */
 package org.exoplatform.container.definition;
 
+import org.exoplatform.commons.utils.PropertyManager;
 import org.exoplatform.container.RootContainer;
 import org.exoplatform.container.jmx.AbstractTestContainer;
 import org.exoplatform.container.monitor.jvm.J2EEServerInfo;
@@ -64,25 +65,49 @@
       assertFalse(config.isPortalContainerName("myPortal-dpcdef"));
       assertFalse(config.hasDefinition());
 
-      rootContainer =
-         createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
-      config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+      try
+      {
+         rootContainer =
+            createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
+         config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
 
-      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());
+         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());
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_default.portal.container");
+         System.getProperties().remove("_default.rest.context");
+         System.getProperties().remove("_default.realm.name");
+         System.getProperties().remove("_portal.container");
+         System.getProperties().remove("_rest.context");
+         System.getProperties().remove("_realm.name");
+         PropertyManager.refresh();
+      }
 
-      rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
-      config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+      try
+      {
+         rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
+         config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
 
-      assertEquals("myPortal", config.getDefaultPortalContainer());
-      assertEquals("myRest", config.getDefaultRestContext());
-      assertEquals("my-exo-domain", config.getDefaultRealmName());
-      assertTrue(config.hasDefinition());
+         assertEquals("myPortal", config.getDefaultPortalContainer());
+         assertEquals("myRest", config.getDefaultRestContext());
+         assertEquals("my-exo-domain", config.getDefaultRealmName());
+         assertTrue(config.hasDefinition());
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_ignore.unregistered.webapp.true");
+         System.getProperties().remove("_ignore.unregistered.webapp.false");
+         PropertyManager.refresh();
+      }
 
       rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-defs.xml");
       config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -92,14 +117,23 @@
       assertEquals("my-exo-domain", config.getDefaultRealmName());
       assertTrue(config.hasDefinition());
 
-      rootContainer =
-         createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
-      config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+      try
+      {
+         rootContainer =
+            createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
+         config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
 
-      assertEquals("myPortal-dpcdef", config.getDefaultPortalContainer());
-      assertEquals("myRest-dpcdef", config.getDefaultRestContext());
-      assertEquals("my-exo-domain-dpcdef", config.getDefaultRealmName());
-      assertTrue(config.hasDefinition());
+         assertEquals("myPortal-dpcdef", config.getDefaultPortalContainer());
+         assertEquals("myRest-dpcdef", config.getDefaultRestContext());
+         assertEquals("my-exo-domain-dpcdef", config.getDefaultRealmName());
+         assertTrue(config.hasDefinition());
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_portal.container");
+         PropertyManager.refresh();
+      }
 
       rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-def.xml");
       config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -109,13 +143,22 @@
       assertEquals("my-exo-domain-pcdef", config.getDefaultRealmName());
       assertTrue(config.hasDefinition());
 
-      rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-defs.xml");
-      config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+      try
+      {
+         rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-defs.xml");
+         config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
 
-      assertEquals("portal", config.getDefaultPortalContainer());
-      assertEquals("myRest", config.getDefaultRestContext());
-      assertEquals("my-exo-domain", config.getDefaultRealmName());
-      assertTrue(config.hasDefinition());
+         assertEquals("portal", config.getDefaultPortalContainer());
+         assertEquals("myRest", config.getDefaultRestContext());
+         assertEquals("my-exo-domain", config.getDefaultRealmName());
+         assertTrue(config.hasDefinition());
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_value.true");
+         PropertyManager.refresh();
+      }
 
       rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-defs2.xml");
       config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -165,6 +208,9 @@
       finally
       {
          TestPortalContainerDefinitionChange.NAMES.clear();
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_value.true");
+         PropertyManager.refresh();         
       }
 
       try
@@ -178,6 +224,9 @@
       finally
       {
          TestPortalContainerDefinitionChange.NAMES.clear();
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_value.true");
+         PropertyManager.refresh();        
       }
    }
 
@@ -292,123 +341,153 @@
       String[] ignoreWebappProfiles = {"ignore.unregistered.webapp-default", "ignore.unregistered.webapp-false", "ignore.unregistered.webapp-true"};
       for (int i = 0; i < ignoreWebappProfiles.length; i++)
       {
-         rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", ignoreWebappProfiles[i]);
-         config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
-         assertNull(config.getDependencies("foo"));
-         assertNull(config.getDependencies("myPortal"));
-         assertNull(config.getDependencies("myPortal-pcdef"));
-         names = config.getPortalContainerNames("foo");
-         if (i < ignoreWebappProfiles.length - 1)
+         try
          {
-            // Default behavior
+            rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", ignoreWebappProfiles[i]);
+            config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+            assertNull(config.getDependencies("foo"));
+            assertNull(config.getDependencies("myPortal"));
+            assertNull(config.getDependencies("myPortal-pcdef"));
+            names = config.getPortalContainerNames("foo");
+            if (i < ignoreWebappProfiles.length - 1)
+            {
+               // Default behavior
+               assertTrue(names != null && !names.isEmpty());
+               assertEquals(2, names.size());
+               assertTrue(names.contains("myPortal"));
+               assertTrue(names.contains("myPortal-pcdef"));
+               assertEquals("myPortal", config.getPortalContainerName("foo"));         
+            }
+            else
+            {
+               // Ignore webapp needed for EXOJCR-795
+               assertTrue(names != null && names.isEmpty());
+               assertNull(config.getPortalContainerName("foo"));
+            }
+            names = config.getPortalContainerNames("myPortal");
             assertTrue(names != null && !names.isEmpty());
-            assertEquals(2, names.size());
-            assertTrue(names.contains("myPortal"));
-            assertTrue(names.contains("myPortal-pcdef"));
-            assertEquals("myPortal", config.getPortalContainerName("foo"));         
+            assertEquals("myPortal", names.get(0));
+            names = config.getPortalContainerNames("myPortal-pcdef");
+            assertTrue(names != null && !names.isEmpty());
+            assertEquals("myPortal-pcdef", names.get(0));
+            assertEquals("myPortal", config.getPortalContainerName("myPortal"));
+            assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+            assertEquals("myRest", config.getRestContextName("foo"));
+            assertEquals("myRest", config.getRestContextName("myPortal"));
+            assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
+            assertEquals("my-exo-domain", config.getRealmName("foo"));
+            assertEquals("my-exo-domain", config.getRealmName("myPortal"));
+            assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
+            assertFalse(config.isPortalContainerName("foo"));
+            assertTrue(config.isPortalContainerName("myPortal"));
+            assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+            // Needed for backward compatibility
+            assertFalse(config.isScopeValid("foo", "foo"));
+            if (i < ignoreWebappProfiles.length - 1)
+            {
+               // Default behavior
+               assertTrue(config.isScopeValid("myPortal", "foo"));
+               assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));         
+            }
+            else
+            {
+               // Ignore webapp needed for EXOJCR-795
+               assertFalse(config.isScopeValid("myPortal", "foo"));
+               assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));         
+            }
+            assertTrue(config.isScopeValid("myPortal", "myPortal"));
+            assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+            assertTrue(config.hasDefinition());
          }
-         else
+         finally
          {
-            // Ignore webapp needed for EXOJCR-795
-            assertTrue(names != null && names.isEmpty());
-            assertNull(config.getPortalContainerName("foo"));
-         }
+            // Clear the System Properties added by the PropertyConfigurator
+            System.getProperties().remove("_ignore.unregistered.webapp.true");
+            System.getProperties().remove("_ignore.unregistered.webapp.false");
+            PropertyManager.refresh();
+         }         
+      }
+
+      try
+      {
+         // 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"));
+         assertEquals("myPortal", config.getPortalContainerName("myPortal"));
+         assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+         assertTrue(config.isPortalContainerName("myPortal"));
+         assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+         assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+         assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+         assertTrue(config.isScopeValid("myPortal", "myPortal"));
+         names = config.getPortalContainerNames("myPortal-pcdef");
+         assertTrue(names != null && names.isEmpty());
          names = config.getPortalContainerNames("myPortal");
          assertTrue(names != null && !names.isEmpty());
-         assertEquals("myPortal", names.get(0));
-         names = config.getPortalContainerNames("myPortal-pcdef");
-         assertTrue(names != null && !names.isEmpty());
-         assertEquals("myPortal-pcdef", names.get(0));
-         assertEquals("myPortal", config.getPortalContainerName("myPortal"));
+         assertEquals(1, names.size());
+         assertTrue(names.contains("myPortal"));
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_ignore.unregistered.webapp.true");
+         System.getProperties().remove("_ignore.unregistered.webapp.false");
+         PropertyManager.refresh();
+      }      
+      try
+      {
+         // Unregister the default portal container
+         rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", "disable-pc2");
+         config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
          assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
-         assertEquals("myRest", config.getRestContextName("foo"));
-         assertEquals("myRest", config.getRestContextName("myPortal"));
-         assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
-         assertEquals("my-exo-domain", config.getRealmName("foo"));
-         assertEquals("my-exo-domain", config.getRealmName("myPortal"));
-         assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
-         assertFalse(config.isPortalContainerName("foo"));
-         assertTrue(config.isPortalContainerName("myPortal"));
+         assertNull(config.getPortalContainerName("myPortal"));
          assertTrue(config.isPortalContainerName("myPortal-pcdef"));
-         // Needed for backward compatibility
-         assertFalse(config.isScopeValid("foo", "foo"));
-         if (i < ignoreWebappProfiles.length - 1)
-         {
-            // Default behavior
-            assertTrue(config.isScopeValid("myPortal", "foo"));
-            assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));         
-         }
-         else
-         {
-            // Ignore webapp needed for EXOJCR-795
-            assertFalse(config.isScopeValid("myPortal", "foo"));
-            assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));         
-         }
-         assertTrue(config.isScopeValid("myPortal", "myPortal"));
+         assertFalse(config.isPortalContainerName("myPortal"));
          assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
-         assertTrue(config.hasDefinition());         
+         assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+         assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+         assertFalse(config.isScopeValid("myPortal", "myPortal"));
+         names = config.getPortalContainerNames("myPortal-pcdef");
+         assertTrue(names != null && !names.isEmpty());
+         assertEquals(1, names.size());
+         assertTrue(names.contains("myPortal-pcdef")); 
+         names = config.getPortalContainerNames("myPortal");
+         assertTrue(names != null && names.isEmpty());
+         config.disablePortalContainer("myPortal-pcdef");
+         assertNull(config.getPortalContainerName("myPortal-pcdef"));
+         assertNull(config.getPortalContainerName("myPortal"));
+         assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+         assertFalse(config.isPortalContainerName("myPortal"));
+         assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+         assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+         assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+         assertFalse(config.isScopeValid("myPortal", "myPortal"));
+         names = config.getPortalContainerNames("myPortal-pcdef");
+         assertTrue(names != null && names.isEmpty());
+         names = config.getPortalContainerNames("myPortal");
+         assertTrue(names != null && names.isEmpty());
+         config.registerPortalContainerName("myPortal-pcdef");
+         assertNull(config.getPortalContainerName("myPortal-pcdef"));
+         assertNull(config.getPortalContainerName("myPortal"));
+         assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+         assertFalse(config.isPortalContainerName("myPortal"));
+         assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+         assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+         assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+         assertFalse(config.isScopeValid("myPortal", "myPortal"));
+         names = config.getPortalContainerNames("myPortal-pcdef");
+         assertTrue(names != null && names.isEmpty());
+         names = config.getPortalContainerNames("myPortal");
+         assertTrue(names != null && names.isEmpty());
       }
-
-      // 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"));
-      assertEquals("myPortal", config.getPortalContainerName("myPortal"));
-      assertFalse(config.isPortalContainerName("myPortal-pcdef"));
-      assertTrue(config.isPortalContainerName("myPortal"));
-      assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
-      assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
-      assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
-      assertTrue(config.isScopeValid("myPortal", "myPortal"));
-      names = config.getPortalContainerNames("myPortal-pcdef");
-      assertTrue(names != null && names.isEmpty());
-      names = config.getPortalContainerNames("myPortal");
-      assertTrue(names != null && !names.isEmpty());
-      assertEquals(1, names.size());
-      assertTrue(names.contains("myPortal"));      
-      // Unregister the default portal container
-      rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", "disable-pc2");
-      config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
-      assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
-      assertNull(config.getPortalContainerName("myPortal"));
-      assertTrue(config.isPortalContainerName("myPortal-pcdef"));
-      assertFalse(config.isPortalContainerName("myPortal"));
-      assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
-      assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
-      assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
-      assertFalse(config.isScopeValid("myPortal", "myPortal"));
-      names = config.getPortalContainerNames("myPortal-pcdef");
-      assertTrue(names != null && !names.isEmpty());
-      assertEquals(1, names.size());
-      assertTrue(names.contains("myPortal-pcdef")); 
-      names = config.getPortalContainerNames("myPortal");
-      assertTrue(names != null && names.isEmpty());
-      config.disablePortalContainer("myPortal-pcdef");
-      assertNull(config.getPortalContainerName("myPortal-pcdef"));
-      assertNull(config.getPortalContainerName("myPortal"));
-      assertFalse(config.isPortalContainerName("myPortal-pcdef"));
-      assertFalse(config.isPortalContainerName("myPortal"));
-      assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
-      assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
-      assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
-      assertFalse(config.isScopeValid("myPortal", "myPortal"));
-      names = config.getPortalContainerNames("myPortal-pcdef");
-      assertTrue(names != null && names.isEmpty());
-      names = config.getPortalContainerNames("myPortal");
-      assertTrue(names != null && names.isEmpty());
-      config.registerPortalContainerName("myPortal-pcdef");
-      assertNull(config.getPortalContainerName("myPortal-pcdef"));
-      assertNull(config.getPortalContainerName("myPortal"));
-      assertFalse(config.isPortalContainerName("myPortal-pcdef"));
-      assertFalse(config.isPortalContainerName("myPortal"));
-      assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
-      assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
-      assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
-      assertFalse(config.isScopeValid("myPortal", "myPortal"));
-      names = config.getPortalContainerNames("myPortal-pcdef");
-      assertTrue(names != null && names.isEmpty());
-      names = config.getPortalContainerNames("myPortal");
-      assertTrue(names != null && names.isEmpty());
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_ignore.unregistered.webapp.true");
+         System.getProperties().remove("_ignore.unregistered.webapp.false");
+         PropertyManager.refresh();
+      }
       
       // Without dependencies and with no portal container name
       rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def.xml");
@@ -447,181 +526,87 @@
       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");
-      config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
-      assertNull(config.getDependencies("foo"));
-      assertNull(config.getDependencies("myPortal"));
-      assertNull(config.getDependencies("myPortal-pcdef"));
-      names = config.getPortalContainerNames("foo");
-      assertTrue(names != null && !names.isEmpty());
-      assertEquals(2, names.size());
-      assertTrue(names.contains("myPortal"));
-      assertTrue(names.contains("myPortal-pcdef"));
-      names = config.getPortalContainerNames("myPortal");
-      assertTrue(names != null && !names.isEmpty());
-      assertEquals("myPortal", names.get(0));
-      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"));
-      assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
-      assertEquals("myRest", config.getRestContextName("foo"));
-      assertEquals("myRest", config.getRestContextName("myPortal"));
-      assertEquals("myRest", config.getRestContextName("myPortal-pcdef"));
-      assertEquals("my-exo-domain", config.getRealmName("foo"));
-      assertEquals("my-exo-domain", config.getRealmName("myPortal"));
-      assertEquals("my-exo-domain", config.getRealmName("myPortal-pcdef"));
-      assertFalse(config.isPortalContainerName("foo"));
-      assertTrue(config.isPortalContainerName("myPortal"));
-      assertTrue(config.isPortalContainerName("myPortal-pcdef"));
-      // Needed for backward compatibility
-      assertFalse(config.isScopeValid("foo", "foo"));
-      assertTrue(config.isScopeValid("myPortal", "foo"));
-      assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
-      assertTrue(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());      
+      try
+      {
+         // 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");
+         config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+         assertNull(config.getDependencies("foo"));
+         assertNull(config.getDependencies("myPortal"));
+         assertNull(config.getDependencies("myPortal-pcdef"));
+         names = config.getPortalContainerNames("foo");
+         assertTrue(names != null && !names.isEmpty());
+         assertEquals(2, names.size());
+         assertTrue(names.contains("myPortal"));
+         assertTrue(names.contains("myPortal-pcdef"));
+         names = config.getPortalContainerNames("myPortal");
+         assertTrue(names != null && !names.isEmpty());
+         assertEquals("myPortal", names.get(0));
+         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"));
+         assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+         assertEquals("myRest", config.getRestContextName("foo"));
+         assertEquals("myRest", config.getRestContextName("myPortal"));
+         assertEquals("myRest", config.getRestContextName("myPortal-pcdef"));
+         assertEquals("my-exo-domain", config.getRealmName("foo"));
+         assertEquals("my-exo-domain", config.getRealmName("myPortal"));
+         assertEquals("my-exo-domain", config.getRealmName("myPortal-pcdef"));
+         assertFalse(config.isPortalContainerName("foo"));
+         assertTrue(config.isPortalContainerName("myPortal"));
+         assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+         // Needed for backward compatibility
+         assertFalse(config.isScopeValid("foo", "foo"));
+         assertTrue(config.isScopeValid("myPortal", "foo"));
+         assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
+         assertTrue(config.isScopeValid("myPortal", "myPortal"));
+         assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+         assertTrue(config.hasDefinition());
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_default.portal.container");
+         System.getProperties().remove("_default.rest.context");
+         System.getProperties().remove("_default.realm.name");
+         System.getProperties().remove("_portal.container");
+         PropertyManager.refresh();
+      }
+      try
+      {
+         // 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());
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_default.portal.container");
+         System.getProperties().remove("_default.rest.context");
+         System.getProperties().remove("_default.realm.name");
+         System.getProperties().remove("_portal.container");
+         PropertyManager.refresh();
+      }      
 
-      // 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");
-      assertNull(deps);
-      deps = config.getDependencies("myPortal");
-      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"));
-      assertTrue(names.contains("myPortal-pcdef"));
-      names = config.getPortalContainerNames("foo");
-      assertTrue(names != null && !names.isEmpty());
-      assertEquals(2, names.size());
-      assertTrue(names.contains("myPortal-dpcdef"));
-      assertTrue(names.contains("myPortal-pcdef"));
-      names = config.getPortalContainerNames("myPortal");
-      assertTrue(names != null && !names.isEmpty());
-      assertEquals(2, names.size());
-      assertTrue(names.contains("myPortal-dpcdef"));
-      assertTrue(names.contains("myPortal-pcdef"));
-      names = config.getPortalContainerNames("myPortal-pcdef");
-      assertTrue(names != null && !names.isEmpty());
-      assertEquals("myPortal-pcdef", names.get(0));
-      assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
-      assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
-      assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
-      assertEquals("myRest-dpcdef", config.getRestContextName("foo"));
-      assertEquals("myRest-dpcdef", config.getRestContextName("myPortal"));
-      assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
-      assertEquals("my-exo-domain-dpcdef", config.getRealmName("foo"));
-      assertEquals("my-exo-domain-dpcdef", config.getRealmName("myPortal"));
-      assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
-      assertFalse(config.isPortalContainerName("foo"));
-      assertFalse(config.isPortalContainerName("myPortal"));
-      assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
-      assertTrue(config.isPortalContainerName("myPortal-pcdef"));
-      assertFalse(config.isScopeValid("foo", "fooX"));
-      assertFalse(config.isScopeValid("myPortal", "fooX"));
-      assertTrue(config.isScopeValid("myPortal-dpcdef", "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);
-      assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
-      assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
-      assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal-dpcdef"));
-      assertNull(config.getPortalContainerName("myPortal-pcdef"));
-      assertFalse(config.isPortalContainerName("foo"));
-      assertFalse(config.isPortalContainerName("myPortal"));
-      assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
-      assertFalse(config.isPortalContainerName("myPortal-pcdef"));
-      assertFalse(config.isScopeValid("foo", "fooX"));
-      assertFalse(config.isScopeValid("myPortal", "fooX"));
-      assertTrue(config.isScopeValid("myPortal-dpcdef", "fooX"));
-      assertFalse(config.isScopeValid("myPortal-pcdef", "fooX"));
-      assertTrue(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
-      assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
-      names = config.getPortalContainerNames("myPortal-pcdef");
-      assertTrue(names != null && names.isEmpty());      
-      names = config.getPortalContainerNames("myPortal-dpcdef");
-      assertTrue(names != null && !names.isEmpty());
-      assertEquals(1, names.size());
-      assertTrue(names.contains("myPortal-dpcdef"));
-      names = config.getPortalContainerNames("fooX");
-      assertTrue(names != null && !names.isEmpty());
-      assertEquals(1, names.size());
-      assertTrue(names.contains("myPortal-dpcdef"));
-      // Unregister the default portal container
-      rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml", "disable-pc2");
-      config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
-      assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
-      assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal"));
-      assertNull(config.getPortalContainerName("myPortal-dpcdef"));
-      assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
-      assertFalse(config.isPortalContainerName("foo"));
-      assertFalse(config.isPortalContainerName("myPortal"));
-      assertFalse(config.isPortalContainerName("myPortal-dpcdef"));
-      assertTrue(config.isPortalContainerName("myPortal-pcdef"));
-      assertFalse(config.isScopeValid("foo", "fooX"));
-      assertFalse(config.isScopeValid("myPortal", "fooX"));
-      assertFalse(config.isScopeValid("myPortal-dpcdef", "fooX"));
-      assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
-      assertFalse(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
-      assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
-      names = config.getPortalContainerNames("myPortal-pcdef");
-      assertTrue(names != null && !names.isEmpty());
-      assertEquals(1, names.size());
-      assertTrue(names.contains("myPortal-pcdef"));
-      names = config.getPortalContainerNames("myPortal-dpcdef");
-      assertTrue(names != null && names.isEmpty());      
-      names = config.getPortalContainerNames("fooX");
-      assertTrue(names != null && !names.isEmpty());
-      assertEquals(1, names.size());
-      assertTrue(names.contains("myPortal-pcdef"));
-      
-      profiles =
-         new String[]{"AddDependencies", "AddDependenciesBefore-No-Target", "AddDependenciesBefore-With-Fake-Target",
-            "AddDependenciesBefore-With-Target", "AddDependenciesAfter-No-Target",
-            "AddDependenciesAfter-With-Fake-Target", "AddDependenciesAfter-With-Target"};
-
-      for (String profile : profiles)
+      try
       {
+         // 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",
-               "with-profiles", profile);
+            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");
          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")
-            || profile.equals("AddDependenciesBefore-With-Fake-Target")
-            || profile.equals("AddDependenciesBefore-With-Target"))
-         {
-            assertEquals(0, index);
-         }
-         else
-         {
-            assertEquals(1, index);
-         }
+         assertTrue(deps != null && deps.size() == 1 && deps.contains("fooX"));
          names = config.getPortalContainerNames("fooX");
          assertTrue(names != null && !names.isEmpty());
          assertEquals(2, names.size());
@@ -640,7 +625,7 @@
          names = config.getPortalContainerNames("myPortal-pcdef");
          assertTrue(names != null && !names.isEmpty());
          assertEquals("myPortal-pcdef", names.get(0));
-         assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
+         assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
          assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
          assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
          assertEquals("myRest-dpcdef", config.getRestContextName("foo"));
@@ -651,15 +636,24 @@
          assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
          assertFalse(config.isPortalContainerName("foo"));
          assertFalse(config.isPortalContainerName("myPortal"));
+         assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
          assertTrue(config.isPortalContainerName("myPortal-pcdef"));
          assertFalse(config.isScopeValid("foo", "fooX"));
          assertFalse(config.isScopeValid("myPortal", "fooX"));
+         assertTrue(config.isScopeValid("myPortal-dpcdef", "fooX"));
          assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
          assertTrue(config.hasDefinition());
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_portal.container");
+         PropertyManager.refresh();
+      }
+      try
+      {
          // 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");
+         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);
          assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
          assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
@@ -681,18 +675,21 @@
          assertTrue(names != null && !names.isEmpty());
          assertEquals(1, names.size());
          assertTrue(names.contains("myPortal-dpcdef"));
-         names = config.getPortalContainerNames("foo");
-         assertTrue(names != null && !names.isEmpty());
-         assertEquals(1, names.size());
-         assertTrue(names.contains("myPortal-dpcdef"));
          names = config.getPortalContainerNames("fooX");
          assertTrue(names != null && !names.isEmpty());
          assertEquals(1, names.size());
          assertTrue(names.contains("myPortal-dpcdef"));
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_portal.container");
+         PropertyManager.refresh();
+      }
+      try
+      {
          // Unregister the default portal container
-         rootContainer = createRootContainer(
-            "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
-            "with-profiles", profile, "disable-pc2");
+         rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml", "disable-pc2");
          config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
          assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
          assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal"));
@@ -713,17 +710,177 @@
          assertEquals(1, names.size());
          assertTrue(names.contains("myPortal-pcdef"));
          names = config.getPortalContainerNames("myPortal-dpcdef");
-         assertTrue(names != null && names.isEmpty());
-         names = config.getPortalContainerNames("foo");
-         assertTrue(names != null && !names.isEmpty());
-         assertEquals(1, names.size());
-         assertTrue(names.contains("myPortal-pcdef"));        
+         assertTrue(names != null && names.isEmpty());      
          names = config.getPortalContainerNames("fooX");
          assertTrue(names != null && !names.isEmpty());
          assertEquals(1, names.size());
-         assertTrue(names.contains("myPortal-pcdef"));       
+         assertTrue(names.contains("myPortal-pcdef"));
       }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_portal.container");
+         PropertyManager.refresh();
+      }
+      
+      profiles =
+         new String[]{"AddDependencies", "AddDependenciesBefore-No-Target", "AddDependenciesBefore-With-Fake-Target",
+            "AddDependenciesBefore-With-Target", "AddDependenciesAfter-No-Target",
+            "AddDependenciesAfter-With-Fake-Target", "AddDependenciesAfter-With-Target"};
 
+      for (String profile : profiles)
+      {
+         try
+         {
+            rootContainer =
+               createRootContainer(
+                  "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
+                  "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")
+               || profile.equals("AddDependenciesBefore-With-Fake-Target")
+               || profile.equals("AddDependenciesBefore-With-Target"))
+            {
+               assertEquals(0, index);
+            }
+            else
+            {
+               assertEquals(1, index);
+            }
+            names = config.getPortalContainerNames("fooX");
+            assertTrue(names != null && !names.isEmpty());
+            assertEquals(2, names.size());
+            assertTrue(names.contains("myPortal-dpcdef"));
+            assertTrue(names.contains("myPortal-pcdef"));
+            names = config.getPortalContainerNames("foo");
+            assertTrue(names != null && !names.isEmpty());
+            assertEquals(2, names.size());
+            assertTrue(names.contains("myPortal-dpcdef"));
+            assertTrue(names.contains("myPortal-pcdef"));
+            names = config.getPortalContainerNames("myPortal");
+            assertTrue(names != null && !names.isEmpty());
+            assertEquals(2, names.size());
+            assertTrue(names.contains("myPortal-dpcdef"));
+            assertTrue(names.contains("myPortal-pcdef"));
+            names = config.getPortalContainerNames("myPortal-pcdef");
+            assertTrue(names != null && !names.isEmpty());
+            assertEquals("myPortal-pcdef", names.get(0));
+            assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
+            assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
+            assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+            assertEquals("myRest-dpcdef", config.getRestContextName("foo"));
+            assertEquals("myRest-dpcdef", config.getRestContextName("myPortal"));
+            assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
+            assertEquals("my-exo-domain-dpcdef", config.getRealmName("foo"));
+            assertEquals("my-exo-domain-dpcdef", config.getRealmName("myPortal"));
+            assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
+            assertFalse(config.isPortalContainerName("foo"));
+            assertFalse(config.isPortalContainerName("myPortal"));
+            assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+            assertFalse(config.isScopeValid("foo", "fooX"));
+            assertFalse(config.isScopeValid("myPortal", "fooX"));
+            assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
+            assertTrue(config.hasDefinition());
+         }
+         finally
+         {
+            // Clear the System Properties added by the PropertyConfigurator
+            System.getProperties().remove("_portal.container");
+            PropertyManager.refresh();
+         }
+         try
+         {
+            // 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);
+            assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
+            assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
+            assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal-dpcdef"));
+            assertNull(config.getPortalContainerName("myPortal-pcdef"));
+            assertFalse(config.isPortalContainerName("foo"));
+            assertFalse(config.isPortalContainerName("myPortal"));
+            assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
+            assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+            assertFalse(config.isScopeValid("foo", "fooX"));
+            assertFalse(config.isScopeValid("myPortal", "fooX"));
+            assertTrue(config.isScopeValid("myPortal-dpcdef", "fooX"));
+            assertFalse(config.isScopeValid("myPortal-pcdef", "fooX"));
+            assertTrue(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
+            assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+            names = config.getPortalContainerNames("myPortal-pcdef");
+            assertTrue(names != null && names.isEmpty());      
+            names = config.getPortalContainerNames("myPortal-dpcdef");
+            assertTrue(names != null && !names.isEmpty());
+            assertEquals(1, names.size());
+            assertTrue(names.contains("myPortal-dpcdef"));
+            names = config.getPortalContainerNames("foo");
+            assertTrue(names != null && !names.isEmpty());
+            assertEquals(1, names.size());
+            assertTrue(names.contains("myPortal-dpcdef"));
+            names = config.getPortalContainerNames("fooX");
+            assertTrue(names != null && !names.isEmpty());
+            assertEquals(1, names.size());
+            assertTrue(names.contains("myPortal-dpcdef"));
+         }
+         finally
+         {
+            // Clear the System Properties added by the PropertyConfigurator
+            System.getProperties().remove("_portal.container");
+            PropertyManager.refresh();
+         }
+         try
+         {
+            // Unregister the default portal container
+            rootContainer = createRootContainer(
+               "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
+               "with-profiles", profile, "disable-pc2");
+            config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+            assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
+            assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal"));
+            assertNull(config.getPortalContainerName("myPortal-dpcdef"));
+            assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+            assertFalse(config.isPortalContainerName("foo"));
+            assertFalse(config.isPortalContainerName("myPortal"));
+            assertFalse(config.isPortalContainerName("myPortal-dpcdef"));
+            assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+            assertFalse(config.isScopeValid("foo", "fooX"));
+            assertFalse(config.isScopeValid("myPortal", "fooX"));
+            assertFalse(config.isScopeValid("myPortal-dpcdef", "fooX"));
+            assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
+            assertFalse(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
+            assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+            names = config.getPortalContainerNames("myPortal-pcdef");
+            assertTrue(names != null && !names.isEmpty());
+            assertEquals(1, names.size());
+            assertTrue(names.contains("myPortal-pcdef"));
+            names = config.getPortalContainerNames("myPortal-dpcdef");
+            assertTrue(names != null && names.isEmpty());
+            names = config.getPortalContainerNames("foo");
+            assertTrue(names != null && !names.isEmpty());
+            assertEquals(1, names.size());
+            assertTrue(names.contains("myPortal-pcdef"));        
+            names = config.getPortalContainerNames("fooX");
+            assertTrue(names != null && !names.isEmpty());
+            assertEquals(1, names.size());
+            assertTrue(names.contains("myPortal-pcdef"));
+         }
+         finally
+         {
+            // Clear the System Properties added by the PropertyConfigurator
+            System.getProperties().remove("_portal.container");
+            PropertyManager.refresh();
+         }       
+      }
+
       // With dependencies
       rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def2.xml");
       config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -1025,76 +1182,109 @@
       assertEquals("my-exo-domain", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
 
       // Without settings, without portal definition and with default portal container definition
-      rootContainer =
-         createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
-      config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
-      assertNull(config.getSetting("foo", "foo"));
-      assertNull(config.getSetting("myPortal", "foo"));
-      assertNull(config.getSetting("myPortal-pcdef", "foo"));
-      assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
-      assertEquals("myPortal-dpcdef", config
-         .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
-      assertEquals("myPortal-dpcdef", config.getSetting("myPortal-pcdef",
-         PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
-      assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
-      assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
-      assertEquals("myRest-dpcdef", config
-         .getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
-      assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
-      assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
-      assertEquals("my-exo-domain-dpcdef", config
-         .getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
-      assertEquals("value0", config.getSetting("foo", "string"));
-      assertEquals(new Integer(100), config.getSetting("foo", "int"));
-      assertEquals(new Long(100), config.getSetting("foo", "long"));
-      assertEquals(new Double(100), config.getSetting("foo", "double"));
-      assertEquals(new Boolean(false), config.getSetting("foo", "boolean"));
-      assertEquals("value0", config.getSetting("myPortal", "string"));
-      assertEquals(new Integer(100), config.getSetting("myPortal", "int"));
-      assertEquals(new Long(100), config.getSetting("myPortal", "long"));
-      assertEquals(new Double(100), config.getSetting("myPortal", "double"));
-      assertEquals(new Boolean(false), config.getSetting("myPortal", "boolean"));
-      assertEquals("value0", config.getSetting("myPortal-pcdef", "string"));
-      assertEquals(new Integer(100), config.getSetting("myPortal-pcdef", "int"));
-      assertEquals(new Long(100), config.getSetting("myPortal-pcdef", "long"));
-      assertEquals(new Double(100), config.getSetting("myPortal-pcdef", "double"));
-      assertEquals(new Boolean(false), config.getSetting("myPortal-pcdef", "boolean"));
+      try
+      {
+         rootContainer =
+            createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
+         config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+         assertNull(config.getSetting("foo", "foo"));
+         assertNull(config.getSetting("myPortal", "foo"));
+         assertNull(config.getSetting("myPortal-pcdef", "foo"));
+         assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+         assertEquals("myPortal-dpcdef", config
+            .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+         assertEquals("myPortal-dpcdef", config.getSetting("myPortal-pcdef",
+            PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+         assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+         assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+         assertEquals("myRest-dpcdef", config
+            .getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+         assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
+         assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
+         assertEquals("my-exo-domain-dpcdef", config
+            .getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+         assertEquals("value0", config.getSetting("foo", "string"));
+         assertEquals(new Integer(100), config.getSetting("foo", "int"));
+         assertEquals(new Long(100), config.getSetting("foo", "long"));
+         assertEquals(new Double(100), config.getSetting("foo", "double"));
+         assertEquals(new Boolean(false), config.getSetting("foo", "boolean"));
+         assertEquals("value0", config.getSetting("myPortal", "string"));
+         assertEquals(new Integer(100), config.getSetting("myPortal", "int"));
+         assertEquals(new Long(100), config.getSetting("myPortal", "long"));
+         assertEquals(new Double(100), config.getSetting("myPortal", "double"));
+         assertEquals(new Boolean(false), config.getSetting("myPortal", "boolean"));
+         assertEquals("value0", config.getSetting("myPortal-pcdef", "string"));
+         assertEquals(new Integer(100), config.getSetting("myPortal-pcdef", "int"));
+         assertEquals(new Long(100), config.getSetting("myPortal-pcdef", "long"));
+         assertEquals(new Double(100), config.getSetting("myPortal-pcdef", "double"));
+         assertEquals(new Boolean(false), config.getSetting("myPortal-pcdef", "boolean"));
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_default.portal.container");
+         System.getProperties().remove("_default.rest.context");
+         System.getProperties().remove("_default.realm.name");
+         System.getProperties().remove("_portal.container");
+         System.getProperties().remove("_rest.context");
+         System.getProperties().remove("_realm.name");
+         PropertyManager.refresh();
+      }
 
-      // Without settings and with portal definition
-      rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
-      config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
-      assertNull(config.getSetting("foo", "foo"));
-      assertNull(config.getSetting("myPortal", "foo"));
-      assertNull(config.getSetting("myPortal-pcdef", "foo"));
-      assertEquals("myPortal", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
-      assertEquals("myPortal", config.getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
-      assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
-         PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
-      assertEquals("myRest", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
-      assertEquals("myRest", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
-      assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
-      assertEquals("my-exo-domain", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
-      assertEquals("my-exo-domain", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
-      assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+      try
+      {
+         // Without settings and with portal definition
+         rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
+         config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+         assertNull(config.getSetting("foo", "foo"));
+         assertNull(config.getSetting("myPortal", "foo"));
+         assertNull(config.getSetting("myPortal-pcdef", "foo"));
+         assertEquals("myPortal", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+         assertEquals("myPortal", config.getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+         assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
+            PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+         assertEquals("myRest", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+         assertEquals("myRest", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+         assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+         assertEquals("my-exo-domain", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
+         assertEquals("my-exo-domain", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
+         assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_ignore.unregistered.webapp.true");
+         System.getProperties().remove("_ignore.unregistered.webapp.false");
+         PropertyManager.refresh();
+      }
 
-      // Without settings, with portal definition and with default portal definition
-      rootContainer =
-         createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
-      config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
-      assertNull(config.getSetting("foo", "foo"));
-      assertNull(config.getSetting("myPortal", "foo"));
-      assertNull(config.getSetting("myPortal-pcdef", "foo"));
-      assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
-      assertEquals("myPortal-dpcdef", config
-         .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
-      assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
-         PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
-      assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
-      assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
-      assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
-      assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
-      assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
-      assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+      try
+      {
+         // Without settings, with portal definition and with default portal definition
+         rootContainer =
+            createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
+         config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+         assertNull(config.getSetting("foo", "foo"));
+         assertNull(config.getSetting("myPortal", "foo"));
+         assertNull(config.getSetting("myPortal-pcdef", "foo"));
+         assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+         assertEquals("myPortal-dpcdef", config
+            .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+         assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
+            PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+         assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+         assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+         assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+         assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
+         assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
+         assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+      }
+      finally
+      {
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_portal.container");
+         PropertyManager.refresh();
+      }
 
       // With internal settings
       rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-settings.xml");
@@ -1480,6 +1670,14 @@
       {
          System.getProperties().remove("TestPortalContainerConfig-string");
          System.getProperties().remove("TestPortalContainerConfig-int");
+         // Clear the System Properties added by the PropertyConfigurator
+         System.getProperties().remove("_default.portal.container");
+         System.getProperties().remove("_default.rest.context");
+         System.getProperties().remove("_default.realm.name");
+         System.getProperties().remove("_portal.container");
+         System.getProperties().remove("_rest.context");
+         System.getProperties().remove("_realm.name");
+         PropertyManager.refresh();
       }
 
       // With both settings internal and external, and with invalid values 

Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml	2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml	2010-10-21 09:40:08 UTC (rev 3309)
@@ -16,17 +16,17 @@
 			<!-- The name of the default portal container -->
 			<value-param>
 				<name>default.portal.container</name>
-				<value>myPortal</value>
+				<value>${_default.portal.container}</value>
 			</value-param>
 			<!-- The name of the default rest ServletContext -->
 			<value-param>
 				<name>default.rest.context</name>
-				<value>myRest</value>
+				<value>${_default.rest.context}</value>
 			</value-param>
 			<!-- The name of the default realm -->
 			<value-param>
 				<name>default.realm.name</name>
-				<value>my-exo-domain</value>
+				<value>${_default.realm.name}</value>
 			</value-param>
 			<!-- The default portal container definition -->
 			<!-- It cans be used to avoid duplicating configuration -->
@@ -142,6 +142,12 @@
 				<name>properties</name>
 				<property name="property_String" value="property_value_1" />
 				<property name="property_Int" value="60" />
+				<property name="_default.portal.container" value="myPortal" />
+				<property name="_default.rest.context" value="myRest" />
+				<property name="_default.realm.name" value="my-exo-domain" />
+				<property name="_portal.container" value="myPortal-pcdef" />
+				<property name="_rest.context" value="myRest-pcdef" />
+				<property name="_realm.name" value="my-exo-domain-pcdef" />
 			</properties-param>
 		</init-params>
 	</component>
@@ -161,15 +167,15 @@
 					<object type="org.exoplatform.container.definition.PortalContainerDefinition">
 						<!-- The name of the portal container -->
 						<field name="name">
-							<string>myPortal-pcdef</string>
+							<string>${_portal.container}</string>
 						</field>
 						<!-- The name of the context name of the rest web application -->
 						<field name="restContextName">
-							<string>myRest-pcdef</string>
+							<string>${_rest.context}</string>
 						</field>
 						<!-- The name of the realm -->
 						<field name="realmName">
-							<string>my-exo-domain-pcdef</string>
+							<string>${_realm.name}</string>
 						</field>
 						<!-- A map of settings tied to the portal container -->
 						<field name="settings">

Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml	2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml	2010-10-21 09:40:08 UTC (rev 3309)
@@ -16,17 +16,17 @@
 			<!-- The name of the default portal container -->
 			<value-param>
 				<name>default.portal.container</name>
-				<value>myPortal</value>
+				<value>${_default.portal.container}</value>
 			</value-param>
 			<!-- The name of the default rest ServletContext -->
 			<value-param>
 				<name>default.rest.context</name>
-				<value>myRest</value>
+				<value>${_default.rest.context}</value>
 			</value-param>
 			<!-- The name of the default realm -->
 			<value-param>
 				<name>default.realm.name</name>
-				<value>my-exo-domain</value>
+				<value>${_default.realm.name}</value>
 			</value-param>
 			<!-- The default portal container definition -->
 			<!-- It cans be used to avoid duplicating configuration -->
@@ -37,19 +37,19 @@
 					<!-- If this value is not null, it will replace the value defined
 					by the value-param "default.portal.container" -->
 					<field name="name">
-						<string>myPortal-dpcdef</string>
+						<string>${_portal.container}</string>
 					</field>
 					<!-- The name of the context name of the rest web application -->
 					<!-- If this value is not null, it will replace the value defined
 					by the value-param "default.rest.context" -->
 					<field name="restContextName">
-						<string>myRest-dpcdef</string>
+						<string>${_rest.context}</string>
 					</field>
 					<!-- The name of the realm -->
 					<!-- If this value is not null, it will replace the value defined
 					by the value-param "default.realm.name" -->
 					<field name="realmName">
-						<string>my-exo-domain-dpcdef</string>
+						<string>${_realm.name}</string>
 					</field>
 					<!-- A map of settings tied to the default portal container -->
 					<field name="settings">
@@ -100,4 +100,19 @@
 			</object-param>
 		</init-params>
 	</component>
+	<component>
+		<key>PropertyManagerConfigurator</key>
+		<type>org.exoplatform.container.PropertyConfigurator</type>
+		<init-params>
+			<properties-param>
+				<name>properties</name>
+				<property name="_default.portal.container" value="myPortal" />
+				<property name="_default.rest.context" value="myRest" />
+				<property name="_default.realm.name" value="my-exo-domain" />
+				<property name="_portal.container" value="myPortal-dpcdef" />
+				<property name="_rest.context" value="myRest-dpcdef" />
+				<property name="_realm.name" value="my-exo-domain-dpcdef" />
+			</properties-param>
+		</init-params>
+	</component>	
 </configuration>
\ No newline at end of file

Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml	2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml	2010-10-21 09:40:08 UTC (rev 3309)
@@ -16,20 +16,33 @@
 			<!-- The name of the default portal container -->
 			<value-param>
 				<name>default.portal.container</name>
-				<value>myPortal</value>
+				<value>${_default.portal.container}</value>
 			</value-param>
 			<!-- The name of the default rest ServletContext -->
 			<value-param>
 				<name>default.rest.context</name>
-				<value>myRest</value>
+				<value>${_default.rest.context}</value>
 			</value-param>
 			<!-- The name of the default realm -->
 			<value-param>
 				<name>default.realm.name</name>
-				<value>my-exo-domain</value>
+				<value>${_default.realm.name}</value>
 			</value-param>
 		</init-params>
 	</component>
+	<component>
+		<key>PropertyManagerConfigurator</key>
+		<type>org.exoplatform.container.PropertyConfigurator</type>
+		<init-params>
+			<properties-param>
+				<name>properties</name>
+				<property name="_default.portal.container" value="myPortal" />
+				<property name="_default.rest.context" value="myRest" />
+				<property name="_default.realm.name" value="my-exo-domain" />
+				<property name="_portal.container" value="myPortal-pcdef" />
+			</properties-param>
+		</init-params>
+	</component>	
 	<external-component-plugins>
 		<!-- The full qualified name of the PortalContainerConfig -->
 		<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -46,7 +59,7 @@
 					<object type="org.exoplatform.container.definition.PortalContainerDefinition">
 						<!-- The name of the portal container -->
 						<field name="name">
-							<string>myPortal-pcdef</string>
+							<string>${_portal.container}</string>
 						</field>
 					</object>
 				</object-param>
@@ -67,7 +80,7 @@
 				<!-- The list of the name of the portal containers to disable -->
 				<values-param>
 					<name>names</name>
-					<value>myPortal-pcdef</value>
+					<value>${_portal.container}</value>
 				</values-param>
 			</init-params>
 		</component-plugin>

Modified: kernel/trunk/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/trunk/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-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/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-10-21 09:40:08 UTC (rev 3309)
@@ -62,6 +62,16 @@
 			</object-param>
 		</init-params>
 	</component>
+	<component>
+		<key>PropertyManagerConfigurator</key>
+		<type>org.exoplatform.container.PropertyConfigurator</type>
+		<init-params>
+			<properties-param>
+				<name>properties</name>
+				<property name="_portal.container" value="myPortal-pcdef" />
+			</properties-param>
+		</init-params>
+	</component>		
 	<external-component-plugins>
 		<!-- The full qualified name of the PortalContainerConfig -->
 		<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -78,7 +88,7 @@
 					<object type="org.exoplatform.container.definition.PortalContainerDefinition">
 						<!-- The name of the portal container -->
 						<field name="name">
-							<string>myPortal-pcdef</string>
+							<string>${_portal.container}</string>
 						</field>
 						<!-- The name of the context name of the rest web application -->
 						<field name="restContextName">
@@ -107,7 +117,7 @@
 				<values-param>
 					<name>apply.specific</name>
 					<value>fake</value>
-					<value>myPortal-pcdef</value>
+					<value>${_portal.container}</value>
 				</values-param>
 				<object-param profiles="AddDependencies">
 					<name>change</name>
@@ -233,7 +243,7 @@
 				<!-- The list of the name of the portal containers to disable -->
 				<values-param>
 					<name>names</name>
-					<value>myPortal-pcdef</value>
+					<value>${_portal.container}</value>
 				</values-param>
 			</init-params>
 		</component-plugin>

Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml	2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml	2010-10-21 09:40:08 UTC (rev 3309)
@@ -31,14 +31,25 @@
 			<!-- Indicates whether the unregistered webapps have to be ignored -->
 			<value-param profiles="ignore.unregistered.webapp-false">
 				<name>ignore.unregistered.webapp</name>
-				<value>false</value>
+				<value>${_ignore.unregistered.webapp.false}</value>
 			</value-param>
 			<value-param profiles="ignore.unregistered.webapp-true">
 				<name>ignore.unregistered.webapp</name>
-				<value>true</value>
+				<value>${_ignore.unregistered.webapp.true}</value>
 			</value-param>
 		</init-params>
 	</component>
+	<component>
+		<key>PropertyManagerConfigurator</key>
+		<type>org.exoplatform.container.PropertyConfigurator</type>
+		<init-params>
+			<properties-param>
+				<name>properties</name>
+				<property name="_ignore.unregistered.webapp.true" value="true" />
+				<property name="_ignore.unregistered.webapp.false" value="false" />
+			</properties-param>
+		</init-params>
+	</component>	
 	<external-component-plugins>
 		<!-- The full qualified name of the PortalContainerConfig -->
 		<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>

Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml	2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml	2010-10-21 09:40:08 UTC (rev 3309)
@@ -12,6 +12,16 @@
 	<component>
 		<type>org.exoplatform.container.definition.PortalContainerConfig</type>
 	</component>
+	<component>
+		<key>PropertyManagerConfigurator</key>
+		<type>org.exoplatform.container.PropertyConfigurator</type>
+		<init-params>
+			<properties-param>
+				<name>properties</name>
+				<property name="_value.true" value="true" />
+			</properties-param>
+		</init-params>
+	</component>	
 	<external-component-plugins>
 		<!-- The full qualified name of the PortalContainerConfig -->
 		<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -69,7 +79,7 @@
 			<init-params>
 				<value-param>
 					<name>apply.all</name>
-					<value>true</value>
+					<value>${_value.true}</value>
 				</value-param>
 				<object-param>
 					<name>change1</name>
@@ -92,7 +102,7 @@
 			<init-params>
 				<value-param>
 					<name>apply.default</name>
-					<value>true</value>
+					<value>${_value.true}</value>
 				</value-param>
 				<object-param>
 					<name>change2</name>
@@ -139,7 +149,7 @@
 			<init-params>
 				<value-param>
 					<name>apply.default</name>
-					<value>true</value>
+					<value>${_value.true}</value>
 				</value-param>			
 				<values-param>
 					<name>apply.specific</name>



More information about the exo-jcr-commits mailing list