OW2 Consortium
Search OW2 Mail Archive: 

Advanced Search - Powered by Google


Mail Archive Home | fractal-commits List | November 2006 Index

<--  Date Index  --> <--  Thread Index  -->

CVS update of julia (11 files)


    Date: Thursday, November 23, 2006 @ 15:35:17
  Author: seintur
    Path: /cvsroot/fractal/julia

   Added: src/org/objectweb/fractal/juliak/membrane/BasicMixinLayers.java
          src/org/objectweb/fractal/juliak/membrane/MixinLayersDef.java
Modified: src/org/objectweb/fractal/juliak/membrane/BasicMembranes.java
          src/org/objectweb/fractal/juliak/membrane/JuliakMembranes.java
          src/org/objectweb/fractal/juliak/membrane/MembraneDefProvider.java
          
          src/org/objectweb/fractal/juliak/spoon/KeepGeneratedProcessor.java
          
          src/org/objectweb/fractal/juliak/spoon/SpoonMixinClassProcessor.java
          
          
test/conform/org/objectweb/fractal/julia/conform/controllers/StatMembranes.java
 Removed: src/org/objectweb/fractal/juliak/spoon/AOKellMixinLayers.java
          src/org/objectweb/fractal/juliak/spoon/BasicMixinLayers.java
          src/org/objectweb/fractal/juliak/spoon/MixinLayersDef.java

Let the membrane and mixin layers be defined in the same class (easier to 
deal with when writing an extension.)


---------------------------------------------------------------------------------+
 src/org/objectweb/fractal/juliak/membrane/BasicMembranes.java                
   |    2 
 src/org/objectweb/fractal/juliak/membrane/BasicMixinLayers.java              
   |  448 ++++++++++
 src/org/objectweb/fractal/juliak/membrane/JuliakMembranes.java               
   |   63 +
 src/org/objectweb/fractal/juliak/membrane/MembraneDefProvider.java           
   |    5 
 src/org/objectweb/fractal/juliak/membrane/MixinLayersDef.java                
   |   55 +
 src/org/objectweb/fractal/juliak/spoon/AOKellMixinLayers.java                
   |   40 
 src/org/objectweb/fractal/juliak/spoon/BasicMixinLayers.java                 
   |  448 ----------
 src/org/objectweb/fractal/juliak/spoon/KeepGeneratedProcessor.java           
   |    5 
 src/org/objectweb/fractal/juliak/spoon/MixinLayersDef.java                   
   |   55 -
 src/org/objectweb/fractal/juliak/spoon/SpoonMixinClassProcessor.java         
   |    5 
 
test/conform/org/objectweb/fractal/julia/conform/controllers/StatMembranes.java
 |    6 
 11 files changed, 581 insertions(+), 551 deletions(-)


Index: julia/src/org/objectweb/fractal/juliak/membrane/BasicMembranes.java
diff -u 
julia/src/org/objectweb/fractal/juliak/membrane/BasicMembranes.java:1.4 
julia/src/org/objectweb/fractal/juliak/membrane/BasicMembranes.java:1.5
--- julia/src/org/objectweb/fractal/juliak/membrane/BasicMembranes.java:1.4   
  Fri Nov 10 21:06:37 2006
+++ julia/src/org/objectweb/fractal/juliak/membrane/BasicMembranes.java Thu 
Nov 23 15:35:17 2006
@@ -30,7 +30,7 @@
  * @author Lionel Seinturier <Lionel.Seinturier@xxxxxxx>
  * @since 2.5
  */
-public class BasicMembranes implements MembraneDefProvider {
+public class BasicMembranes {
 
     /**
      * Return the definitions of membranes supported by Juliak.
Index: julia/src/org/objectweb/fractal/juliak/membrane/BasicMixinLayers.java
diff -u /dev/null 
julia/src/org/objectweb/fractal/juliak/membrane/BasicMixinLayers.java:1.1
--- /dev/null   Thu Nov 23 15:35:17 2006
+++ julia/src/org/objectweb/fractal/juliak/membrane/BasicMixinLayers.java     
  Thu Nov 23 15:35:17 2006
@@ -0,0 +1,448 @@
+/***
+ * Julia
+ * Copyright (C) 2005-2006 INRIA, France Telecom, USTL
+ *
+ * This library 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 of the License, or (at your option) any later version.
+ *
+ * This library 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 library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Contact: Lionel.Seinturier@xxxxxxx
+ *
+ * Author: Lionel Seinturier
+ */
+
+package org.objectweb.fractal.juliak.membrane;
+
+import org.objectweb.fractal.julia.BasicComponentMixin;
+import org.objectweb.fractal.julia.BasicControllerMixin;
+import org.objectweb.fractal.julia.TypeComponentMixin;
+import org.objectweb.fractal.julia.UseComponentMixin;
+import 
org.objectweb.fractal.julia.control.attribute.UseCloneableAttributeControllerMixin;
+import 
org.objectweb.fractal.julia.control.binding.BasicBindingControllerMixin;
+import org.objectweb.fractal.julia.control.binding.CheckBindingMixin;
+import 
org.objectweb.fractal.julia.control.binding.ContainerBindingControllerMixin;
+import org.objectweb.fractal.julia.control.binding.ContentBindingMixin;
+import org.objectweb.fractal.julia.control.binding.InterceptorBindingMixin;
+import org.objectweb.fractal.julia.control.binding.LifeCycleBindingMixin;
+import 
org.objectweb.fractal.julia.control.binding.OptimizedCompositeBindingMixin;
+import org.objectweb.fractal.julia.control.binding.TypeBasicBindingMixin;
+import org.objectweb.fractal.julia.control.binding.TypeBindingMixin;
+import 
org.objectweb.fractal.julia.control.content.BasicContentControllerMixin;
+import org.objectweb.fractal.julia.control.content.BasicSuperControllerMixin;
+import org.objectweb.fractal.julia.control.content.BindingContentMixin;
+import org.objectweb.fractal.julia.control.content.CheckContentMixin;
+import org.objectweb.fractal.julia.control.content.LifeCycleContentMixin;
+import org.objectweb.fractal.julia.control.content.SuperContentMixin;
+import org.objectweb.fractal.julia.control.content.TypeContentMixin;
+import org.objectweb.fractal.julia.control.content.UseContentControllerMixin;
+import org.objectweb.fractal.julia.control.content.UseSuperControllerMixin;
+import 
org.objectweb.fractal.julia.control.lifecycle.BasicLifeCycleControllerMixin;
+import 
org.objectweb.fractal.julia.control.lifecycle.BasicLifeCycleCoordinatorMixin;
+import org.objectweb.fractal.julia.control.lifecycle.ContainerLifeCycleMixin;
+import 
org.objectweb.fractal.julia.control.lifecycle.OptimizedLifeCycleControllerMixin;
+import org.objectweb.fractal.julia.control.lifecycle.TypeLifeCycleMixin;
+import 
org.objectweb.fractal.julia.control.lifecycle.UseLifeCycleControllerMixin;
+import org.objectweb.fractal.julia.control.name.BasicNameControllerMixin;
+import org.objectweb.fractal.julia.control.name.UseNameControllerMixin;
+import org.objectweb.fractal.julia.factory.AttributeTemplateMixin;
+import org.objectweb.fractal.julia.factory.BasicTemplateMixin;
+import org.objectweb.fractal.julia.factory.NameTemplateMixin;
+import 
org.objectweb.fractal.juliak.control.interceptor.CollectionItfComponentMixin;
+import 
org.objectweb.fractal.juliak.control.interceptor.CollectionItfContentControllerMixin;
+import 
org.objectweb.fractal.juliak.control.interceptor.InterceptorControllerMixin;
+
+/**
+ * This class defines the basic mixin layers which are used by Juliak.
+ * 
+ * @author Lionel Seinturier <Lionel.Seinturier@xxxxxxx>
+ * @since 2.5
+ */
+public class BasicMixinLayers {
+
+    public MixinLayersDef[] getMixinLayers() {
+        return LAYERS;
+    }
+    
+    
+    // -------------------------------------------------
+    // Component controller definition
+    // -------------------------------------------------
+    
+    final public static MixinLayersDef componentControllerDef =
+        new MixinLayersDef(
+            "org.objectweb.fractal.juliak.ComponentImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+                    BasicComponentMixin.class,
+                    TypeComponentMixin.class,
+                    CollectionItfComponentMixin.class
+            });
+    
+
+    // -------------------------------------------------
+    // Binding controller definitions
+    // -------------------------------------------------
+
+    final public static MixinLayersDef compositeBindingControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.binding.CompositeBindingControllerImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+                    BasicBindingControllerMixin.class,
+                    TypeBasicBindingMixin.class,
+                    UseComponentMixin.class,
+                    CheckBindingMixin.class,
+                    TypeBindingMixin.class,
+                    UseSuperControllerMixin.class,
+                    ContentBindingMixin.class,
+                    UseLifeCycleControllerMixin.class,
+                    LifeCycleBindingMixin.class,
+                    UseContentControllerMixin.class,
+                    OptimizedCompositeBindingMixin.class
+            });
+
+    final public static MixinLayersDef containerBindingControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.binding.ContainerBindingControllerImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+                    ContainerBindingControllerMixin.class,
+                    UseComponentMixin.class,
+                    InterceptorBindingMixin.class,
+                    CheckBindingMixin.class,
+                    TypeBindingMixin.class,
+                    UseSuperControllerMixin.class,
+                    ContentBindingMixin.class,
+                    UseLifeCycleControllerMixin.class,
+                    LifeCycleBindingMixin.class
+            });
+
+    final public static MixinLayersDef primitiveBindingControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.binding.PrimitiveBindingControllerImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+                    BasicBindingControllerMixin.class,
+                    TypeBasicBindingMixin.class,
+                    UseComponentMixin.class,
+                    CheckBindingMixin.class,
+                    TypeBindingMixin.class,
+                    UseSuperControllerMixin.class,
+                    ContentBindingMixin.class,
+                    
+                    /*
+                     * PrimitiveBindingControllerImpl is used for
+                     * primitiveTemplate and parametricPrimitiveTemplate
+                     * components. Template components do not have a 
lifecycle
+                     * controller. The following two layers are included in
+                     * julia.cfg but shouldn't be.
+                     */
+//                    UseLifeCycleControllerMixin.class,
+//                    LifeCycleBindingMixin.class
+            });
+
+    final public static MixinLayersDef flatPrimitiveBindingControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.binding.FlatPrimitiveBindingControllerImpl",
+            new Class[]{
+                    org.objectweb.fractal.julia.BasicControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.BasicBindingControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.TypeBasicBindingMixin.class,
+                    org.objectweb.fractal.julia.UseComponentMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.CheckBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.TypeBindingMixin.class,
+                    
+                    /*
+                     * FlatPrimitiveBindingControllerImpl is used for
+                     * flatPrimitiveTemplate and 
flatParametricPrimitiveTemplate
+                     * components. Template components do not have a 
lifecycle
+                     * controller. The following two layers are included in
+                     * julia.cfg but shouldn't be.
+                     */
+//                    
org.objectweb.fractal.julia.control.lifecycle.UseLifeCycleControllerMixin.class,
+//                    
org.objectweb.fractal.julia.control.binding.LifeCycleBindingMixin.class
+            });
+
+    final public static MixinLayersDef flatContainerBindingControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.binding.FlatContainerBindingControllerImpl",
+            new Class[]{
+                    org.objectweb.fractal.julia.BasicControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.ContainerBindingControllerMixin.class,
+                    org.objectweb.fractal.julia.UseComponentMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.InterceptorBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.CheckBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.TypeBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.lifecycle.UseLifeCycleControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.LifeCycleBindingMixin.class
+            });
+
+    
+    // -------------------------------------------------
+    // Auto-binding controller definitions
+    // -------------------------------------------------
+
+    final public static MixinLayersDef containerAutoBindingControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.binding.ContainerAutoBindingControllerImpl",
+            new Class[]{
+                    org.objectweb.fractal.julia.BasicControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.ContainerBindingControllerMixin.class,
+                    org.objectweb.fractal.julia.UseComponentMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.InterceptorBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.CheckBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.TypeBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.content.UseSuperControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.ContentBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.lifecycle.UseLifeCycleControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.LifeCycleBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.AutoBindingMixin.class
+            });
+
+    final public static MixinLayersDef compositeAutoBindingControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.binding.CompositeAutoBindingControllerImpl",
+            new Class[]{
+                    org.objectweb.fractal.julia.BasicControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.BasicBindingControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.TypeBasicBindingMixin.class,
+                    org.objectweb.fractal.julia.UseComponentMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.CheckBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.TypeBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.content.UseSuperControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.ContentBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.lifecycle.UseLifeCycleControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.LifeCycleBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.content.UseContentControllerMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.OptimizedCompositeBindingMixin.class,
+                    
org.objectweb.fractal.julia.control.binding.AutoBindingMixin.class
+            });
+
+
+    // -------------------------------------------------
+    // Lifecycle controller definitions
+    // -------------------------------------------------
+    
+    final public static MixinLayersDef compositeLifeCycleControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.lifecycle.CompositeLifeCycleControllerImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+                    UseComponentMixin.class,
+                    BasicLifeCycleCoordinatorMixin.class,
+                    OptimizedLifeCycleControllerMixin.class,
+                    TypeLifeCycleMixin.class
+            });
+
+    final public static MixinLayersDef lifeCycleControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.lifecycle.LifeCycleControllerImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+                    UseComponentMixin.class,
+                    BasicLifeCycleCoordinatorMixin.class,
+                    BasicLifeCycleControllerMixin.class,
+                    TypeLifeCycleMixin.class,
+                    ContainerLifeCycleMixin.class
+            });
+
+    
+    // -------------------------------------------------
+    // Content controller definition
+    // -------------------------------------------------
+    
+    final public static MixinLayersDef contentControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.content.ContentControllerImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+                    UseComponentMixin.class,
+                    BasicContentControllerMixin.class,
+                    CheckContentMixin.class,
+                    TypeContentMixin.class,
+                    CollectionItfContentControllerMixin.class,
+                    BindingContentMixin.class,
+                    UseLifeCycleControllerMixin.class,
+                    LifeCycleContentMixin.class,
+                    SuperContentMixin.class
+            });
+
+    
+    // -------------------------------------------------
+    // Name controller definition
+    // -------------------------------------------------
+
+    final public static MixinLayersDef nameControllerDef =
+        new MixinLayersDef(
+            "org.objectweb.fractal.juliak.control.name.NameControllerImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+                    BasicNameControllerMixin.class
+            });
+
+    
+    // -------------------------------------------------
+    // Super controller definition
+    // -------------------------------------------------
+
+    final public static MixinLayersDef superControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.content.SuperControllerImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+                    BasicSuperControllerMixin.class
+            });
+
+    
+    // -------------------------------------------------
+    // Factory controller definition
+    // -------------------------------------------------
+
+    final public static MixinLayersDef factoryControllerDef =
+        new MixinLayersDef(
+            "org.objectweb.fractal.juliak.factory.FactoryControllerImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+                    UseComponentMixin.class,
+                    BasicTemplateMixin.class,
+                    UseCloneableAttributeControllerMixin.class,
+                    AttributeTemplateMixin.class,
+                    UseNameControllerMixin.class,
+                    NameTemplateMixin.class
+            });
+
+    
+    // -------------------------------------------------
+    // Interceptor controller definition
+    // -------------------------------------------------
+
+    final public static MixinLayersDef interceptorControllerDef =
+        new MixinLayersDef(
+            
"org.objectweb.fractal.juliak.control.interceptor.InterceptorCompControllerImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+                    InterceptorControllerMixin.class
+            });
+
+    
+    // -------------------------------------------------
+    // Merged control membranes
+    // -------------------------------------------------
+    
+    final public static MixinLayersDef primitiveMembraneDef =
+        new MixinLayersDef(
+            "org.objectweb.fractal.juliak.PrimitiveMembraneImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+
+                    // Interceptor controller
+                    InterceptorControllerMixin.class,
+
+                    // Super controller
+                    BasicSuperControllerMixin.class,
+
+                    // Binding controller
+                    ContainerBindingControllerMixin.class,
+                    InterceptorBindingMixin.class,
+                    CheckBindingMixin.class,
+                    TypeBindingMixin.class,
+                    UseSuperControllerMixin.class,
+                    ContentBindingMixin.class,
+                    UseLifeCycleControllerMixin.class,
+                    LifeCycleBindingMixin.class,
+                    
+                    // Lifecycle controller
+                    UseComponentMixin.class,
+                    BasicLifeCycleCoordinatorMixin.class,
+                    BasicLifeCycleControllerMixin.class,
+                    TypeLifeCycleMixin.class,
+                    ContainerLifeCycleMixin.class,
+                    
+                    // Name controller
+                    BasicNameControllerMixin.class,
+                    
+                    // Component controller
+                    BasicComponentMixin.class,
+                    TypeComponentMixin.class
+            });
+    
+    final public static MixinLayersDef compositeMembraneDef =
+        new MixinLayersDef(
+            "org.objectweb.fractal.juliak.CompositeMembraneImpl",
+            new Class[]{
+                    BasicControllerMixin.class,
+
+                    // Content controller
+                    BasicContentControllerMixin.class,
+                    CheckContentMixin.class,
+                    TypeContentMixin.class,
+                    BindingContentMixin.class,
+                    LifeCycleContentMixin.class,
+                    SuperContentMixin.class,
+
+                    // Super controller
+                    BasicSuperControllerMixin.class,
+
+                    // Binding controller
+                    BasicBindingControllerMixin.class,
+                    TypeBasicBindingMixin.class,
+                    CheckBindingMixin.class,
+                    TypeBindingMixin.class,
+                    UseSuperControllerMixin.class,
+                    ContentBindingMixin.class,
+                    UseLifeCycleControllerMixin.class,
+                    LifeCycleBindingMixin.class,
+                    UseContentControllerMixin.class,
+                    OptimizedCompositeBindingMixin.class,
+                    
+                    // Lifecycle controller
+                    UseComponentMixin.class,
+                    BasicLifeCycleCoordinatorMixin.class,
+                    OptimizedLifeCycleControllerMixin.class,
+                    TypeLifeCycleMixin.class,
+                    
+                    // Name controller
+                    BasicNameControllerMixin.class,
+                    
+                    // Component controller
+                    BasicComponentMixin.class,
+                    TypeComponentMixin.class
+            });
+    
+
+    // -------------------------------------------------
+    // Layers definition
+    // -------------------------------------------------
+    
+    final public static MixinLayersDef[] LAYERS =
+        new MixinLayersDef[] {
+            componentControllerDef,
+            compositeBindingControllerDef,
+            containerBindingControllerDef,
+            primitiveBindingControllerDef,
+            containerAutoBindingControllerDef,
+            compositeAutoBindingControllerDef,
+            flatPrimitiveBindingControllerDef,
+            flatContainerBindingControllerDef,
+            compositeLifeCycleControllerDef,
+            lifeCycleControllerDef,
+            contentControllerDef,
+            nameControllerDef,
+            superControllerDef,
+            factoryControllerDef,
+            interceptorControllerDef,
+            primitiveMembraneDef,
+            compositeMembraneDef
+        };
+
+}
Index: julia/src/org/objectweb/fractal/juliak/membrane/JuliakMembranes.java
diff -u 
julia/src/org/objectweb/fractal/juliak/membrane/JuliakMembranes.java:1.4 
julia/src/org/objectweb/fractal/juliak/membrane/JuliakMembranes.java:1.5
--- julia/src/org/objectweb/fractal/juliak/membrane/JuliakMembranes.java:1.4  
  Fri Nov 10 21:06:37 2006
+++ julia/src/org/objectweb/fractal/juliak/membrane/JuliakMembranes.java      
  Thu Nov 23 15:35:17 2006
@@ -50,13 +50,67 @@
         /*
          * Retrieve additional membrane definitions.
          */
-        String add = System.getProperty(Juliak.CONFIG_PROP_NAME);
-        if( add==null || add.length()==0 ) {
+        List<MembraneDefProvider> mdps = getAdditionalMembraneDefs();
+        if( mdps == null ) {
             return basic;
         }
         
         List<MembraneDef> all = new ArrayList<MembraneDef>();
         all.addAll(Arrays.asList(basic));
+        for (MembraneDefProvider mdp : mdps) {
+            MembraneDef[] mdef = mdp.getMembraneDefs();
+            if( mdef != null ) {
+                all.addAll(Arrays.asList(mdef));
+            }
+        }
+        
+        return (MembraneDef[]) all.toArray(new MembraneDef[all.size()]);
+    }
+    
+    /**
+     * Return an array of mixin layer definitions.
+     */
+    public MixinLayersDef[] getMixinLayers() {
+        
+        MixinLayersDef[] basic = new BasicMixinLayers().getMixinLayers();    
    
+
+        /*
+         * Retrieve additional membrane definitions.
+         */
+        List<MembraneDefProvider> mdps = getAdditionalMembraneDefs();
+        if( mdps == null ) {
+            return basic;
+        }
+        
+        List<MixinLayersDef> all = new ArrayList<MixinLayersDef>();
+        all.addAll(Arrays.asList(basic));
+        for (MembraneDefProvider mdp : mdps) {
+            MixinLayersDef[] mldef = mdp.getMixinLayers();
+            if( mldef != null ) {
+                all.addAll(Arrays.asList(mldef));
+            }
+        }
+        
+        return (MixinLayersDef[]) all.toArray(new 
MixinLayersDef[all.size()]);
+    }
+    
+    
+    // ---------------------------------------------------------
+    // Implementation specific
+    // ---------------------------------------------------------
+    
+    /**
+     * Return the list of additional membrane definition providers which can 
be
+     * specified with the {@link Juliak#CONFIG_PROP_NAME} system property.
+     */
+    private static List<MembraneDefProvider> getAdditionalMembraneDefs() {
+
+        String add = System.getProperty(Juliak.CONFIG_PROP_NAME);
+        if( add==null || add.length()==0 ) {
+            return null;
+        }
+        
+        List<MembraneDefProvider> mdps = new 
ArrayList<MembraneDefProvider>();
         StringTokenizer st = new StringTokenizer(add);
         while( st.hasMoreTokens() ) {
             String name = st.nextToken();
@@ -69,11 +123,10 @@
                 throw new RuntimeException(msg);
             }
             MembraneDefProvider mdp = (MembraneDefProvider) o;
-            MembraneDef[] ms = mdp.getMembraneDefs();
-            all.addAll(Arrays.asList(ms));
+            mdps.add(mdp);
         }
         
-        return (MembraneDef[]) all.toArray(new MembraneDef[all.size()]);
+        return mdps;
     }
     
     private static Object loadAndInstanciate( String name ) {
Index: 
julia/src/org/objectweb/fractal/juliak/membrane/MembraneDefProvider.java
diff -u 
julia/src/org/objectweb/fractal/juliak/membrane/MembraneDefProvider.java:1.2 
julia/src/org/objectweb/fractal/juliak/membrane/MembraneDefProvider.java:1.3
--- 
julia/src/org/objectweb/fractal/juliak/membrane/MembraneDefProvider.java:1.2  
      Fri Nov 10 21:06:37 2006
+++ julia/src/org/objectweb/fractal/juliak/membrane/MembraneDefProvider.java  
  Thu Nov 23 15:35:17 2006
@@ -23,6 +23,7 @@
 
 package org.objectweb.fractal.juliak.membrane;
 
+
 /**
  * Interface for defining control membranes.
  * 
@@ -35,4 +36,8 @@
      */
     public MembraneDef[] getMembraneDefs();
 
+    /**
+     * Return an array of mixin layer definitions.
+     */
+    public MixinLayersDef[] getMixinLayers();
 }
Index: julia/src/org/objectweb/fractal/juliak/membrane/MixinLayersDef.java
diff -u /dev/null 
julia/src/org/objectweb/fractal/juliak/membrane/MixinLayersDef.java:1.1
--- /dev/null   Thu Nov 23 15:35:17 2006
+++ julia/src/org/objectweb/fractal/juliak/membrane/MixinLayersDef.java Thu 
Nov 23 15:35:17 2006
@@ -0,0 +1,55 @@
+/***
+ * Julia
+ * Copyright (C) 2005-2006 INRIA, France Telecom, USTL
+ *
+ * This library 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 of the License, or (at your option) any later version.
+ *
+ * This library 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 library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Contact: Lionel.Seinturier@xxxxxxx
+ *
+ * Author: Lionel Seinturier
+ */
+
+package org.objectweb.fractal.juliak.membrane;
+
+/**
+ * This class defines the mixin layers which are used to generate AOKell 
source
+ * code. These layers are used to generate controller implementations in a
+ * modular way.
+ * 
+ * @author Lionel Seinturier <Lionel.Seinturier@xxxxxxx>
+ * @since 2.5
+ */
+public class MixinLayersDef {
+
+    /** The name of target class holding the mixed code. */
+    private String className;
+    
+    /** The layers to mix. */
+    private Class[] layers;
+
+    public MixinLayersDef(String className, Class[] layers) {
+        this.className = className;
+        this.layers = layers;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public Class[] getLayers() {
+        return layers;
+    }
+    
+}
Index: julia/src/org/objectweb/fractal/juliak/spoon/AOKellMixinLayers.java
diff -u 
julia/src/org/objectweb/fractal/juliak/spoon/AOKellMixinLayers.java:1.3 
julia/src/org/objectweb/fractal/juliak/spoon/AOKellMixinLayers.java:removed
--- julia/src/org/objectweb/fractal/juliak/spoon/AOKellMixinLayers.java:1.3   
  Fri Nov 10 21:06:37 2006
+++ julia/src/org/objectweb/fractal/juliak/spoon/AOKellMixinLayers.java Thu 
Nov 23 15:35:17 2006
@@ -1,40 +0,0 @@
-/***
- * Julia
- * Copyright (C) 2005-2006 INRIA, France Telecom, USTL
- *
- * This library 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 of the License, or (at your option) any later version.
- *
- * This library 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 library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Contact: Lionel.Seinturier@xxxxxxx
- *
- * Author: Lionel Seinturier
- */
-
-package org.objectweb.fractal.juliak.spoon;
-
-
-/**
- * This class allows accessing the mixin layers which are used to generate
- * AOKell source code. These layers are used to generate controller 
- * implementations in a modular way.
- * 
- * @author Lionel Seinturier <Lionel.Seinturier@xxxxxxx>
- * @since 2.5
- */
-public class AOKellMixinLayers {
-
-    public static MixinLayersDef[] getMixinLayers() {
-        return BasicMixinLayers.getMixinLayers();
-    }
-}
Index: julia/src/org/objectweb/fractal/juliak/spoon/BasicMixinLayers.java
diff -u 
julia/src/org/objectweb/fractal/juliak/spoon/BasicMixinLayers.java:1.4 
julia/src/org/objectweb/fractal/juliak/spoon/BasicMixinLayers.java:removed
--- julia/src/org/objectweb/fractal/juliak/spoon/BasicMixinLayers.java:1.4    
  Fri Nov 10 21:06:37 2006
+++ julia/src/org/objectweb/fractal/juliak/spoon/BasicMixinLayers.java  Thu 
Nov 23 15:35:17 2006
@@ -1,448 +0,0 @@
-/***
- * Julia
- * Copyright (C) 2005-2006 INRIA, France Telecom, USTL
- *
- * This library 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 of the License, or (at your option) any later version.
- *
- * This library 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 library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Contact: Lionel.Seinturier@xxxxxxx
- *
- * Author: Lionel Seinturier
- */
-
-package org.objectweb.fractal.juliak.spoon;
-
-import org.objectweb.fractal.julia.BasicComponentMixin;
-import org.objectweb.fractal.julia.BasicControllerMixin;
-import org.objectweb.fractal.julia.TypeComponentMixin;
-import org.objectweb.fractal.julia.UseComponentMixin;
-import 
org.objectweb.fractal.julia.control.attribute.UseCloneableAttributeControllerMixin;
-import 
org.objectweb.fractal.julia.control.binding.BasicBindingControllerMixin;
-import org.objectweb.fractal.julia.control.binding.CheckBindingMixin;
-import 
org.objectweb.fractal.julia.control.binding.ContainerBindingControllerMixin;
-import org.objectweb.fractal.julia.control.binding.ContentBindingMixin;
-import org.objectweb.fractal.julia.control.binding.InterceptorBindingMixin;
-import org.objectweb.fractal.julia.control.binding.LifeCycleBindingMixin;
-import 
org.objectweb.fractal.julia.control.binding.OptimizedCompositeBindingMixin;
-import org.objectweb.fractal.julia.control.binding.TypeBasicBindingMixin;
-import org.objectweb.fractal.julia.control.binding.TypeBindingMixin;
-import 
org.objectweb.fractal.julia.control.content.BasicContentControllerMixin;
-import org.objectweb.fractal.julia.control.content.BasicSuperControllerMixin;
-import org.objectweb.fractal.julia.control.content.BindingContentMixin;
-import org.objectweb.fractal.julia.control.content.CheckContentMixin;
-import org.objectweb.fractal.julia.control.content.LifeCycleContentMixin;
-import org.objectweb.fractal.julia.control.content.SuperContentMixin;
-import org.objectweb.fractal.julia.control.content.TypeContentMixin;
-import org.objectweb.fractal.julia.control.content.UseContentControllerMixin;
-import org.objectweb.fractal.julia.control.content.UseSuperControllerMixin;
-import 
org.objectweb.fractal.julia.control.lifecycle.BasicLifeCycleControllerMixin;
-import 
org.objectweb.fractal.julia.control.lifecycle.BasicLifeCycleCoordinatorMixin;
-import org.objectweb.fractal.julia.control.lifecycle.ContainerLifeCycleMixin;
-import 
org.objectweb.fractal.julia.control.lifecycle.OptimizedLifeCycleControllerMixin;
-import org.objectweb.fractal.julia.control.lifecycle.TypeLifeCycleMixin;
-import 
org.objectweb.fractal.julia.control.lifecycle.UseLifeCycleControllerMixin;
-import org.objectweb.fractal.julia.control.name.BasicNameControllerMixin;
-import org.objectweb.fractal.julia.control.name.UseNameControllerMixin;
-import org.objectweb.fractal.julia.factory.AttributeTemplateMixin;
-import org.objectweb.fractal.julia.factory.BasicTemplateMixin;
-import org.objectweb.fractal.julia.factory.NameTemplateMixin;
-import 
org.objectweb.fractal.juliak.control.interceptor.CollectionItfComponentMixin;
-import 
org.objectweb.fractal.juliak.control.interceptor.CollectionItfContentControllerMixin;
-import 
org.objectweb.fractal.juliak.control.interceptor.InterceptorControllerMixin;
-
-/**
- * This class defines the basic mixin layers which are used by AOKell.
- * 
- * @author Lionel Seinturier <Lionel.Seinturier@xxxxxxx>
- * @since 2.5
- */
-public class BasicMixinLayers {
-
-    public static MixinLayersDef[] getMixinLayers() {
-        return LAYERS;
-    }
-    
-    
-    // -------------------------------------------------
-    // Component controller definition
-    // -------------------------------------------------
-    
-    final public static MixinLayersDef componentControllerDef =
-        new MixinLayersDef(
-            "org.objectweb.fractal.juliak.ComponentImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-                    BasicComponentMixin.class,
-                    TypeComponentMixin.class,
-                    CollectionItfComponentMixin.class
-            });
-    
-
-    // -------------------------------------------------
-    // Binding controller definitions
-    // -------------------------------------------------
-
-    final public static MixinLayersDef compositeBindingControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.binding.CompositeBindingControllerImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-                    BasicBindingControllerMixin.class,
-                    TypeBasicBindingMixin.class,
-                    UseComponentMixin.class,
-                    CheckBindingMixin.class,
-                    TypeBindingMixin.class,
-                    UseSuperControllerMixin.class,
-                    ContentBindingMixin.class,
-                    UseLifeCycleControllerMixin.class,
-                    LifeCycleBindingMixin.class,
-                    UseContentControllerMixin.class,
-                    OptimizedCompositeBindingMixin.class
-            });
-
-    final public static MixinLayersDef containerBindingControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.binding.ContainerBindingControllerImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-                    ContainerBindingControllerMixin.class,
-                    UseComponentMixin.class,
-                    InterceptorBindingMixin.class,
-                    CheckBindingMixin.class,
-                    TypeBindingMixin.class,
-                    UseSuperControllerMixin.class,
-                    ContentBindingMixin.class,
-                    UseLifeCycleControllerMixin.class,
-                    LifeCycleBindingMixin.class
-            });
-
-    final public static MixinLayersDef primitiveBindingControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.binding.PrimitiveBindingControllerImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-                    BasicBindingControllerMixin.class,
-                    TypeBasicBindingMixin.class,
-                    UseComponentMixin.class,
-                    CheckBindingMixin.class,
-                    TypeBindingMixin.class,
-                    UseSuperControllerMixin.class,
-                    ContentBindingMixin.class,
-                    
-                    /*
-                     * PrimitiveBindingControllerImpl is used for
-                     * primitiveTemplate and parametricPrimitiveTemplate
-                     * components. Template components do not have a 
lifecycle
-                     * controller. The following two layers are included in
-                     * julia.cfg but shouldn't be.
-                     */
-//                    UseLifeCycleControllerMixin.class,
-//                    LifeCycleBindingMixin.class
-            });
-
-    final public static MixinLayersDef flatPrimitiveBindingControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.binding.FlatPrimitiveBindingControllerImpl",
-            new Class[]{
-                    org.objectweb.fractal.julia.BasicControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.BasicBindingControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.TypeBasicBindingMixin.class,
-                    org.objectweb.fractal.julia.UseComponentMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.CheckBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.TypeBindingMixin.class,
-                    
-                    /*
-                     * FlatPrimitiveBindingControllerImpl is used for
-                     * flatPrimitiveTemplate and 
flatParametricPrimitiveTemplate
-                     * components. Template components do not have a 
lifecycle
-                     * controller. The following two layers are included in
-                     * julia.cfg but shouldn't be.
-                     */
-//                    
org.objectweb.fractal.julia.control.lifecycle.UseLifeCycleControllerMixin.class,
-//                    
org.objectweb.fractal.julia.control.binding.LifeCycleBindingMixin.class
-            });
-
-    final public static MixinLayersDef flatContainerBindingControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.binding.FlatContainerBindingControllerImpl",
-            new Class[]{
-                    org.objectweb.fractal.julia.BasicControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.ContainerBindingControllerMixin.class,
-                    org.objectweb.fractal.julia.UseComponentMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.InterceptorBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.CheckBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.TypeBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.lifecycle.UseLifeCycleControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.LifeCycleBindingMixin.class
-            });
-
-    
-    // -------------------------------------------------
-    // Auto-binding controller definitions
-    // -------------------------------------------------
-
-    final public static MixinLayersDef containerAutoBindingControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.binding.ContainerAutoBindingControllerImpl",
-            new Class[]{
-                    org.objectweb.fractal.julia.BasicControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.ContainerBindingControllerMixin.class,
-                    org.objectweb.fractal.julia.UseComponentMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.InterceptorBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.CheckBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.TypeBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.content.UseSuperControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.ContentBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.lifecycle.UseLifeCycleControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.LifeCycleBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.AutoBindingMixin.class
-            });
-
-    final public static MixinLayersDef compositeAutoBindingControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.binding.CompositeAutoBindingControllerImpl",
-            new Class[]{
-                    org.objectweb.fractal.julia.BasicControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.BasicBindingControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.TypeBasicBindingMixin.class,
-                    org.objectweb.fractal.julia.UseComponentMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.CheckBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.TypeBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.content.UseSuperControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.ContentBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.lifecycle.UseLifeCycleControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.LifeCycleBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.content.UseContentControllerMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.OptimizedCompositeBindingMixin.class,
-                    
org.objectweb.fractal.julia.control.binding.AutoBindingMixin.class
-            });
-
-
-    // -------------------------------------------------
-    // Lifecycle controller definitions
-    // -------------------------------------------------
-    
-    final public static MixinLayersDef compositeLifeCycleControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.lifecycle.CompositeLifeCycleControllerImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-                    UseComponentMixin.class,
-                    BasicLifeCycleCoordinatorMixin.class,
-                    OptimizedLifeCycleControllerMixin.class,
-                    TypeLifeCycleMixin.class
-            });
-
-    final public static MixinLayersDef lifeCycleControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.lifecycle.LifeCycleControllerImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-                    UseComponentMixin.class,
-                    BasicLifeCycleCoordinatorMixin.class,
-                    BasicLifeCycleControllerMixin.class,
-                    TypeLifeCycleMixin.class,
-                    ContainerLifeCycleMixin.class
-            });
-
-    
-    // -------------------------------------------------
-    // Content controller definition
-    // -------------------------------------------------
-    
-    final public static MixinLayersDef contentControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.content.ContentControllerImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-                    UseComponentMixin.class,
-                    BasicContentControllerMixin.class,
-                    CheckContentMixin.class,
-                    TypeContentMixin.class,
-                    CollectionItfContentControllerMixin.class,
-                    BindingContentMixin.class,
-                    UseLifeCycleControllerMixin.class,
-                    LifeCycleContentMixin.class,
-                    SuperContentMixin.class
-            });
-
-    
-    // -------------------------------------------------
-    // Name controller definition
-    // -------------------------------------------------
-
-    final public static MixinLayersDef nameControllerDef =
-        new MixinLayersDef(
-            "org.objectweb.fractal.juliak.control.name.NameControllerImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-                    BasicNameControllerMixin.class
-            });
-
-    
-    // -------------------------------------------------
-    // Super controller definition
-    // -------------------------------------------------
-
-    final public static MixinLayersDef superControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.content.SuperControllerImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-                    BasicSuperControllerMixin.class
-            });
-
-    
-    // -------------------------------------------------
-    // Factory controller definition
-    // -------------------------------------------------
-
-    final public static MixinLayersDef factoryControllerDef =
-        new MixinLayersDef(
-            "org.objectweb.fractal.juliak.factory.FactoryControllerImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-                    UseComponentMixin.class,
-                    BasicTemplateMixin.class,
-                    UseCloneableAttributeControllerMixin.class,
-                    AttributeTemplateMixin.class,
-                    UseNameControllerMixin.class,
-                    NameTemplateMixin.class
-            });
-
-    
-    // -------------------------------------------------
-    // Interceptor controller definition
-    // -------------------------------------------------
-
-    final public static MixinLayersDef interceptorControllerDef =
-        new MixinLayersDef(
-            
"org.objectweb.fractal.juliak.control.interceptor.InterceptorCompControllerImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-                    InterceptorControllerMixin.class
-            });
-
-    
-    // -------------------------------------------------
-    // Merged control membranes
-    // -------------------------------------------------
-    
-    final public static MixinLayersDef primitiveMembraneDef =
-        new MixinLayersDef(
-            "org.objectweb.fractal.juliak.PrimitiveMembraneImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-
-                    // Interceptor controller
-                    InterceptorControllerMixin.class,
-
-                    // Super controller
-                    BasicSuperControllerMixin.class,
-
-                    // Binding controller
-                    ContainerBindingControllerMixin.class,
-                    InterceptorBindingMixin.class,
-                    CheckBindingMixin.class,
-                    TypeBindingMixin.class,
-                    UseSuperControllerMixin.class,
-                    ContentBindingMixin.class,
-                    UseLifeCycleControllerMixin.class,
-                    LifeCycleBindingMixin.class,
-                    
-                    // Lifecycle controller
-                    UseComponentMixin.class,
-                    BasicLifeCycleCoordinatorMixin.class,
-                    BasicLifeCycleControllerMixin.class,
-                    TypeLifeCycleMixin.class,
-                    ContainerLifeCycleMixin.class,
-                    
-                    // Name controller
-                    BasicNameControllerMixin.class,
-                    
-                    // Component controller
-                    BasicComponentMixin.class,
-                    TypeComponentMixin.class
-            });
-    
-    final public static MixinLayersDef compositeMembraneDef =
-        new MixinLayersDef(
-            "org.objectweb.fractal.juliak.CompositeMembraneImpl",
-            new Class[]{
-                    BasicControllerMixin.class,
-
-                    // Content controller
-                    BasicContentControllerMixin.class,
-                    CheckContentMixin.class,
-                    TypeContentMixin.class,
-                    BindingContentMixin.class,
-                    LifeCycleContentMixin.class,
-                    SuperContentMixin.class,
-
-                    // Super controller
-                    BasicSuperControllerMixin.class,
-
-                    // Binding controller
-                    BasicBindingControllerMixin.class,
-                    TypeBasicBindingMixin.class,
-                    CheckBindingMixin.class,
-                    TypeBindingMixin.class,
-                    UseSuperControllerMixin.class,
-                    ContentBindingMixin.class,
-                    UseLifeCycleControllerMixin.class,
-                    LifeCycleBindingMixin.class,
-                    UseContentControllerMixin.class,
-                    OptimizedCompositeBindingMixin.class,
-                    
-                    // Lifecycle controller
-                    UseComponentMixin.class,
-                    BasicLifeCycleCoordinatorMixin.class,
-                    OptimizedLifeCycleControllerMixin.class,
-                    TypeLifeCycleMixin.class,
-                    
-                    // Name controller
-                    BasicNameControllerMixin.class,
-                    
-                    // Component controller
-                    BasicComponentMixin.class,
-                    TypeComponentMixin.class
-            });
-    
-
-    // -------------------------------------------------
-    // Layers definition
-    // -------------------------------------------------
-    
-    final public static MixinLayersDef[] LAYERS =
-        new MixinLayersDef[] {
-            componentControllerDef,
-            compositeBindingControllerDef,
-            containerBindingControllerDef,
-            primitiveBindingControllerDef,
-            containerAutoBindingControllerDef,
-            compositeAutoBindingControllerDef,
-            flatPrimitiveBindingControllerDef,
-            flatContainerBindingControllerDef,
-            compositeLifeCycleControllerDef,
-            lifeCycleControllerDef,
-            contentControllerDef,
-            nameControllerDef,
-            superControllerDef,
-            factoryControllerDef,
-            interceptorControllerDef,
-            primitiveMembraneDef,
-            compositeMembraneDef
-        };
-
-}
Index: 
julia/src/org/objectweb/fractal/juliak/spoon/KeepGeneratedProcessor.java
diff -u 
julia/src/org/objectweb/fractal/juliak/spoon/KeepGeneratedProcessor.java:1.3 
julia/src/org/objectweb/fractal/juliak/spoon/KeepGeneratedProcessor.java:1.4
--- 
julia/src/org/objectweb/fractal/juliak/spoon/KeepGeneratedProcessor.java:1.3  
      Fri Nov 10 21:06:37 2006
+++ julia/src/org/objectweb/fractal/juliak/spoon/KeepGeneratedProcessor.java  
  Thu Nov 23 15:35:17 2006
@@ -26,6 +26,9 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.objectweb.fractal.juliak.membrane.JuliakMembranes;
+import org.objectweb.fractal.juliak.membrane.MixinLayersDef;
+
 import spoon.processing.AbstractProcessor;
 import spoon.reflect.declaration.CtSimpleType;
 
@@ -44,7 +47,7 @@
     public KeepGeneratedProcessor() {
         
         // Retrieve the list of mixin target classes
-        MixinLayersDef[] layers = AOKellMixinLayers.getMixinLayers();
+        MixinLayersDef[] layers = new JuliakMembranes().getMixinLayers();
         for (int i = 0; i < layers.length; i++) {
             String targetClassName = layers[i].getClassName();
             targets.add(targetClassName);
Index: julia/src/org/objectweb/fractal/juliak/spoon/MixinLayersDef.java
diff -u julia/src/org/objectweb/fractal/juliak/spoon/MixinLayersDef.java:1.3 
julia/src/org/objectweb/fractal/juliak/spoon/MixinLayersDef.java:removed
--- julia/src/org/objectweb/fractal/juliak/spoon/MixinLayersDef.java:1.3      
  Fri Nov 10 21:06:37 2006
+++ julia/src/org/objectweb/fractal/juliak/spoon/MixinLayersDef.java    Thu 
Nov 23 15:35:17 2006
@@ -1,55 +0,0 @@
-/***
- * Julia
- * Copyright (C) 2005-2006 INRIA, France Telecom, USTL
- *
- * This library 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 of the License, or (at your option) any later version.
- *
- * This library 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 library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Contact: Lionel.Seinturier@xxxxxxx
- *
- * Author: Lionel Seinturier
- */
-
-package org.objectweb.fractal.juliak.spoon;
-
-/**
- * This class defines the mixin layers which are used to generate AOKell 
source
- * code. These layers are used to generate controller implementations in a
- * modular way.
- * 
- * @author Lionel Seinturier <Lionel.Seinturier@xxxxxxx>
- * @since 2.5
- */
-public class MixinLayersDef {
-
-    /** The name of target class holding the mixed code. */
-    private String className;
-    
-    /** The layers to mix. */
-    private Class[] layers;
-
-    public MixinLayersDef(String className, Class[] layers) {
-        this.className = className;
-        this.layers = layers;
-    }
-
-    public String getClassName() {
-        return className;
-    }
-
-    public Class[] getLayers() {
-        return layers;
-    }
-    
-}
Index: 
julia/src/org/objectweb/fractal/juliak/spoon/SpoonMixinClassProcessor.java
diff -u 
julia/src/org/objectweb/fractal/juliak/spoon/SpoonMixinClassProcessor.java:1.3
 
julia/src/org/objectweb/fractal/juliak/spoon/SpoonMixinClassProcessor.java:1.4
--- 
julia/src/org/objectweb/fractal/juliak/spoon/SpoonMixinClassProcessor.java:1.3
      Fri Nov 10 21:06:37 2006
+++ 
julia/src/org/objectweb/fractal/juliak/spoon/SpoonMixinClassProcessor.java  
Thu Nov 23 15:35:17 2006
@@ -28,6 +28,9 @@
 import java.util.List;
 import java.util.Set;
 
+import org.objectweb.fractal.juliak.membrane.JuliakMembranes;
+import org.objectweb.fractal.juliak.membrane.MixinLayersDef;
+
 import spoon.processing.AbstractProcessor;
 import spoon.reflect.Factory;
 import spoon.reflect.code.CtBlock;
@@ -181,7 +184,7 @@
          * We just need to run this processor.
          */
         
-        MixinLayersDef[] layers = AOKellMixinLayers.getMixinLayers();
+        MixinLayersDef[] layers = new JuliakMembranes().getMixinLayers();
         for (int i = 0; i < layers.length; i++) {
             String targetClassName = layers[i].getClassName();
             Class<?>[] srcClasses = layers[i].getLayers();
Index: 
julia/test/conform/org/objectweb/fractal/julia/conform/controllers/StatMembranes.java
diff -u 
julia/test/conform/org/objectweb/fractal/julia/conform/controllers/StatMembranes.java:1.2
 
julia/test/conform/org/objectweb/fractal/julia/conform/controllers/StatMembranes.java:1.3
--- 
julia/test/conform/org/objectweb/fractal/julia/conform/controllers/StatMembranes.java:1.2
   Fri Nov 10 21:06:38 2006
+++ 
julia/test/conform/org/objectweb/fractal/julia/conform/controllers/StatMembranes.java
       Thu Nov 23 15:35:17 2006
@@ -25,6 +25,7 @@
 
 import org.objectweb.fractal.juliak.membrane.MembraneDef;
 import org.objectweb.fractal.juliak.membrane.MembraneDefProvider;
+import org.objectweb.fractal.juliak.membrane.MixinLayersDef;
 
 
 /**
@@ -49,5 +50,10 @@
                     "statComposite",
                     
"org.objectweb.fractal.julia.conform.controllers.StatComposite"),
         };
+
+
+    public MixinLayersDef[] getMixinLayers() {
+        return null;
+    }
     
 }



<--  Date Index  --> <--  Thread Index  -->

Reply via email to:

Powered by MHonArc.

Copyright © 2006-2007, OW2 Consortium | contact | webmaster.