[exo-jcr-commits] exo-jcr SVN: r2351 - in kernel/trunk/exo.kernel.container/src: main/java/org/exoplatform/container/configuration and 9 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu May 6 07:53:10 EDT 2010


Author: nfilotto
Date: 2010-05-06 07:53:08 -0400 (Thu, 06 May 2010)
New Revision: 2351

Added:
   kernel/trunk/exo.kernel.container/src/main/resources/org/exoplatform/container/configuration/kernel-configuration_1_2.xsd
   kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/configuration/TestXSD_1_2.java
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-01.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-02.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-03.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-04.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-05.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-06.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-07.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-08.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-09.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-10.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-11.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-12.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-13.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-14.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-15.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-16.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-17.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-18.xml
   kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-19.xml
Modified:
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/ExoContainer.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ConfigurationUnmarshaller.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/Namespaces.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/NoKernelNamespaceSAXFilter.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ProfileDOMFilter.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/util/ContainerUtil.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/Configuration.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ContainerLifecyclePlugin.java
   kernel/trunk/exo.kernel.container/src/main/resources/binding.xml
   kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/TestExoContainer.java
   kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/test-exo-container.xml
Log:
EXOJCR-714: Fix for the issues defined in the description

1. We use know the type as key to register a plugin instead of plugin.getClass().getName() that always returns "org.exoplatform.container.xml.ContainerLifecyclePlugin"
2. All the methods are called now (i.e. initContainer, startContainer, stopContainer and destroyContainer) 
3. You can now use a non empty constructor to inject InitParams and/or ConfigurationManager if needed
4. The InitParams are injected thanks to the constructor
5. We can define a name and a description within the configuration file. A new schema version has been created for it 1.2.
6. The execution order is defined thanks to the priority that we can set in the configuration file

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/ExoContainer.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/ExoContainer.java	2010-05-05 10:06:50 UTC (rev 2350)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/ExoContainer.java	2010-05-06 11:53:08 UTC (rev 2351)
@@ -113,39 +113,101 @@
       return context;
    }
 
+   /**
+    * @return the name of the plugin if it is not empty, the FQN of the plugin otherwise
+    */
+   private static String getPluginName(ContainerLifecyclePlugin plugin)
+   {
+      String name = plugin.getName();
+      if (name == null || name.length() == 0)
+      {
+         name = plugin.getClass().getName();
+      }
+      return name;
+   }
+   
    public void initContainer() throws Exception
    {
       ConfigurationManager manager = (ConfigurationManager)getComponentInstanceOfType(ConfigurationManager.class);
       ContainerUtil.addContainerLifecyclePlugin(this, manager);
       ContainerUtil.addComponentLifecyclePlugin(this, manager);
+      ContainerUtil.addComponents(this, manager);
       for (ContainerLifecyclePlugin plugin : containerLifecyclePlugin_)
       {
-         plugin.initContainer(this);
+         try
+         {
+            plugin.initContainer(this);
+         }
+         catch (Exception e)
+         {
+            log.warn("An error occurs with the ContainerLifecyclePlugin '" + getPluginName(plugin) + "'", e);
+         }
       }
-      ContainerUtil.addComponents(this, manager);
    }
 
-   public void startContainer() throws Exception
+   @Override
+   public void dispose()
    {
+      destroyContainer();
+      super.dispose();
+   }
+
+   @Override
+   public void start()
+   {
+      super.start();
+      startContainer();
+   }
+
+   @Override
+   public void stop()
+   {
+      stopContainer();
+      super.stop();
+   }
+
+   public void startContainer()
+   {
       for (ContainerLifecyclePlugin plugin : containerLifecyclePlugin_)
       {
-         plugin.startContainer(this);
+         try
+         {
+            plugin.startContainer(this);
+         }
+         catch (Exception e)
+         {
+            log.warn("An error occurs with the ContainerLifecyclePlugin '" + getPluginName(plugin) + "'", e);
+         }
       }
    }
 
-   public void stopContainer() throws Exception
+   public void stopContainer()
    {
       for (ContainerLifecyclePlugin plugin : containerLifecyclePlugin_)
       {
-         plugin.stopContainer(this);
+         try
+         {
+            plugin.stopContainer(this);
+         }
+         catch (Exception e)
+         {
+            log.warn("An error occurs with the ContainerLifecyclePlugin '" + getPluginName(plugin) + "'", e);
+         }
       }
    }
 
-   public void destroyContainer() throws Exception
+   public void destroyContainer()
    {
       for (ContainerLifecyclePlugin plugin : containerLifecyclePlugin_)
       {
-         plugin.destroyContainer(this);
+         try
+         {
+            plugin.destroyContainer(this);
+         }
+         catch (Exception e)
+         {
+            log.warn("An error occurs with the ContainerLifecyclePlugin '" + getPluginName(plugin) + "'", e);
+         }
       }
    }
 

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ConfigurationUnmarshaller.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ConfigurationUnmarshaller.java	2010-05-05 10:06:50 UTC (rev 2350)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ConfigurationUnmarshaller.java	2010-05-06 11:53:08 UTC (rev 2351)
@@ -62,6 +62,11 @@
 
    private static final Log log = ExoLogger.getLogger("exo.kernel.container.ConfigurationUnmarshaller");
 
+   /**
+    * A private copy of the list of kernel namespaces
+    */
+   private static final String[] KERNEL_NAMESPACES = Namespaces.getKernelNamespaces();
+   
    private class Reporter implements ErrorHandler
    {
 
@@ -135,10 +140,9 @@
    public boolean isValid(URL url) throws NullPointerException, IOException
    {
       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-      String[] schemas = {Namespaces.KERNEL_1_0_URI, Namespaces.KERNEL_1_1_URI};
       factory
          .setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
-      factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", schemas);
+      factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", KERNEL_NAMESPACES);
       factory.setNamespaceAware(true);
       factory.setValidating(true);
 

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/Namespaces.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/Namespaces.java	2010-05-05 10:06:50 UTC (rev 2350)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/Namespaces.java	2010-05-06 11:53:08 UTC (rev 2351)
@@ -20,8 +20,11 @@
 
 import org.xml.sax.EntityResolver;
 
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.LinkedHashSet;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
@@ -37,6 +40,23 @@
    public static final String KERNEL_1_1_URI = "http://www.exoplaform.org/xml/ns/kernel_1_1.xsd";
 
    /** . */
+   public static final String KERNEL_1_2_URI = "http://www.exoplaform.org/xml/ns/kernel_1_2.xsd";
+
+   /**
+    * All the namespaces related to the kernel
+    */
+   public static final Set<String> KERNEL_NAMESPACES_SET;
+
+   static
+   {
+      Set<String> tmp = new LinkedHashSet<String>();
+      tmp.add(KERNEL_1_0_URI);
+      tmp.add(KERNEL_1_1_URI);
+      tmp.add(KERNEL_1_2_URI);
+      KERNEL_NAMESPACES_SET = Collections.unmodifiableSet(tmp);
+   }
+
+   /** . */
    static final EntityResolver resolver;
 
    static
@@ -44,6 +64,25 @@
       Map<String, String> resourceMap = new HashMap<String, String>();
       resourceMap.put(KERNEL_1_0_URI, "org/exoplatform/container/configuration/kernel-configuration_1_0.xsd");
       resourceMap.put(KERNEL_1_1_URI, "org/exoplatform/container/configuration/kernel-configuration_1_1.xsd");
+      resourceMap.put(KERNEL_1_2_URI, "org/exoplatform/container/configuration/kernel-configuration_1_2.xsd");
       resolver = new EntityResolverImpl(Namespaces.class.getClassLoader(), resourceMap);
    }
+
+   /**
+    * @return A safe copy of the list of kernel namespaces
+    */
+   public static String[] getKernelNamespaces()
+   {
+      return new String[]{KERNEL_1_0_URI, KERNEL_1_1_URI, KERNEL_1_2_URI};
+   }
+   
+   /**
+    * Indicates whether the given uri is a kernel namespace or not
+    * @param uri the uri to check
+    * @return <code>true</code> if it is a kernel namespace, <code>false</code> otherwise.
+    */
+   public static boolean isKernelNamespace(String uri)
+   {
+      return KERNEL_NAMESPACES_SET.contains(uri);
+   }
 }

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/NoKernelNamespaceSAXFilter.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/NoKernelNamespaceSAXFilter.java	2010-05-05 10:06:50 UTC (rev 2350)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/NoKernelNamespaceSAXFilter.java	2010-05-06 11:53:08 UTC (rev 2351)
@@ -18,9 +18,6 @@
  */
 package org.exoplatform.container.configuration;
 
-import static org.exoplatform.container.configuration.Namespaces.KERNEL_1_0_URI;
-import static org.exoplatform.container.configuration.Namespaces.KERNEL_1_1_URI;
-
 import org.exoplatform.services.log.ExoLogger;
 import org.exoplatform.services.log.Log;
 import org.xml.sax.Attributes;
@@ -78,7 +75,7 @@
 
    public void startPrefixMapping(String prefix, String uri) throws SAXException
    {
-      if (KERNEL_1_0_URI.equals(uri) || KERNEL_1_1_URI.equals(uri) || XSI_URI.equals(uri))
+      if (Namespaces.isKernelNamespace(uri) || XSI_URI.equals(uri))
       {
          blackListedPrefixes.add(prefix);
          if (log.isTraceEnabled())
@@ -140,7 +137,7 @@
                   log.trace("Skipping XSI " + attQName + " attribute");
                continue;
             }
-            else if (KERNEL_1_0_URI.equals(attURI) || KERNEL_1_1_URI.equals(attURI))
+            else if (Namespaces.isKernelNamespace(attURI))
             {
                if (log.isTraceEnabled())
                   log.trace("Requalifying prefixed attribute " + attQName + " attribute to " + localName);
@@ -154,7 +151,7 @@
       }
 
       //
-      if (KERNEL_1_0_URI.equals(uri) || KERNEL_1_1_URI.equals(uri))
+      if (Namespaces.isKernelNamespace(uri))
       {
          if (log.isTraceEnabled())
             log.trace("Requalifying active profile " + qName + " start element to " + localName);
@@ -168,7 +165,7 @@
 
    public void endElement(String uri, String localName, String qName) throws SAXException
    {
-      if (KERNEL_1_0_URI.equals(uri) || KERNEL_1_1_URI.equals(uri))
+      if (Namespaces.isKernelNamespace(uri))
       {
          if (log.isTraceEnabled())
             log.trace("Requalifying " + qName + " end element");

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ProfileDOMFilter.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ProfileDOMFilter.java	2010-05-05 10:06:50 UTC (rev 2350)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ProfileDOMFilter.java	2010-05-06 11:53:08 UTC (rev 2351)
@@ -27,9 +27,9 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
-import static org.exoplatform.container.configuration.Namespaces.*;
 
 /**
  * Filters a kernel DOM according to a list of active profiles.
@@ -44,10 +44,17 @@
    private static final String PROFILE_ATTRIBUTE = "profiles";
 
    /** . */
-   private static final Set<String> kernelURIs = Tools.set(KERNEL_1_0_URI, KERNEL_1_1_URI);
+   private static final Set<String> kernelURIs = Namespaces.KERNEL_NAMESPACES_SET;
 
    /** . */
-   private static final Set<String> kernelWithProfileURIs = Tools.set(KERNEL_1_1_URI);
+   private static final Set<String> kernelWithProfileURIs;
+   static
+   {
+      // All the kernel namespaces but KERNEL_1_0_URI
+      Set<String> tmp = new LinkedHashSet<String>(Namespaces.KERNEL_NAMESPACES_SET);
+      tmp.remove(Namespaces.KERNEL_1_0_URI);
+      kernelWithProfileURIs = Collections.unmodifiableSet(tmp);
+   }
 
    /** . */
    private final Set<String> activeProfiles;

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/util/ContainerUtil.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/util/ContainerUtil.java	2010-05-05 10:06:50 UTC (rev 2350)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/util/ContainerUtil.java	2010-05-06 11:53:08 UTC (rev 2351)
@@ -34,11 +34,14 @@
 import java.io.InputStream;
 import java.lang.reflect.Constructor;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -46,6 +49,7 @@
  * @since Oct 28, 2004
  * @version $Id: ContainerUtil.java 9894 2006-10-31 02:52:41Z tuan08 $
  */
+ at SuppressWarnings("unchecked")
 public class ContainerUtil
 {
    /** The logger. */
@@ -86,7 +90,7 @@
          // in the class path. It cause the configuration run twice
          int index1 = key.lastIndexOf("exo-");
          int index2 = key.lastIndexOf("exo.");
-         int index = index1 < index2 ? index2 : index1; 
+         int index = index1 < index2 ? index2 : index1;
          if (index >= 0)
             key = key.substring(index);
          map.put(key, url);
@@ -102,24 +106,49 @@
 
    static public void addContainerLifecyclePlugin(ExoContainer container, ConfigurationManager conf)
    {
-      Collection plugins = conf.getConfiguration().getContainerLifecyclePlugins();
+      List plugins = new ArrayList(conf.getConfiguration().getContainerLifecyclePlugins());
+      Collections.sort(plugins, COMPARATOR_CONTAINER_PLUGIN);
       Iterator i = plugins.iterator();
-      ClassLoader loader = Thread.currentThread().getContextClassLoader();
       while (i.hasNext())
       {
          ContainerLifecyclePlugin plugin = (ContainerLifecyclePlugin)i.next();
-         try
+         addContainerLifecyclePlugin(container, plugin);
+      }
+   }
+   
+   private static final Comparator<org.exoplatform.container.xml.ContainerLifecyclePlugin> COMPARATOR_CONTAINER_PLUGIN =
+      new Comparator<org.exoplatform.container.xml.ContainerLifecyclePlugin>()
+      {
+
+         public int compare(org.exoplatform.container.xml.ContainerLifecyclePlugin o1,
+            org.exoplatform.container.xml.ContainerLifecyclePlugin o2)
          {
-            Class classType = loader.loadClass(plugin.getType());
-            org.exoplatform.container.ContainerLifecyclePlugin instance =
-               (org.exoplatform.container.ContainerLifecyclePlugin)classType.newInstance();
-            container.addContainerLifecylePlugin(instance);
+            return getPriority(o1) - getPriority(o2);
          }
-         catch (Exception ex)
+
+         private int getPriority(org.exoplatform.container.xml.ContainerLifecyclePlugin p)
          {
-            ex.printStackTrace();
+            return p.getPriority() == null ? 0 : Integer.parseInt(p.getPriority());
          }
+
+      };
+      
+   private static void addContainerLifecyclePlugin(ExoContainer container, ContainerLifecyclePlugin plugin)
+   {
+      try
+      {
+         Class clazz = Class.forName(plugin.getType());
+         org.exoplatform.container.ContainerLifecyclePlugin cplugin =
+            (org.exoplatform.container.ContainerLifecyclePlugin)container
+               .createComponent(clazz, plugin.getInitParams());
+         cplugin.setName(plugin.getName());
+         cplugin.setDescription(plugin.getDescription());
+         container.addContainerLifecylePlugin(cplugin);
       }
+      catch (Exception ex)
+      {
+         log.error("Failed to instanciate plugin " + plugin.getType() + ": " + ex.getMessage(), ex);
+      }
    }
 
    static public void addComponentLifecyclePlugin(ExoContainer container, ConfigurationManager conf)
@@ -139,7 +168,7 @@
          }
          catch (Exception ex)
          {
-            ex.printStackTrace();
+            log.error("Failed to instanciate plugin " + plugin.getType() + ": " + ex.getMessage(), ex);
          }
       }
    }
@@ -166,7 +195,7 @@
                if (component.isMultiInstance())
                {
                   container.registerComponent(new ConstructorInjectionComponentAdapter(classType, classType));
-                  System.out.println("===>>> Thread local component " + classType.getName() + " registered.");
+                  log.debug("===>>> Thread local component " + classType.getName() + " registered.");
                }
                else
                {
@@ -181,7 +210,7 @@
                   if (component.isMultiInstance())
                   {
                      container.registerComponent(new ConstructorInjectionComponentAdapter(keyType, classType));
-                     System.out.println("===>>> Thread local component " + classType.getName() + " registered.");
+                     log.debug("===>>> Thread local component " + classType.getName() + " registered.");
                   }
                   else
                   {
@@ -196,11 +225,11 @@
          }
          catch (ClassNotFoundException ex)
          {
-            ex.printStackTrace();
+            log.error("Cannot register the component corresponding to key = '" + key + "' and type = '" + type + "'", ex);
          }
       }
    }
-   
+
    /**
     * Loads the properties file corresponding to the given url
     * @param url the url of the properties file
@@ -210,7 +239,7 @@
    {
       return loadProperties(url, true);
    }
-   
+
    /**
     * Loads the properties file corresponding to the given url
     * @param url the url of the properties file
@@ -237,7 +266,7 @@
             String fileName = url.getFile();
             if (Tools.endsWithIgnoreCase(path, ".properties"))
             {
-               if (log.isDebugEnabled()) 
+               if (log.isDebugEnabled())
                   log.debug("Attempt to load property file " + path);
                props = PropertiesLoader.load(in);
             }
@@ -254,7 +283,7 @@
             if (props != null && resolveVariables)
             {
                // Those properties are used for variables resolution
-               final Map<String, Object> currentProps = new HashMap<String, Object>();            
+               final Map<String, Object> currentProps = new HashMap<String, Object>();
                for (Map.Entry<String, String> entry : props.entrySet())
                {
                   String propertyName = entry.getKey();

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/Configuration.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/Configuration.java	2010-05-05 10:06:50 UTC (rev 2350)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/Configuration.java	2010-05-06 11:53:08 UTC (rev 2351)
@@ -60,7 +60,7 @@
    public void addContainerLifecyclePlugin(Object object)
    {
       ContainerLifecyclePlugin plugin = (ContainerLifecyclePlugin)object;
-      String key = plugin.getClass().getName();
+      String key = plugin.getType();
       containerLifecyclePlugin_.put(key, plugin);
    }
 

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ContainerLifecyclePlugin.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ContainerLifecyclePlugin.java	2010-05-05 10:06:50 UTC (rev 2350)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ContainerLifecyclePlugin.java	2010-05-06 11:53:08 UTC (rev 2351)
@@ -24,10 +24,26 @@
  */
 public class ContainerLifecyclePlugin
 {
+   private String name;
+   
    private String type;
+   
+   private String description;
+   
+   private String priority;
 
    private InitParams initParams;
+   
+   public String getName()
+   {
+      return name;
+   }
 
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
    public String getType()
    {
       return type;
@@ -38,6 +54,26 @@
       this.type = type;
    }
 
+   public String getDescription()
+   {
+      return description;
+   }
+
+   public void setDescription(String desc)
+   {
+      this.description = desc;
+   }
+
+   public String getPriority()
+   {
+      return priority;
+   }
+
+   public void setPriority(String priority)
+   {
+      this.priority = priority;
+   }
+   
    public InitParams getInitParams()
    {
       return initParams;

Modified: kernel/trunk/exo.kernel.container/src/main/resources/binding.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/resources/binding.xml	2010-05-05 10:06:50 UTC (rev 2350)
+++ kernel/trunk/exo.kernel.container/src/main/resources/binding.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -153,7 +153,10 @@
   </mapping>
 
   <mapping name="container-lifecycle-plugin" class="org.exoplatform.container.xml.ContainerLifecyclePlugin">
+    <value name="name"  field="name" usage="optional" />
     <value name="type"  field="type" />
+    <value name="description" field="description" usage="optional" />
+    <value name="priority" field="priority"  usage="optional" />
     <structure map-as="org.exoplatform.container.xml.InitParams" usage="optional" 
                get-method="getInitParams" set-method="setInitParams"/>
   </mapping>

Added: kernel/trunk/exo.kernel.container/src/main/resources/org/exoplatform/container/configuration/kernel-configuration_1_2.xsd
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/resources/org/exoplatform/container/configuration/kernel-configuration_1_2.xsd	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/main/resources/org/exoplatform/container/configuration/kernel-configuration_1_2.xsd	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema
+     targetNamespace="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+     xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+     elementFormDefault="qualified"
+     attributeFormDefault="unqualified"
+     version="1.0">
+
+    <xsd:element name="configuration" type="configurationType"/>
+
+    <xsd:complexType abstract="true" name="profilesdElementType">
+      <xsd:attribute name="profiles" type="xsd:string"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="baseObjectType">
+        <xsd:choice>
+            <xsd:element name="string" type="xsd:string"/>
+            <xsd:element name="int" type="xsd:int"/>
+            <xsd:element name="long" type="xsd:long"/>
+            <xsd:element name="boolean" type="xsd:boolean"/>
+            <xsd:element name="date" type="xsd:date"/>
+            <xsd:element name="double" type="xsd:double"/>
+            <xsd:element name="map" type="mapType"/>
+            <xsd:element name="collection" type="collectionType"/>
+            <xsd:element name="native-array" type="nativeArraytype"/>
+            <xsd:element name="object" type="objectType"/>
+        </xsd:choice>
+    </xsd:complexType>
+
+    <xsd:complexType name="entryType">
+        <xsd:sequence>
+            <xsd:element name="key" type="baseObjectType" minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="value" type="baseObjectType" minOccurs="1" maxOccurs="1"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="mapType">
+        <xsd:sequence>
+            <xsd:element name="entry" type="entryType" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="type" type="xsd:string" use="required"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="collectionType">
+        <xsd:sequence>
+            <xsd:element name="value" minOccurs="0" maxOccurs="unbounded">
+                <xsd:complexType>
+                    <xsd:complexContent>
+                        <xsd:extension base="baseObjectType">
+                            <xsd:attribute name="profiles" type="xsd:string"/>
+                        </xsd:extension>
+                    </xsd:complexContent>
+                </xsd:complexType>
+            </xsd:element>
+        </xsd:sequence>
+        <xsd:attribute name="type" type="xsd:string" use="required"/>
+        <xsd:attribute name="item-type" type="xsd:string"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="nativeArraytype">
+        <xsd:complexContent>
+            <xsd:extension base="baseObjectType">
+                <xsd:sequence>
+                    <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+                    <xsd:element name="array" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+
+    <xsd:complexType name="fieldType">
+        <xsd:complexContent >
+            <xsd:extension base="baseObjectType">
+                <xsd:attribute name="name" type="xsd:string"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+
+    <xsd:complexType name="objectType">
+        <xsd:sequence>
+            <xsd:element name="field" minOccurs="0" maxOccurs="unbounded">
+                <xsd:complexType>
+                    <xsd:complexContent>
+                        <xsd:extension base="fieldType">
+                            <xsd:attribute name="profiles" type="xsd:string"/>
+                        </xsd:extension>
+                    </xsd:complexContent>
+              </xsd:complexType>
+            </xsd:element>
+        </xsd:sequence>
+        <xsd:attribute name="type" type="xsd:string"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="propertyType">
+        <xsd:attribute name="name" type="xsd:string"/>
+        <xsd:attribute name="value" type="xsd:string"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="paramType" abstract="true">
+        <xsd:sequence>
+            <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+        </xsd:sequence>
+        <xsd:attribute name="profiles" type="xsd:string"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="valueParamType">
+       <xsd:complexContent>
+           <xsd:extension base="paramType">
+               <xsd:sequence>
+                   <xsd:element name="value" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+               </xsd:sequence>
+           </xsd:extension>
+       </xsd:complexContent>
+    </xsd:complexType>
+
+    <xsd:complexType name="valuesParamType">
+        <xsd:complexContent>
+            <xsd:extension base="paramType">
+                <xsd:sequence>
+                    <xsd:element name="value" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+
+    <xsd:complexType name="propertiesParamType">
+        <xsd:complexContent>
+            <xsd:extension base="paramType">
+                <xsd:sequence>
+                    <xsd:element name="property" type="propertyType" minOccurs="0" maxOccurs="unbounded"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+
+    <xsd:complexType name="objectParamType">
+        <xsd:complexContent>
+            <xsd:extension base="paramType">
+                <xsd:sequence>
+                    <xsd:element name="object" type="objectType" minOccurs="1" maxOccurs="1"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+
+    <xsd:complexType name="initParamsType">
+        <xsd:choice minOccurs="0" maxOccurs="unbounded">
+            <xsd:element name="object-param" type="objectParamType"/>
+            <xsd:element name="properties-param" type="propertiesParamType"/>
+            <xsd:element name="value-param" type="valueParamType"/>
+            <xsd:element name="values-param" type="valuesParamType"/>
+        </xsd:choice>
+    </xsd:complexType>
+
+    <xsd:complexType name="componentPluginType">
+        <xsd:sequence>
+            <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="set-method" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="priority" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="init-params" type="initParamsType" minOccurs="0" maxOccurs="1"/>
+        </xsd:sequence>
+        <xsd:attribute name="profiles" type="xsd:string"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="externalComponentPluginType">
+        <xsd:sequence>
+            <xsd:element name="target-component" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="component-plugin" type="componentPluginType" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="containerLifecyclePluginType">
+        <xsd:sequence>
+            <xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="priority" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="init-params" type="initParamsType" minOccurs="0" maxOccurs="1"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="manageableComponentsType">
+        <xsd:sequence>
+            <xsd:element name="component-type" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="componentLifecyclePluginType">
+        <xsd:sequence>
+            <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="manageable-components" type="manageableComponentsType" minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="init-params" type="initParamsType" minOccurs="0" maxOccurs="1"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="componentType">
+        <xsd:sequence>
+            <xsd:element name="key" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="jmx-name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="show-deploy-info" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="multi-instance" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="component-plugins" minOccurs="0" maxOccurs="1">
+                <xsd:complexType>
+                    <xsd:sequence>
+                        <xsd:element name="component-plugin" type="componentPluginType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+            <xsd:element name="init-params" type="initParamsType" minOccurs="0" maxOccurs="1"/>
+        </xsd:sequence>
+        <xsd:attribute name="profiles" type="xsd:string"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="configurationType">
+        <xsd:sequence>
+            <xsd:element name="container-lifecycle-plugin" type="containerLifecyclePluginType" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="component-lifecycle-plugin" type="componentLifecyclePluginType" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="component" type="componentType" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="external-component-plugins" type="externalComponentPluginType" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="import" type="importType" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="remove-configuration" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="importType">
+        <xsd:simpleContent>
+            <xsd:extension base="xsd:string">
+              <xsd:attribute name="profiles" type="xsd:string"/>
+            </xsd:extension>
+        </xsd:simpleContent>
+    </xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file

Modified: kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/TestExoContainer.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/TestExoContainer.java	2010-05-05 10:06:50 UTC (rev 2350)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/TestExoContainer.java	2010-05-06 11:53:08 UTC (rev 2351)
@@ -19,6 +19,7 @@
 import org.exoplatform.container.component.BaseComponentPlugin;
 import org.exoplatform.container.configuration.ConfigurationManager;
 import org.exoplatform.container.jmx.AbstractTestContainer;
+import org.exoplatform.container.xml.InitParams;
 import org.picocontainer.ComponentAdapter;
 import org.picocontainer.PicoContainer;
 import org.picocontainer.PicoInitializationException;
@@ -41,6 +42,25 @@
 public class TestExoContainer extends AbstractTestContainer
 {
 
+   public void testContainerLifecyclePlugin()
+   {
+      final RootContainer container = createRootContainer("test-exo-container.xml");
+      MyCounter counter = (MyCounter)container.getComponentInstanceOfType(MyCounter.class);
+      assertNotNull(counter);
+      assertEquals(2, counter.init.size());
+      assertEquals(2, counter.start.size());
+      container.stop();
+      assertEquals(2, counter.stop.size());
+      container.dispose();
+      assertEquals(2, counter.destroy.size());
+      // Check order
+      assertTrue(counter.init.get(0) instanceof MyContainerLifecyclePlugin2);
+      MyContainerLifecyclePlugin2 plugin = (MyContainerLifecyclePlugin2)counter.init.get(0);
+      assertNotNull(plugin.getName());
+      assertNotNull(plugin.getDescription());
+      assertNotNull(plugin.param);
+   }
+   
    public void testStackOverFlow()
    {
       final RootContainer container = createRootContainer("test-exo-container.xml");
@@ -224,4 +244,87 @@
          this.myClass_ = myClass;
       }
    }
+   
+   public static class MyCounter
+   {
+      public final List<BaseContainerLifecyclePlugin> init = new ArrayList<BaseContainerLifecyclePlugin>();
+      public final List<BaseContainerLifecyclePlugin> start = new ArrayList<BaseContainerLifecyclePlugin>();
+      public final List<BaseContainerLifecyclePlugin> stop = new ArrayList<BaseContainerLifecyclePlugin>();
+      public final List<BaseContainerLifecyclePlugin> destroy = new ArrayList<BaseContainerLifecyclePlugin>();
+   }
+   
+   public static class MyContainerLifecyclePlugin1 extends BaseContainerLifecyclePlugin
+   {
+      
+      public MyContainerLifecyclePlugin1()
+      {
+      }
+      
+      @Override
+      public void destroyContainer(ExoContainer container) throws Exception
+      {
+         MyCounter counter = (MyCounter)container.getComponentInstanceOfType(MyCounter.class);
+         if (counter != null) counter.destroy.add(this);
+      }
+
+      @Override
+      public void initContainer(ExoContainer container) throws Exception
+      {
+         MyCounter counter = (MyCounter)container.getComponentInstanceOfType(MyCounter.class);
+         if (counter != null) counter.init.add(this);
+      }
+
+      @Override
+      public void startContainer(ExoContainer container) throws Exception
+      {
+         MyCounter counter = (MyCounter)container.getComponentInstanceOfType(MyCounter.class);
+         if (counter != null) counter.start.add(this);
+      }
+
+      @Override
+      public void stopContainer(ExoContainer container) throws Exception
+      {
+         MyCounter counter = (MyCounter)container.getComponentInstanceOfType(MyCounter.class);
+         if (counter != null) counter.stop.add(this);
+      }
+      
+   }
+   
+   public static class MyContainerLifecyclePlugin2 extends BaseContainerLifecyclePlugin
+   {
+      public final String param;
+      
+      public MyContainerLifecyclePlugin2(InitParams params)
+      {
+         this.param = params != null ? params.getValueParam("param").getValue() : null;
+      }
+      
+      @Override
+      public void destroyContainer(ExoContainer container) throws Exception
+      {
+         MyCounter counter = (MyCounter)container.getComponentInstanceOfType(MyCounter.class);
+         if (counter != null) counter.destroy.add(this);
+      }
+
+      @Override
+      public void initContainer(ExoContainer container) throws Exception
+      {
+         MyCounter counter = (MyCounter)container.getComponentInstanceOfType(MyCounter.class);
+         if (counter != null) counter.init.add(this);
+      }
+
+      @Override
+      public void startContainer(ExoContainer container) throws Exception
+      {
+         MyCounter counter = (MyCounter)container.getComponentInstanceOfType(MyCounter.class);
+         if (counter != null) counter.start.add(this);
+      }
+
+      @Override
+      public void stopContainer(ExoContainer container) throws Exception
+      {
+         MyCounter counter = (MyCounter)container.getComponentInstanceOfType(MyCounter.class);
+         if (counter != null) counter.stop.add(this);
+      }   
+   }   
 }
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/configuration/TestXSD_1_2.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/configuration/TestXSD_1_2.java	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/configuration/TestXSD_1_2.java	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.container.configuration;
+
+import org.exoplatform.test.BasicTestCase;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * @author <a href="mailto:nicolas.filotto at exoplatform.com">Nicolas Filotto</a>
+ * @version $Revision$
+ */
+public class TestXSD_1_2 extends BasicTestCase
+{
+
+   public void testValidation() throws Exception
+   {
+      ConfigurationUnmarshaller unmarshaller = new ConfigurationUnmarshaller();
+      String baseDirPath = System.getProperty("basedir");
+      File baseDir = new File(baseDirPath + "/src/test/resources/xsd_1_2");
+      int count = 0;
+      for (File f : baseDir.listFiles(new FileFilter()
+      {
+         public boolean accept(File pathname)
+         {
+            return pathname.getName().endsWith(".xml");
+         }
+      }))
+      {
+         count++;
+         try
+         {
+            URL url = f.toURI().toURL();
+            assertTrue("XML configuration file " + url + " is not valid", unmarshaller.isValid(url));
+         }
+         catch (MalformedURLException e)
+         {
+            fail("Was not expecting such exception " + e.getMessage());
+         }
+      }
+      assertEquals(19, count);
+   }
+}
\ No newline at end of file

Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/test-exo-container.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/test-exo-container.xml	2010-05-05 10:06:50 UTC (rev 2350)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/test-exo-container.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -7,9 +7,28 @@
 		Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this software; if not,
 		write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 	-->
-<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_1.xsd http://www.exoplaform.org/xml/ns/kernel_1_1.xsd"
-	xmlns="http://www.exoplaform.org/xml/ns/kernel_1_1.xsd">
+<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+	xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+	<container-lifecycle-plugin>
+		<type>org.exoplatform.container.TestExoContainer$MyContainerLifecyclePlugin1</type>
+	</container-lifecycle-plugin>
+	<container-lifecycle-plugin>
+		<name>MyContainerLifecyclePlugin2</name>
+		<type>org.exoplatform.container.TestExoContainer$MyContainerLifecyclePlugin2</type>
+		<description>The description of the plugin</description>
+		<priority>-10</priority>
+		<init-params>
+			<value-param>
+				<name>param</name>
+				<description>a test parameter</description>
+				<value>value</value>
+			</value-param>
+		</init-params>
+	</container-lifecycle-plugin>
 	<component>
+		<type>org.exoplatform.container.TestExoContainer$MyCounter</type>
+	</component>
+	<component>
 		<type>org.exoplatform.container.TestExoContainer$MyMTClass</type>
 	</component>
 	<component>

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-01.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-01.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-01.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+      <key>org.exoplatform.portal.config.DataStorage</key>
+      <type>org.exoplatform.portal.config.jcr.DataStorageImpl</type>
+    </component>
+
+    <component>
+      <key>org.exoplatform.portal.application.UserGadgetStorage</key>
+      <type>org.exoplatform.portal.application.jcr.UserGadgetStorageImpl</type>
+    </component>
+
+    <component>
+      <key>org.exoplatform.portal.layout.PortalLayoutService</key>
+      <type>org.exoplatform.portal.layout.jcr.PortalLayoutServiceImpl</type>
+      <init-params>
+          <value-param>
+              <name>template.location</name>
+              <description>Location of container templates</description>
+              <value>war:/conf/portal/template/containers</value>
+          </value-param>
+      </init-params>
+    </component>
+
+    <component>
+      <key>org.exoplatform.portal.config.UserACL</key>
+      <type>org.exoplatform.portal.config.UserACL</type>
+      <init-params>
+        <value-param>
+          <name>super.user</name>
+          <description>administrator</description>
+          <value>root</value>
+        </value-param>
+
+        <value-param>
+          <name>portal.creator.groups</name>
+          <description>groups with membership type have permission to manage portal</description>
+          <value>*:/platform/administrators,*:/organization/management/executive-board</value>
+        </value-param>
+
+        <value-param>
+          <name>navigation.creator.membership.type</name>
+          <description>specific membership type have full permission with group navigation</description>
+          <value>manager</value>
+        </value-param>
+        <value-param>
+          <name>guests.group</name>
+          <description>guests group</description>
+          <value>/platform/guests</value>
+        </value-param>
+        <value-param>
+          <name>access.control.workspace</name>
+          <description>groups with memberships that have the right to access the User Control Workspace</description>
+          <value>*:/platform/administrators,*:/organization/management/executive-board</value>
+        </value-param>
+        </init-params>
+    </component>
+
+    <component>
+      <key>org.exoplatform.portal.config.UserPortalConfigService</key>
+      <type>org.exoplatform.portal.config.UserPortalConfigService</type>
+      <component-plugins>
+          <component-plugin>
+            <name>new.portal.config.user.listener</name>
+            <set-method>initListener</set-method>
+            <type>org.exoplatform.portal.config.NewPortalConfigListener</type>
+            <description>this listener init the portal configuration</description>
+            <init-params>
+              <value-param>
+                <name>default.portal</name>
+                <description>The default portal for checking db is empty or not</description>
+                <value>classic</value>
+              </value-param>
+              <object-param>
+                <name>portal.configuration</name>
+                <description>description</description>
+                <object type="org.exoplatform.portal.config.NewPortalConfig">
+                  <field  name="predefinedOwner">
+                    <collection type="java.util.HashSet">
+                      <value><string>classic</string></value>
+                    </collection>
+                  </field>
+                  <field  name="ownerType"><string>portal</string></field>
+                  <field  name="templateLocation"><string>war:/conf/portal</string></field>
+                </object>
+              </object-param>
+              <object-param>
+                <name>group.configuration</name>
+                <description>description</description>
+                <object type="org.exoplatform.portal.config.NewPortalConfig">
+                  <field  name="predefinedOwner">
+                    <collection type="java.util.HashSet">
+                        <value><string>platform/administrators</string></value>
+                        <value><string>platform/users</string></value>
+                        <value><string>platform/guests</string></value>
+                        <value><string>organization/management/executive-board</string></value>
+                    </collection>
+                  </field>
+                  <field  name="ownerType"><string>group</string></field>
+                  <field  name="templateLocation"><string>war:/conf/portal</string></field>
+                </object>
+              </object-param>
+              <object-param>
+                <name>user.configuration</name>
+                <description>description</description>
+                <object type="org.exoplatform.portal.config.NewPortalConfig">
+                  <field  name="predefinedOwner">
+                    <collection type="java.util.HashSet">
+                      <value><string>root</string></value>
+                      <value><string>john</string></value>
+                      <value><string>marry</string></value>
+                      <value><string>demo</string></value>
+                    </collection>
+                  </field>
+                  <field  name="ownerType"><string>user</string></field>
+                  <field  name="templateLocation"><string>war:/conf/portal</string></field>
+                </object>
+              </object-param>
+              <object-param>
+                  <name>page.templates</name>
+                  <description>List of page templates</description>
+                  <object type="org.exoplatform.portal.config.PageTemplateConfig">
+                      <field name="templates">
+                          <collection type="java.util.ArrayList"></collection>
+                      </field>
+                      <field name="location"><string>war:/conf/portal/template/pages</string></field>
+                  </object>
+              </object-param>
+            </init-params>
+          </component-plugin>
+    </component-plugins>
+
+    </component>
+
+    <external-component-plugins>
+      <target-component>org.exoplatform.services.organization.OrganizationService</target-component>
+
+      <component-plugin>
+        <name>user.portal.config.listener</name>
+        <set-method>addListenerPlugin</set-method>
+        <type>org.exoplatform.portal.config.UserPortalConfigListener</type>
+      </component-plugin>
+
+      <component-plugin>
+        <name>group.portal.config.listener</name>
+        <set-method>addListenerPlugin</set-method>
+        <type>org.exoplatform.portal.config.GroupPortalConfigListener</type>
+      </component-plugin>
+
+        <component-plugin>
+          <name>ecm.new.user.event.listener</name>
+          <set-method>addListenerPlugin</set-method>
+          <type>org.exoplatform.services.jcr.ext.hierarchy.impl.NewUserListener</type>
+          <description>description</description>
+          <init-params>
+            <object-param>
+              <name>configuration</name>
+              <description>description</description>
+              <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig">
+                <field  name="repository"><string>repository</string></field>
+                 <field name="workspaces">
+                   <collection type="java.util.ArrayList">
+                    <value><string>collaboration</string></value>
+                </collection>
+              </field>
+              <field  name="jcrPaths">
+                   <collection type="java.util.ArrayList">
+                  <value>
+                           <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig$JcrPath">
+                               <field name="alias"><string>userApplicationData</string></field>
+                          <field name="path"><string>ApplicationData</string></field>
+                          <field name="nodeType"><string>nt:unstructured</string></field>
+                          <field name="permissions">
+                                <collection type="java.util.ArrayList">
+                                  <value>
+                                    <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig$Permission">
+                                      <field name="identity"><string>*:/platform/administrators</string></field>
+                                      <field name="read"><string>true</string></field>
+                                      <field name="addNode"><string>true</string></field>
+                                      <field name="setProperty"><string>true</string></field>
+                                      <field name="remove"><string>true</string></field>
+                                    </object>
+                                  </value>
+                              </collection>
+                            </field>
+                            <field name="mixinTypes">
+                              <collection type="java.util.ArrayList">
+                              </collection>
+                            </field>
+                        </object>
+                    </value>
+                   </collection>
+              </field>
+              </object>
+            </object-param>
+          </init-params>
+        </component-plugin>
+    </external-component-plugins>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-02.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-02.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-02.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+      <key>org.exoplatform.application.gadget.GadgetRegistryService</key>
+      <type>org.exoplatform.application.gadget.jcr.GadgetRegistryServiceImpl</type>
+    </component>
+
+    <component>
+        <key>org.exoplatform.application.gadget.SourceStorage</key>
+        <type>org.exoplatform.application.gadget.jcr.SourceStorageImpl</type>
+        <init-params>
+            <properties-param>
+            <name>location</name>
+            <description>The location store source of gadgets</description>
+            <property name="repository" value="repository"></property>
+            <property name="workspace" value="gadgets"></property>
+            <property name="store.path" value="/"></property>
+            </properties-param>
+        </init-params>
+    </component>
+
+    <component>
+      <key>org.exoplatform.application.registry.ApplicationRegistryService</key>
+      <type>org.exoplatform.application.registry.jcr.ApplicationRegistryServiceImpl</type>
+        <component-plugins>
+          <component-plugin>
+            <name>new.portal.portlets.registry</name>
+            <set-method>initListener</set-method>
+            <type>org.exoplatform.application.registry.ApplicationCategoriesPlugins</type>
+            <description>this listener init the portlets are registered in PortletRegister</description>
+            <init-params>
+                <object-param>
+                <name>administration</name>
+                <description>description</description>
+                <object type="org.exoplatform.application.registry.ApplicationCategory">
+                  <field  name="name"><string>administration</string></field>
+                  <field  name="displayName"><string>Administration</string></field>
+                  <field  name="description"><string>application for administration</string></field>
+                    <field name="accessPermissions">
+                          <collection type="java.util.ArrayList" item-type="java.lang.String">
+                              <value><string>*:/platform/administrators</string></value>
+                              <value><string>*:/organization/management/executive-board</string></value>
+                          </collection>
+                    </field>
+                  <field  name="applications">
+                      <collection type="java.util.ArrayList">
+                                      <value>
+                        <object type="org.exoplatform.application.registry.Application">
+                                          <field name="applicationName"><string>ApplicationRegistryPortlet</string></field>
+                          <field  name="categoryName"><string>administration</string></field>
+                                    <field name="displayName"><string>Application Registry</string></field>
+                                    <field name="description"><string>Application Registry</string></field>
+                            <field name="applicationType"><string>portlet</string></field>
+                            <field name="applicationGroup"><string>exoadmin</string></field>
+                                    <field name="accessPermissions">
+                                          <collection type="java.util.ArrayList" item-type="java.lang.String">
+                                              <value><string>*:/platform/administrators</string></value>
+                                              <value><string>*:/organization/management/executive-board</string></value>
+                                          </collection>
+                                    </field>
+                          </object>
+                      </value>
+                              <value>
+                          <object type="org.exoplatform.application.registry.Application">
+                            <field name="applicationName"><string>OrganizationPortlet</string></field>
+                            <field  name="categoryName"><string>administration</string></field>
+                          <field name="displayName"><string>Organization Management</string></field>
+                          <field name="description"><string>Organization Management</string></field>
+                            <field name="applicationType"><string>portlet</string></field>
+                            <field name="applicationGroup"><string>exoadmin</string></field>
+                            <field name="accessPermissions">
+                                          <collection type="java.util.ArrayList" item-type="java.lang.String">
+                                                      <value><string>*:/platform/administrators</string></value>
+                                                      <value><string>*:/organization/management/executive-board</string></value>
+                                          </collection>
+                                    </field>
+                          </object>
+                      </value>
+                              <value>
+                          <object type="org.exoplatform.application.registry.Application">
+                            <field name="applicationName"><string>AccountPortlet</string></field>
+                            <field  name="categoryName"><string>administration</string></field>
+                                    <field name="displayName"><string>New Account</string></field>
+                                    <field name="description"><string>New Account</string></field>
+                            <field name="applicationType"><string>portlet</string></field>
+                            <field name="applicationGroup"><string>exoadmin</string></field>
+                            <field name="accessPermissions">
+                                          <collection type="java.util.ArrayList" item-type="java.lang.String">
+                                                      <value><string>*:/platform/administrators</string></value>
+                                                      <value><string>*:/organization/management/executive-board</string></value>
+                                          </collection>
+                                    </field>
+                          </object>
+                      </value>
+                      </collection>
+                  </field>
+                </object>
+              </object-param>
+
+                  <object-param>
+                <name>web</name>
+                <description>description</description>
+                <object type="org.exoplatform.application.registry.ApplicationCategory">
+                  <field  name="name"><string>web</string></field>
+                  <field  name="displayName"><string>web</string></field>
+                  <field  name="description"><string>BasicPortlets</string></field>
+                <field name="accessPermissions">
+                          <collection type="java.util.ArrayList" item-type="java.lang.String">
+                                      <value><string>*:/platform/users</string></value>
+                          </collection>
+                    </field>
+                  <field  name="applications">
+                      <collection type="java.util.ArrayList">
+                      <value>
+                          <object type="org.exoplatform.application.registry.Application">
+                            <field  name="categoryName"><string>web</string></field>
+                            <field name="applicationName"><string>IFramePortlet</string></field>
+                                    <field name="displayName"><string>IFrame</string></field>
+                                    <field name="description"><string>IFrame</string></field>
+                            <field name="applicationType"><string>portlet</string></field>
+                            <field name="applicationGroup"><string>web</string></field>
+                            <field name="accessPermissions">
+                                          <collection type="java.util.ArrayList" item-type="java.lang.String">
+                                                      <value><string>*:/platform/users</string></value>
+                                          </collection>
+                                    </field>
+                          </object>
+                      </value>
+                              <value>
+                          <object type="org.exoplatform.application.registry.Application">
+                            <field  name="categoryName"><string>web</string></field>
+                            <field name="applicationName"><string>SiteMapPortlet</string></field>
+                                    <field name="displayName"><string>SiteMap</string></field>
+                                    <field name="description"><string>SiteMap</string></field>
+                            <field name="applicationType"><string>portlet</string></field>
+                            <field name="applicationGroup"><string>web</string></field>
+                            <field name="accessPermissions">
+                                          <collection type="java.util.ArrayList" item-type="java.lang.String">
+                                                      <value><string>*:/platform/users</string></value>
+                                          </collection>
+                                    </field>
+                          </object>
+                      </value>
+                      <value>
+                          <object type="org.exoplatform.application.registry.Application">
+                            <field  name="categoryName"><string>web</string></field>
+                            <field name="applicationName"><string>BrowserPortlet</string></field>
+                                    <field name="displayName"><string>Web Explorer</string></field>
+                                    <field name="description"><string>Web Explorer</string></field>
+                            <field name="applicationType"><string>portlet</string></field>
+                            <field name="applicationGroup"><string>web</string></field>
+                            <field name="accessPermissions">
+                                          <collection type="java.util.ArrayList" item-type="java.lang.String">
+                                                      <value><string>*:/platform/users</string></value>
+                                          </collection>
+                                    </field>
+                          </object>
+                      </value>
+                      </collection>
+                  </field>
+                </object>
+              </object-param>
+
+              <object-param>
+                <name>dashboard</name>
+                <description>description</description>
+                <object type="org.exoplatform.application.registry.ApplicationCategory">
+                  <field name="name"><string>dashboard</string></field>
+                  <field name="displayName"><string>Dashboard</string></field>
+                  <field name="description"><string>Dashboard</string></field>
+                <field name="accessPermissions">
+                          <collection type="java.util.ArrayList" item-type="java.lang.String">
+                                      <value><string>*:/platform/users</string></value>
+                          </collection>
+                    </field>
+                  <field  name="applications">
+                      <collection type="java.util.ArrayList">
+                      <value>
+                          <object type="org.exoplatform.application.registry.Application">
+                            <field name="categoryName"><string>dashboard</string></field>
+                            <field name="applicationName"><string>DashboardPortlet</string></field>
+                                    <field name="displayName"><string>Dashboard Portlet</string></field>
+                                    <field name="description"><string>Dashboard Portlet</string></field>
+                            <field name="applicationType"><string>portlet</string></field>
+                            <field name="applicationGroup"><string>dashboard</string></field>
+                            <field name="accessPermissions">
+                                          <collection type="java.util.ArrayList" item-type="java.lang.String">
+                                                      <value><string>*:/platform/users</string></value>
+                                          </collection>
+                                    </field>
+                          </object>
+                      </value>
+                      <value>
+                          <object type="org.exoplatform.application.registry.Application">
+                            <field name="categoryName"><string>dashboard</string></field>
+                            <field name="applicationName"><string>GadgetPortlet</string></field>
+                                    <field name="displayName"><string>Gadget Wrapper Portlet</string></field>
+                                    <field name="description"><string>Gadget Wrapper Portlet</string></field>
+                            <field name="applicationType"><string>portlet</string></field>
+                            <field name="applicationGroup"><string>dashboard</string></field>
+                            <field name="accessPermissions">
+                                          <collection type="java.util.ArrayList" item-type="java.lang.String">
+                                                      <value><string>*:/platform/users</string></value>
+                                          </collection>
+                                    </field>
+                          </object>
+                      </value>
+                      </collection>
+                  </field>
+                </object>
+              </object-param>
+            </init-params>
+          </component-plugin>
+        </component-plugins>
+   </component>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-03.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-03.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-03.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <external-component-plugins>
+      <target-component>org.exoplatform.services.organization.OrganizationService</target-component>
+      <component-plugin>
+        <name>init.service.listener</name>
+        <set-method>addListenerPlugin</set-method>
+        <type>org.exoplatform.services.organization.OrganizationDatabaseInitializer</type>
+        <description>this listener populate organization data for the first launch</description>
+        <init-params>
+          <value-param>
+            <name>checkDatabaseAlgorithm</name>
+            <description>check database</description>
+            <value>entry</value>
+          </value-param>
+          <value-param>
+            <name>printInformation</name>
+            <description>Print information init database</description>
+            <value>false</value>
+          </value-param>
+          <object-param>
+            <name>configuration</name>
+            <description>description</description>
+            <object type="org.exoplatform.services.organization.OrganizationConfig">
+              <field  name="membershipType">
+                <collection type="java.util.ArrayList">
+                    <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
+                      <field  name="type"><string>manager</string></field>
+                      <field  name="description"><string>manager membership type</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
+                      <field  name="type"><string>member</string></field>
+                      <field  name="description"><string>member membership type</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
+                      <field  name="type"><string>validator</string></field>
+                      <field  name="description"><string>validator membership type</string></field>
+                    </object>
+                  </value>
+                </collection>
+              </field>
+
+              <field  name="group">
+                <collection type="java.util.ArrayList">
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>platform</string></field>
+                      <field  name="parentId"><string></string></field>
+                      <field  name="description"><string>the /platform group</string></field>
+                      <field  name="label"><string>Platform</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>administrators</string></field>
+                      <field  name="parentId"><string>/platform</string></field>
+                      <field  name="description"><string>the /platform/administrators group</string></field>
+                      <field  name="label"><string>Administrators</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>users</string></field>
+                      <field  name="parentId"><string>/platform</string></field>
+                      <field  name="description"><string>the /platform/users group</string></field>
+                      <field  name="label"><string>Users</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>guests</string></field>
+                      <field  name="parentId"><string>/platform</string></field>
+                      <field  name="description"><string>the /platform/guests group</string></field>
+                      <field  name="label"><string>Guests</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>organization</string></field>
+                      <field  name="parentId"><string></string></field>
+                      <field  name="description"><string>the organization group</string></field>
+                      <field  name="label"><string>Organization</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>management</string></field>
+                      <field  name="parentId"><string>/organization</string></field>
+                      <field  name="description"><string>the /organization/management group</string></field>
+                      <field  name="label"><string>Management</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>executive-board</string></field>
+                      <field  name="parentId"><string>/organization/management</string></field>
+                      <field  name="description"><string>the /organization/management/executive-board group</string></field>
+                      <field  name="label"><string>Executive Board</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>human-resources</string></field>
+                      <field  name="parentId"><string>/organization/management</string></field>
+                      <field  name="description"><string>the /organization/management/human-resource group</string></field>
+                      <field  name="label"><string>Human Resources</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>communication</string></field>
+                      <field  name="parentId"><string>/organization</string></field>
+                      <field  name="description"><string>the /organization/communication group</string></field>
+                      <field  name="label"><string>Communication</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>marketing</string></field>
+                      <field  name="parentId"><string>/organization/communication</string></field>
+                      <field  name="description"><string>the /organization/communication/marketing group</string></field>
+                      <field  name="label"><string>Marketing</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>press-and-media</string></field>
+                      <field  name="parentId"><string>/organization/communication</string></field>
+                      <field  name="description"><string>the /organization/communication/press-and-media group</string></field>
+                      <field  name="label"><string>Press and Media</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>operations</string></field>
+                      <field  name="parentId"><string>/organization</string></field>
+                      <field  name="description"><string>the /organization/operations and media group</string></field>
+                      <field  name="label"><string>Operations</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>sales</string></field>
+                      <field  name="parentId"><string>/organization/operations</string></field>
+                      <field  name="description"><string>the /organization/operations/sales group</string></field>
+                      <field  name="label"><string>Sales</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>finances</string></field>
+                      <field  name="parentId"><string>/organization/operations</string></field>
+                      <field  name="description"><string>the /organization/operations/finances group</string></field>
+                      <field  name="label"><string>Finances</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>customers</string></field>
+                      <field  name="parentId"><string></string></field>
+                      <field  name="description"><string>the /customers group</string></field>
+                      <field  name="label"><string>Customers</string></field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
+                      <field  name="name"><string>partners</string></field>
+                      <field  name="parentId"><string></string></field>
+                      <field  name="description"><string>the /partners group</string></field>
+                      <field  name="label"><string>Partners</string></field>
+                    </object>
+                  </value>
+                </collection>
+              </field>
+
+              <field  name="user">
+                <collection type="java.util.ArrayList">
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$User">
+                      <field  name="userName"><string>root</string></field>
+                      <field  name="password"><string>exo</string></field>
+                      <field  name="firstName"><string>Root</string></field>
+                      <field  name="lastName"><string>Root</string></field>
+                      <field  name="email"><string>root at localhost</string></field>
+                      <field  name="groups">
+                        <string>
+                            manager:/platform/administrators,member:/platform/users,
+                            member:/organization/management/executive-board
+                        </string>
+                      </field>
+                    </object>
+                  </value>
+
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$User">
+                      <field  name="userName"><string>john</string></field>
+                      <field  name="password"><string>exo</string></field>
+                      <field  name="firstName"><string>John</string></field>
+                      <field  name="lastName"><string>Anthony</string></field>
+                      <field  name="email"><string>john at localhost</string></field>
+                      <field  name="groups">
+                        <string>
+                            member:/platform/administrators,member:/platform/users,
+                            manager:/organization/management/executive-board
+                        </string>
+                      </field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$User">
+                      <field  name="userName"><string>marry</string></field>
+                      <field  name="password"><string>exo</string></field>
+                      <field  name="firstName"><string>Marry</string></field>
+                      <field  name="lastName"><string>Kelly</string></field>
+                      <field  name="email"><string>marry at localhost</string></field>
+                      <field  name="groups">
+                        <string>member:/platform/users</string>
+                      </field>
+                    </object>
+                  </value>
+                  <value>
+                    <object type="org.exoplatform.services.organization.OrganizationConfig$User">
+                      <field  name="userName"><string>demo</string></field>
+                      <field  name="password"><string>exo</string></field>
+                      <field  name="firstName"><string>Demo</string></field>
+                      <field  name="lastName"><string>exo</string></field>
+                      <field  name="email"><string>demo at localhost</string></field>
+                      <field  name="groups">
+                        <string>member:/platform/guests,member:/platform/users</string>
+                      </field>
+                    </object>
+                  </value>
+                </collection>
+              </field>
+            </object>
+          </object-param>
+        </init-params>
+      </component-plugin>
+
+      <component-plugin>
+        <name>new.user.event.listener</name>
+        <set-method>addListenerPlugin</set-method>
+        <type>org.exoplatform.services.organization.impl.NewUserEventListener</type>
+        <description>this listener assign group and membership to a new created user</description>
+        <init-params>
+          <object-param>
+            <name>configuration</name>
+            <description>description</description>
+            <object type="org.exoplatform.services.organization.impl.NewUserConfig">
+              <field  name="group">
+                <collection type="java.util.ArrayList">
+                  <value>
+                    <object type="org.exoplatform.services.organization.impl.NewUserConfig$JoinGroup">
+                      <field  name="groupId"><string>/platform/users</string></field>
+                      <field  name="membership"><string>member</string></field>
+                    </object>
+                  </value>
+                </collection>
+              </field>
+              <field  name="ignoredUser">
+                <collection type="java.util.HashSet">
+                  <value><string>root</string></value>
+                  <value><string>john</string></value>
+                  <value><string>marry</string></value>
+                  <value><string>demo</string></value>
+                </collection>
+              </field>
+            </object>
+          </object-param>
+        </init-params>
+      </component-plugin>
+
+    </external-component-plugins>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-04.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-04.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-04.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+      <key>org.exoplatform.services.ldap.LDAPService</key>
+        <type>org.exoplatform.services.ldap.impl.LDAPServiceImpl</type>
+    <init-params>
+      <object-param>
+        <name>ldap.config</name>
+        <description>Default ldap config</description>
+        <object type="org.exoplatform.services.ldap.impl.LDAPConnectionConfig">
+               <!-- for multiple ldap servers, use comma seperated list of host:port (Ex. ldap://127.0.0.1:389,10.0.0.1:389) -->
+               <!-- whether or not to enable ssl, if ssl is used ensure that the javax.net.ssl.keyStore & java.net.ssl.keyStorePassword properties are set -->
+               <!-- exo portal default installed javax.net.ssl.trustStore with file is java.home/lib/security/cacerts-->
+               <!-- ldap service will check protocol, if protocol is ldaps, ssl is enable (Ex. for enable ssl: ldaps://10.0.0.3:636 ;for disable ssl: ldap://10.0.0.3:389 ) -->
+               <!-- when enable ssl, ensure server name is *.directory and port (Ex. active.directory) -->
+           <field  name="providerURL"><string>ldaps://10.0.0.3:636</string></field>
+            <field  name="rootdn"><string>CN=Administrator,CN=Users, DC=exoplatform,DC=org</string></field>
+           <field  name="password"><string>site</string></field>
+
+           <field  name="version"><string>3</string></field>
+
+           <field  name="minConnection"><int>5</int></field>
+
+           <field  name="maxConnection"><int>10</int></field>
+
+           <field  name="referralMode"><string>ignore</string></field>
+
+           <field  name="serverName"><string>active.directory</string></field>
+
+          </object>
+      </object-param>
+    </init-params>
+  </component>
+
+  <component>
+    <key>org.exoplatform.services.organization.OrganizationService</key>
+    <type>org.exoplatform.services.organization.ldap.OrganizationServiceImpl</type>
+    <component-plugins>
+        <component-plugin>
+          <name>init.service.listener</name>
+          <set-method>addListenerPlugin</set-method>
+          <type>org.exoplatform.services.organization.ldap.OrganizationLdapInitializer</type>
+          <description>this listener populate organization ldap service create default dn</description>
+        </component-plugin>
+    </component-plugins>
+    <init-params>
+      <object-param>
+        <name>ldap.attribute.mapping</name>
+        <description>ldap attribute mapping</description>
+        <object type="org.exoplatform.services.organization.ldap.LDAPAttributeMapping">
+          <field  name="userLDAPClasses"><string>top,person,organizationalPerson,user</string></field>
+          <field  name="profileLDAPClasses"><string>top,organizationalPerson</string></field>
+          <field  name="groupLDAPClasses"><string>top,organizationalUnit</string></field>
+          <field  name="membershipTypeLDAPClasses"><string>top,group</string></field>
+          <field  name="membershipLDAPClasses"><string>top,group</string></field>
+
+          <field  name="baseURL"><string>dc=exoplatform,dc=org</string></field>
+          <field  name="groupsURL"><string>ou=groups,ou=portal,dc=exoplatform,dc=org</string></field>
+          <field  name="membershipTypeURL"><string>ou=memberships,ou=portal,dc=exoplatform,dc=org</string></field>
+          <field  name="userURL"><string>ou=users,ou=portal,dc=exoplatform,dc=org</string></field>
+          <field  name="profileURL"><string>ou=profiles,ou=portal,dc=exoplatform,dc=org</string></field>
+
+          <field  name="userAuthenticationAttr"><string>mail</string></field>
+          <field  name="userUsernameAttr"><string>sAMAccountName</string></field>
+          <field  name="userPassword"><string>unicodePwd</string></field>
+          <!--unicodePwd-->
+          <field  name="userFirstNameAttr"><string>givenName</string></field>
+          <field  name="userLastNameAttr"><string>sn</string></field>
+          <field  name="userDisplayNameAttr"><string>displayName</string></field>
+          <field  name="userMailAttr"><string>mail</string></field>
+          <field  name="userObjectClassFilter"><string>objectClass=user</string></field>
+
+          <field  name="membershipTypeMemberValue"><string>member</string></field>
+          <field  name="membershipTypeRoleNameAttr"><string>cn</string></field>
+          <field  name="membershipTypeNameAttr"><string>cn</string></field>
+          <field  name="membershipTypeObjectClassFilter"><string>objectClass=group</string></field>
+          <field  name="membershiptypeObjectClass"><string>group</string></field>
+
+          <field  name="groupObjectClass"><string>organizationalUnit</string></field>
+          <field  name="groupObjectClassFilter"><string>objectClass=organizationalUnit</string></field>
+
+          <field  name="membershipObjectClass"><string>group</string></field>
+          <field  name="membershipObjectClassFilter"><string>objectClass=group</string></field>
+
+          <field  name="ldapCreatedTimeStampAttr"><string>createdTimeStamp</string></field>
+          <field  name="ldapModifiedTimeStampAttr"><string>modifiedTimeStamp</string></field>
+          <field  name="ldapDescriptionAttr"><string>description</string></field>
+        </object>
+      </object-param>
+    </init-params>
+  </component>
+
+  <!--external-component-plugins>
+    <target-component>org.exoplatform.services.database.HibernateService</target-component>
+    <component-plugin>
+      <name>add.hibernate.mapping</name>
+      <set-method>addPlugin</set-method>
+      <type>org.exoplatform.services.database.impl.AddHibernateMappingPlugin</type>
+      <init-params>
+        <values-param>
+          <name>hibernate.mapping</name>
+          <value>org/exoplatform/services/organization/impl/UserProfileData.hbm.xml</value>
+        </values-param>
+      </init-params>
+    </component-plugin>
+   </external-component-plugins-->
+
+   <import>classpath:/conf/portal/organization-configuration.xml</import>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-05.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-05.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-05.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+      <key>org.exoplatform.services.ldap.LDAPService</key>
+        <type>org.exoplatform.services.ldap.impl.LDAPServiceImpl</type>
+    <init-params>
+      <object-param>
+        <name>ldap.config</name>
+        <description>Default ldap config</description>
+        <object type="org.exoplatform.services.ldap.impl.LDAPConnectionConfig">
+
+                  <!-- for multiple ldap servers, use comma seperated list of host:port (Ex. ldap://127.0.0.1:389,10.0.0.1:389) -->
+              <field  name="providerURL"><string>ldap://127.0.0.1:389,10.0.0.1:389</string></field>
+
+                   <field  name="rootdn"><string>CN=Manager,DC=exoplatform,DC=org</string></field>
+
+                  <field  name="password"><string>secret</string></field>
+
+            <field  name="version"><string>3</string></field>
+
+            <field  name="minConnection"><int>5</int></field>
+
+            <field  name="maxConnection"><int>10</int></field>
+
+            <field  name="referralMode"><string>follow</string></field>
+
+<!--
+                    <field  name="referralMode"><string>ignore</string></field>
+-->
+
+            <field  name="serverName"><string>default</string></field>
+
+<!--
+          LDAP server names : default,
+                                                  active.directory,
+                                                  open.ldap,
+                                                  netscape.directory,
+                                                  redhat.directory;
+-->
+
+
+           </object>
+      </object-param>
+    </init-params>
+  </component>
+
+  <component>
+    <key>org.exoplatform.services.organization.OrganizationService</key>
+    <type>org.exoplatform.services.organization.ldap.OrganizationServiceImpl</type>
+    <component-plugins>
+        <component-plugin>
+          <name>init.service.listener</name>
+          <set-method>addListenerPlugin</set-method>
+          <type>org.exoplatform.services.organization.ldap.OrganizationLdapInitializer</type>
+          <description>this listener populate organization ldap service create default dn</description>
+        </component-plugin>
+    </component-plugins>
+    <init-params>
+      <value-param>
+        <name>ldap.userDN.key</name>
+        <description>The key used to compose user DN</description>
+        <value>cn</value>
+      </value-param>
+
+      <object-param>
+        <name>ldap.attribute.mapping</name>
+        <description>ldap attribute mapping</description>
+        <object type="org.exoplatform.services.organization.ldap.LDAPAttributeMapping">
+          <field  name="userLDAPClasses"><string>top,person,organizationalPerson,inetOrgPerson</string></field>
+          <field  name="profileLDAPClasses"><string>top,organizationalPerson</string></field>
+          <field  name="groupLDAPClasses"><string>top,organizationalUnit</string></field>
+          <field  name="membershipTypeLDAPClasses"><string>top,organizationalRole</string></field>
+          <field  name="membershipLDAPClasses"><string>top,groupOfNames</string></field>
+
+          <field  name="baseURL"><string>dc=exoplatform,dc=org</string></field>
+          <field  name="groupsURL"><string>ou=groups,ou=portal,dc=exoplatform,dc=org</string></field>
+          <field  name="membershipTypeURL"><string>ou=memberships,ou=portal,dc=exoplatform,dc=org</string></field>
+          <field  name="userURL"><string>ou=users,ou=portal,dc=exoplatform,dc=org</string></field>
+          <field  name="profileURL"><string>ou=profiles,ou=portal,dc=exoplatform,dc=org</string></field>
+
+          <field  name="userUsernameAttr"><string>uid</string></field>
+          <field  name="userPassword"><string>userPassword</string></field>
+          <field  name="userFirstNameAttr"><string>givenName</string></field>
+          <field  name="userLastNameAttr"><string>sn</string></field>
+          <field  name="userDisplayNameAttr"><string>displayName</string></field>
+          <field  name="userMailAttr"><string>mail</string></field>
+          <field  name="userObjectClassFilter"><string>objectClass=person</string></field>
+
+          <field  name="membershipTypeMemberValue"><string>member</string></field>
+          <field  name="membershipTypeRoleNameAttr"><string>cn</string></field>
+          <field  name="membershipTypeNameAttr"><string>cn</string></field>
+          <field  name="membershipTypeObjectClassFilter"><string>objectClass=organizationalRole</string></field>
+          <field  name="membershiptypeObjectClass"><string>organizationalRole</string></field>
+
+          <field  name="groupObjectClass"><string>organizationalUnit</string></field>
+          <field  name="groupObjectClassFilter"><string>objectClass=organizationalUnit</string></field>
+
+          <field  name="membershipObjectClass"><string>groupOfNames</string></field>
+          <field  name="membershipObjectClassFilter"><string>objectClass=groupOfNames</string></field>
+
+          <field  name="ldapCreatedTimeStampAttr"><string>createdTimeStamp</string></field>
+          <field  name="ldapModifiedTimeStampAttr"><string>modifiedTimeStamp</string></field>
+          <field  name="ldapDescriptionAttr"><string>description</string></field>
+        </object>
+      </object-param>
+    </init-params>
+  </component>
+
+  <external-component-plugins>
+    <target-component>org.exoplatform.services.database.HibernateService</target-component>
+    <component-plugin>
+      <name>add.hibernate.mapping</name>
+      <set-method>addPlugin</set-method>
+      <type>org.exoplatform.services.database.impl.AddHibernateMappingPlugin</type>
+      <init-params>
+        <values-param>
+          <name>hibernate.mapping</name>
+          <value>org/exoplatform/services/organization/impl/UserProfileData.hbm.xml</value>
+        </values-param>
+      </init-params>
+    </component-plugin>
+   </external-component-plugins>
+
+  <!-- for ldap clean database
+  <external-component-plugins>
+    <target-component>org.exoplatform.services.ldap.LDAPService</target-component>
+    <component-plugin>
+      <name>delete.object</name>
+      <set-method>addDeleteObject</set-method>
+      <type>org.exoplatform.services.ldap.DeleteObjectCommand</type>
+      <init-params>
+        <values-param>
+          <name>objects.to.delete</name>
+          <value>cn=demo,ou=users,ou=portal,dc=exoplatform,dc=org</value>
+          <value>cn=test,ou=users,ou=portal,dc=exoplatform,dc=org</value>
+          <value>cn=Benj,ou=users,ou=portal,dc=exoplatform,dc=org</value>
+          <value>cn=tuan,ou=users,ou=portal,dc=exoplatform,dc=org</value>
+        </values-param>
+      </init-params>
+    </component-plugin>
+  </external-component-plugins>
+  -->
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-06.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-06.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-06.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+        <key>org.exoplatform.services.organization.OrganizationService</key>
+        <type>org.exoplatform.services.organization.jdbc.OrganizationServiceImpl</type>
+    </component>
+
+    <external-component-plugins>
+        <target-component>org.exoplatform.services.listener.ListenerService</target-component>
+
+        <component-plugin>
+            <name>organization.user.preDelete</name>
+            <set-method>addListener</set-method>
+            <type>org.exoplatform.services.organization.jdbc.listeners.RemoveUserProfileListener</type>
+        </component-plugin>
+
+        <component-plugin>
+            <name>organization.user.postCreate</name>
+            <set-method>addListener</set-method>
+            <type>org.exoplatform.services.organization.jdbc.listeners.CreateUserListener</type>
+        </component-plugin>
+
+        <component-plugin>
+            <name>organization.user.preDelete</name>
+            <set-method>addListener</set-method>
+            <type>org.exoplatform.services.organization.jdbc.listeners.RemoveMembershipListener</type>
+        </component-plugin>
+
+        <component-plugin>
+            <name>organization.user.preDelete</name>
+            <set-method>addListener</set-method>
+            <type>org.exoplatform.portal.config.RemoveUserPortalConfigListener</type>
+        </component-plugin>
+
+        <component-plugin>
+            <name>organization.membershipType.preDelete</name>
+            <set-method>addListener</set-method>
+            <type>org.exoplatform.services.organization.jdbc.listeners.RemoveMembershipListener</type>
+        </component-plugin>
+
+        <component-plugin>
+            <name>organization.group.preDelete</name>
+            <set-method>addListener</set-method>
+            <type>org.exoplatform.services.organization.jdbc.listeners.RemoveMembershipListener</type>
+        </component-plugin>
+
+        <component-plugin>
+            <name>organization.group.preDelete</name>
+            <set-method>addListener</set-method>
+            <type>org.exoplatform.portal.config.RemoveGroupPortalConfigListener</type>
+        </component-plugin>
+
+        <component-plugin>
+            <name>organization.group.preDelete</name>
+            <set-method>addListener</set-method>
+            <type>org.exoplatform.services.organization.jdbc.listeners.RemoveGroupListener</type>
+        </component-plugin>
+
+    </external-component-plugins>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-07.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-07.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-07.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+      <key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
+      <type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
+      <init-params>
+        <value-param>
+          <name>conf-path</name>
+          <description>JCR configuration file</description>
+          <value>war:/conf/jcr/repository-configuration.xml</value>
+        </value-param>
+        <properties-param>
+          <name>working-conf</name>
+          <description>working-conf</description>
+          <property name="persister-class-name" value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister"/>
+          <property name="source-name" value="jdbcexo"/>
+          <property name="dialect" value="hsqldb"/>
+        </properties-param>
+      </init-params>
+    </component>
+
+    <component>
+      <type>org.exoplatform.services.jcr.ext.registry.RegistryService</type>
+      <init-params>
+        <properties-param>
+            <name>locations</name>
+            <property name="repository" value="system"/>
+        </properties-param>
+      </init-params>
+    </component>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-08.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-08.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-08.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+      <key>org.exoplatform.services.mail.MailService</key>
+      <type>org.exoplatform.services.mail.impl.MailServiceImpl</type>
+        <init-params>
+          <properties-param>
+            <name>config</name>
+            <property name="mail.smtp.auth.username" value="exoservice at gmail.com" />
+            <property name="mail.smtp.auth.password" value="exoadmin" />
+            <property name="mail.smtp.host" value="smtp.gmail.com" />
+            <property name="mail.smtp.port" value="465" />
+                      <property name="mail.smtp.starttls.enable" value="true" />
+            <property name="mail.smtp.auth" value="true" />
+            <property name="mail.smtp.debug" value="false" />
+            <property name="mail.smtp.socketFactory.port" value="465" />
+            <property name="mail.smtp.socketFactory.class" value="javax.net.ssl.SSLSocketFactory" />
+            <property name="mail.smtp.socketFactory.fallback" value="false" />
+          </properties-param>
+        </init-params>
+    </component>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-09.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-09.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-09.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <external-component-plugins>
+      <target-component>org.exoplatform.services.jcr.ext.hierarchy.NodeHierarchyCreator</target-component>
+      <component-plugin>
+          <name>addPaths</name>
+          <set-method>addPlugin</set-method>
+          <type>org.exoplatform.services.jcr.ext.hierarchy.impl.AddPathPlugin</type>
+          <init-params>
+            <object-param>
+              <name>cms.configuration</name>
+              <description>configuration for the cms path</description>
+              <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig">
+                  <field  name="repository"><string>repository</string></field>
+                  <field name="workspaces">
+                    <collection type="java.util.ArrayList">
+                        <value><string>collaboration</string></value>
+                    </collection>
+                </field>
+                <field  name="jcrPaths">
+                    <collection type="java.util.ArrayList">
+                    <value>
+                        <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig$JcrPath">
+                            <field  name="alias"><string>usersPath</string></field>
+                        <field  name="path"><string>/Users</string></field>
+                        <field name="permissions">
+                              <collection type="java.util.ArrayList">
+                                <value>
+                                  <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig$Permission">
+                                    <field name="identity"><string>*:/platform/administrators</string></field>
+                                    <field name="read"><string>true</string></field>
+                                    <field name="addNode"><string>true</string></field>
+                                    <field name="setProperty"><string>true</string></field>
+                                    <field name="remove"><string>true</string></field>
+                                  </object>
+                                </value>
+                                <value>
+                                  <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig$Permission">
+                                    <field name="identity"><string>*:/platform/users</string></field>
+                                    <field name="read"><string>true</string></field>
+                                    <field name="addNode"><string>false</string></field>
+                                    <field name="setProperty"><string>true</string></field>
+                                    <field name="remove"><string>false</string></field>
+                                  </object>
+                                </value>
+                              </collection>
+                            </field>
+                        </object>
+                    </value>
+                    </collection>
+                </field>
+              </object>
+            </object-param>
+          </init-params>
+        </component-plugin>
+    </external-component-plugins>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-10.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-10.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-10.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+      <key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
+      <type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
+      <init-params>
+        <value-param>
+          <name>conf-path</name>
+          <description>JCR configuration file</description>
+          <value>war:/conf/jcr/repository-configuration.xml</value>
+        </value-param>
+        <properties-param>
+          <name>working-conf</name>
+          <description>working-conf</description>
+          <property name="persister-class-name" value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister"/>
+          <property name="source-name" value="jdbcexo"/>
+          <property name="dialect" value="hsqldb"/>
+        </properties-param>
+      </init-params>
+    </component>
+
+    <component>
+      <type>org.exoplatform.services.jcr.ext.registry.RegistryService</type>
+      <init-params>
+        <properties-param>
+            <name>locations</name>
+            <property name="repository" value="system"/>
+        </properties-param>
+      </init-params>
+    </component>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-11.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-11.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-11.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+      <key>org.exoplatform.services.database.HibernateService</key>
+      <jmx-name>database:type=HibernateService</jmx-name>
+      <type>org.exoplatform.services.database.impl.HibernateServiceImpl</type>
+      <init-params>
+        <properties-param>
+          <name>hibernate.properties</name>
+          <description>Default Hibernate Service</description>
+          <property name="hibernate.show_sql" value="false"/>
+          <property name="hibernate.cglib.use_reflection_optimizer" value="true"/>
+          <property name="hibernate.connection.url" value="jdbc:hsqldb:file:../temp/data/exodb"/>
+          <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
+          <property name="hibernate.connection.autocommit" value="true"/>
+          <property name="hibernate.connection.username" value="sa"/>
+          <property name="hibernate.connection.password" value=""/>
+          <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
+          <property name="hibernate.c3p0.min_size" value="5"/>
+          <property name="hibernate.c3p0.max_size" value="20"/>
+          <property name="hibernate.c3p0.timeout" value="1800"/>
+          <property name="hibernate.c3p0.max_statements" value="50"/>
+        </properties-param>
+      </init-params>
+    </component>
+
+    <!--
+    <component>
+      <key>org.exoplatform.services.database.DatabaseService</key>
+      <type>org.exoplatform.services.database.impl.XAPoolTxSupportDatabaseService</type>
+      <init-params>
+        <properties-param>
+          <name>default</name>
+          <description>Connection configuration</description>
+          <property name='connection.driver' value='org.hsqldb.jdbcDriver'/>
+          <property name='connection.url' value='jdbc:hsqldb:file:../temp/data/exodb'/>
+          <property name='connection.login' value='sa'/>
+          <property name='connection.password' value=''/>
+          <property name='connection.min-size' value='3'/>
+          <property name='connection.max-size' value='5'/>
+        </properties-param>
+      </init-params>
+    </component>
+    -->
+
+    <external-component-plugins>
+      <target-component>org.exoplatform.services.naming.InitialContextInitializer</target-component>
+      <component-plugin>
+        <name>bind.datasource</name>
+        <set-method>addPlugin</set-method>
+        <type>org.exoplatform.services.naming.BindReferencePlugin</type>
+        <init-params>
+          <value-param>
+            <name>bind-name</name>
+            <value>jdbcexo</value>
+          </value-param>
+          <value-param>
+            <name>class-name</name>
+            <value>javax.sql.DataSource</value>
+          </value-param>
+          <value-param>
+            <name>factory</name>
+            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
+          </value-param>
+          <properties-param>
+            <name>ref-addresses</name>
+            <description>ref-addresses</description>
+            <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
+            <property name="url" value="jdbc:hsqldb:file:../temp/data/exodb"/>
+            <property name="username" value="sa"/>
+            <property name="password" value=""/>
+          </properties-param>
+        </init-params>
+      </component-plugin>
+    </external-component-plugins>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-12.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-12.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-12.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+        <type>org.exoplatform.services.portletcontainer.PortletContainerConf</type>
+        <init-params>
+            <object-param>
+                <name>conf</name>
+                <object type="org.exoplatform.services.portletcontainer.PortletContainer">
+                    <field name="global">
+                        <object type="org.exoplatform.services.portletcontainer.config.Global">
+                            <field name="name"><string>ExoPortletContainer</string></field>
+                            <field name="description">
+                                <string>A JSR 286 compliant portlet container </string>
+                            </field>
+                            <field name="majorVersion"><int>2</int></field>
+                            <field name="minorVersion"><int>0</int></field>
+                        </object>
+                    </field>
+                    <field name="bundle">
+                        <object type="org.exoplatform.services.portletcontainer.config.DelegatedBundle">
+                            <field name="enable"><string>true</string></field>
+                        </object>
+                    </field>
+                    <field name="cache">
+                        <object type="org.exoplatform.services.portletcontainer.config.Cache">
+                            <field name="enable"><string>true</string></field>
+                        </object>
+                    </field>
+                    <field name="supportedContent">
+                        <collection type="java.util.ArrayList">
+                            <value>
+                                <object	type="org.exoplatform.services.portletcontainer.config.SupportedContent">
+                                    <field name="name"><string>text/html</string></field>
+                                </object>
+                            </value>
+                            <value>
+                                <object type="org.exoplatform.services.portletcontainer.config.SupportedContent">
+                                    <field name="name"> <string>text/wml</string> </field>
+                                </object>
+                            </value>
+                            <value>
+                                <object type="org.exoplatform.services.portletcontainer.config.SupportedContent">
+                                    <field name="name"> <string>audio/x-mpeg</string></field>
+                                </object>
+                            </value>
+                            <value>
+                                <object	type="org.exoplatform.services.portletcontainer.config.SupportedContent">
+                                    <field name="name"> <string>image/bmp</string> </field>
+                                </object>
+                            </value>
+                            <value>
+                                <object type="org.exoplatform.services.portletcontainer.config.SupportedContent">
+                                    <field name="name"> <string>image/jpg</string> </field>
+                                </object>
+                            </value>
+                            <value>
+                                <object type="org.exoplatform.services.portletcontainer.config.SupportedContent">
+                                    <field name="name"> <string>image/jpeg</string> </field>
+                                </object>
+                            </value>
+                            <value>
+                                <object type="org.exoplatform.services.portletcontainer.config.SupportedContent">
+                                    <field name="name"> <string>image/gif</string> </field>
+                                </object>
+                            </value>
+                        </collection>
+                    </field>
+                    <field name="customMode">
+                        <collection type="java.util.ArrayList">
+                            <value>
+                                <object type="org.exoplatform.services.portletcontainer.config.CustomMode">
+                                    <field name="name"> <string>config</string> </field>
+                                    <field name="description">
+                                        <collection type="java.util.ArrayList">
+                                            <value>
+                                                <object type="org.exoplatform.services.portletcontainer.config.Description">
+                                                    <field name="lang"> <string>en</string></field>
+                                                    <field name="description"><string>to let admin config portlets </string> </field>
+                                                </object>
+                                            </value>
+                                            <value>
+                                                <object type="org.exoplatform.services.portletcontainer.config.Description">
+                                                    <field
+                                                        name="lang">
+                                                        <string>
+                                                            fr
+                                                        </string>
+                                                    </field>
+                                                    <field
+                                                        name="description">
+                                                        <string>
+                                                            permet de
+                                                            configurer
+                                                            les portlets
+                                                        </string>
+                                                    </field>
+                                                </object>
+                                            </value>
+                                        </collection>
+                                    </field>
+                                </object>
+                            </value>
+                        </collection>
+                    </field>
+                    <field name="properties">
+                        <collection type="java.util.ArrayList">
+                            <value>
+                                <object
+                                    type="org.exoplatform.services.portletcontainer.config.Properties">
+                                    <field name="description">
+                                        <string>
+                                            a testing property
+                                        </string>
+                                    </field>
+                                    <field name="name">
+                                        <string>test</string>
+                                    </field>
+                                    <field name="value">
+                                        <string>test_value</string>
+                                    </field>
+                                </object>
+                            </value>
+                        </collection>
+                    </field>
+                </object>
+            </object-param>
+        </init-params>
+    </component>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-13.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-13.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-13.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <import>war:/conf/common/common-configuration.xml</import>
+    <import>war:/conf/common/logs-configuration.xml</import>
+    <import>war:/conf/database/database-configuration.xml</import>
+    <import>war:/conf/jcr/jcr-configuration.xml</import>
+    <import>war:/conf/common/portlet-container-configuration.xml</import>
+
+    <!--if organization service is database, import hibernate-organization-configuration.xml-->
+    <import>war:/conf/organization/hibernate-configuration.xml</import>
+
+    <!-- <import>war:/conf/jdbc-configuration.xml</import> -->
+    <!--for organization service used active directory which is user lookup server -->
+    <!--
+        <import>war:/conf/activedirectory-configuration.xml</import>
+    -->
+
+    <!--for organization service used ldap server which is user lookup server -->
+    <!--
+      <import>war:/conf/ldap-configuration.xml</import>
+    -->
+    <!-- <import>war:/conf/security-configuration.xml</import> -->
+    <import>war:/conf/organization/organization-configuration.xml</import>
+    <import>war:/conf/jcr/component-plugins-configuration.xml</import>
+    <import>war:/conf/mail/portal-mail-configuration.xml</import>
+    <import>war:/conf/portal/portal-configuration.xml</import>
+    <import>war:/conf/portal/application-registry-configuration.xml</import>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-14.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-14.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-14.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+        <key>org.exoplatform.services.security.SecurityService</key>
+        <type>org.exoplatform.services.security.impl.SecurityServiceImpl</type>
+      <init-params>
+        <value-param>
+          <name>security.authentication</name>
+          <value>sso</value>
+        </value-param>
+        <value-param>
+          <name>security.sso-authentication</name>
+          <value>cas</value>
+        </value-param>
+      </init-params>
+    </component>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-15.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-15.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-15.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+      <key>org.exoplatform.services.log.LogConfigurationInitializer</key>
+      <type>org.exoplatform.services.log.LogConfigurationInitializer</type>
+      <init-params>
+
+      <!-- JDK -->
+              <value-param>
+                  <name>configurator</name>
+                  <value>org.exoplatform.services.log.impl.Jdk14Configurator</value>
+              </value-param>
+              <properties-param>
+                  <name>properties</name>
+                  <description>jdk1.4 Logger properties</description>
+                  <property name="handlers" value="java.util.logging.ConsoleHandler"/>
+                  <property name=".level" value="FINE"/>
+                  <property name="java.util.logging.ConsoleHandler.level" value="FINE"/>
+              </properties-param>
+      <!-- end JDK -->
+      <!-- Log4J -->
+      <!--
+              <value-param>
+                  <name>configurator</name>
+                  <value>org.exoplatform.services.log.impl.Log4JConfigurator</value>
+              </value-param>
+              <properties-param>
+                  <name>properties</name>
+                  <description>Log4J properties</description>
+                  <property name="log4j.rootLogger" value="DEBUG, stdout, file"/>
+                  <property name="log4j.appender.stdout" value="org.apache.log4j.ConsoleAppender"/>
+                  <property name="log4j.appender.stdout.layout" value="org.apache.log4j.PatternLayout"/>
+                  <property name="log4j.appender.stdout.layout.ConversionPattern" value="%d {dd.MM.yyyy HH:mm:ss} %c {1}: %m (%F, line %L) %n"/>
+                  <property name="log4j.appender.file" value="org.apache.log4j.FileAppender"/>
+                  <property name="log4j.appender.file.File" value="jcr.log"/>
+                  <property name="log4j.appender.file.layout" value="org.apache.log4j.PatternLayout"/>
+                  <property name="log4j.appender.file.layout.ConversionPattern" value="%d{dd.MM.yyyy HH:mm:ss} %m (%F, line %L) %n"/>
+              </properties-param>
+      -->
+      <!-- end Log4J-->
+      </init-params>
+    </component>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-16.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-16.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-16.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+    <component>
+    <key>org.exoplatform.services.naming.InitialContextInitializer</key>
+    <type>org.exoplatform.services.naming.InitialContextInitializer</type>
+    <init-params>
+      <properties-param>
+        <name>default-properties</name>
+        <description>Default initial context properties</description>
+        <!--
+        <property name="java.naming.factory.initial" value="org.exoplatform.services.naming.SimpleContextFactory"/>
+        -->
+      </properties-param>
+    </init-params>
+  </component>
+
+  <component>
+    <key>org.exoplatform.services.resources.LocaleConfigService</key>
+    <type>org.exoplatform.services.resources.impl.LocaleConfigServiceImpl</type>
+      <init-params>
+        <value-param>
+          <name>locale.config.file</name>
+          <value>war:/conf/common/locales-config.xml</value>
+        </value-param>
+      </init-params>
+  </component>
+
+  <component>
+    <key>org.exoplatform.services.resources.ResourceBundleService</key>
+    <type>org.exoplatform.services.resources.jcr.ResourceBundleServiceImpl</type>
+    <init-params>
+      <values-param>
+        <name>classpath.resources</name>
+        <description>The resources  that start with the following package name should be load from file system</description>
+        <value>locale.portlet</value>
+      </values-param>
+      <values-param>
+        <name>init.resources</name>
+        <description>Store the following resources into the db for  the first launch </description>
+        <value>locale.portal.expression</value>
+        <value>locale.portal.services</value>
+        <value>locale.portal.webui</value>
+        <value>locale.portal.custom</value>
+        <value>locale.navigation.portal.classic</value>
+        <value>locale.navigation.group.platform.administrators</value>
+        <value>locale.navigation.group.platform.users</value>
+        <value>locale.navigation.group.platform.guests</value>
+        <value>locale.navigation.group.organization.management.executive-board</value>
+      </values-param>
+      <values-param>
+        <name>portal.resource.names</name>
+        <description>The properties files of  the portal ,  those file will be merged
+          into one ResoruceBundle properties </description>
+        <value>locale.portal.expression</value>
+        <value>locale.portal.services</value>
+        <value>locale.portal.webui</value>
+        <value>locale.portal.custom</value>
+      </values-param>
+    </init-params>
+  </component>
+
+  <component>
+      <key>org.exoplatform.services.cache.CacheService</key>
+    <jmx-name>cache:type=CacheService</jmx-name>
+      <type>org.exoplatform.services.cache.impl.CacheServiceImpl</type>
+      <init-params>
+      <object-param>
+        <name>cache.config.default</name>
+        <description>The default cache configuration</description>
+        <object type="org.exoplatform.services.cache.ExoCacheConfig">
+          <field name="name"><string>default</string></field>
+          <field name="maxSize"><int>300</int></field>
+          <field name="liveTime"><long>-1</long></field>
+          <field name="distributed"><boolean>false</boolean></field>
+          <field name="implementation"><string>org.exoplatform.services.cache.concurrent.ConcurrentFIFOExoCache</string></field>
+        </object>
+      </object-param>
+    </init-params>
+  </component>
+    
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-17.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-17.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-17.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+  <component>
+  <key>org.exoplatform.services.naming.InitialContextInitializer</key>
+  <type>org.exoplatform.services.naming.InitialContextInitializer</type>
+  <init-params>
+    <object-param>
+      <name>configuration</name>
+      <object type="org.exoplatform.services.organization.idm.Config">
+        <field name="typeMappings">
+          <map type="java">
+            <entry>
+              <key><string>/</string></key>
+              <value><string>root</string></value>
+            </entry>
+          </map>
+        </field>
+      </object>
+    </object-param>
+  </init-params>
+</component>
+
+<component>
+<key>org.exoplatform.services.naming.InitialContextInitializer</key>
+<type>org.exoplatform.services.naming.InitialContextInitializer</type>
+<init-params>
+  <object-param>
+    <name>configuration</name>
+    <object type="package.name">
+      <field  name="string"><string>This is a string</string></field>
+      <field  name="int"><int>1234</int></field>
+      <field  name="long"><long>123456</long></field>
+      <field  name="double"><double>1.1234</double></field>
+      <field  name="boolean"><boolean>true</boolean></field>
+      <field  name="name">
+        <object type="package.name">
+          <field  name="nested 1"><string>value</string></field>
+          <field  name="nested 2"><int>1234</int></field>
+        </object>
+      </field>
+      <field  name="map">
+        <map type="java.util.HashMap">
+          <entry>
+            <key><string>akey</string></key>
+            <value><string>a value</string></value>
+          </entry>
+          <entry>
+            <key><int>1234</int></key>
+            <value><string>a value</string></value>
+          </entry>
+        </map>
+      </field>
+      <field  name="list">
+        <collection type="java.util.ArrayList">
+          <value><string>a value</string></value>
+        </collection>
+      </field>
+    </object>
+  </object-param>
+</init-params>
+</component>
+
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-18.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-18.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-18.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009 eXo Platform SAS.
+
+    This is free software; you can redistribute it and/or modify it
+    under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of
+    the License, or (at your option) any later version.
+
+    This software is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this software; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+    02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<configuration
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+   xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+
+  <component>
+    <key>org.exoplatform.services.naming.InitialContextInitializer</key>
+    <type>org.exoplatform.services.naming.InitialContextInitializer</type>
+  </component>
+
+  <component profiles="a">
+    <key>org.exoplatform.services.naming.InitialContextInitializer</key>
+    <type>org.exoplatform.services.naming.InitialContextInitializer</type>
+  </component>
+
+  <component profiles="a,b">
+    <key>org.exoplatform.services.naming.InitialContextInitializer</key>
+    <type>org.exoplatform.services.naming.InitialContextInitializer</type>
+  </component>
+
+  <component>
+    <key>org.exoplatform.services.naming.InitialContextInitializer</key>
+    <type>org.exoplatform.services.naming.InitialContextInitializer</type>
+    <init-params>
+      <object-param>
+        <name>object</name>
+        <object type="object"></object>
+      </object-param>
+      <object-param profiles="a">
+        <name>object</name>
+        <object type="object"></object>
+      </object-param>
+      <object-param profiles="a,b">
+        <name>object</name>
+        <object type="object"></object>
+      </object-param>
+      <properties-param>
+        <name>properties</name>
+      </properties-param>
+      <properties-param profiles="a">
+        <name>properties</name>
+      </properties-param>
+      <properties-param profiles="a,b">
+        <name>properties</name>
+      </properties-param>
+      <value-param>
+        <name>value</name>
+        <value>value</value>
+      </value-param>
+      <value-param profiles="a">
+        <name>value</name>
+        <value>value</value>
+      </value-param>
+      <value-param profiles="a,b">
+        <name>value</name>
+        <value>value</value>
+      </value-param>
+      <values-param>
+        <name>values</name>
+      </values-param>
+      <values-param profiles="a">
+        <name>values</name>
+      </values-param>
+      <values-param profiles="a,b">
+        <name>values</name>
+      </values-param>
+    </init-params>
+  </component>
+
+  <import>import_1</import>
+  <import profiles="a">import_1</import>
+  <import profiles="a,b">import_1</import>
+
+</configuration>
\ No newline at end of file

Added: kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-19.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-19.xml	                        (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/xsd_1_2/sample-configuration-19.xml	2010-05-06 11:53:08 UTC (rev 2351)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+	<!--
+
+		Copyright (C) 2009 eXo Platform SAS. This is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License
+		as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This software is distributed in the
+		hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+		Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this software; if not,
+		write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+	-->
+<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+	xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+	<container-lifecycle-plugin>
+		<type>org.exoplatform.container.TestExoContainer$MyContainerLifecyclePlugin1</type>
+	</container-lifecycle-plugin>
+	<container-lifecycle-plugin>
+		<name>MyContainerLifecyclePlugin2</name>
+		<type>org.exoplatform.container.TestExoContainer$MyContainerLifecyclePlugin2</type>
+		<description>The description of the plugin</description>
+		<priority>10</priority>
+		<init-params>
+			<value-param>
+				<name>param</name>
+				<description>a test parameter</description>
+				<value>value</value>
+			</value-param>
+		</init-params>
+	</container-lifecycle-plugin>
+
+</configuration>
\ No newline at end of file



More information about the exo-jcr-commits mailing list