[exo-jcr-commits] exo-jcr SVN: r3308 - kernel/branches/2.2.x/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:33:23 EDT 2010


Author: nfilotto
Date: 2010-10-21 05:33:22 -0400 (Thu, 21 Oct 2010)
New Revision: 3308

Modified:
   jcr/branches/1.12.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
   kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
   kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java
   kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java
   kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java
   kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java
   kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml
   kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml
   kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml
   kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml
   kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml
   kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml
Log:
KER-164: Now most of the parameters can be defined in the file loaded by the PropertyConfigurator which is configuration.properties in GateIn

Modified: jcr/branches/1.12.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
===================================================================
--- jcr/branches/1.12.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml	2010-10-21 07:37:13 UTC (rev 3307)
+++ jcr/branches/1.12.x/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)
@@ -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/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java	2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java	2010-10-21 09:33:22 UTC (rev 3308)
@@ -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/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java	2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java	2010-10-21 09:33:22 UTC (rev 3308)
@@ -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/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java	2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java	2010-10-21 09:33:22 UTC (rev 3308)
@@ -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/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java	2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java	2010-10-21 09:33:22 UTC (rev 3308)
@@ -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/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java	2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java	2010-10-21 09:33:22 UTC (rev 3308)
@@ -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/branches/2.2.x/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/branches/2.2.x/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 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/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)
@@ -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/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml	2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/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)
@@ -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/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml	2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml	2010-10-21 09:33:22 UTC (rev 3308)
@@ -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/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml	2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml	2010-10-21 09:33:22 UTC (rev 3308)
@@ -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/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml	2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml	2010-10-21 09:33:22 UTC (rev 3308)
@@ -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/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml
===================================================================
--- kernel/branches/2.2.x/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 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/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)
@@ -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