[jboss-cvs] JBossAS SVN: r59555 - in projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel: spi/dependency and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jan 11 17:16:36 EST 2007


Author: alesj
Date: 2007-01-11 17:16:29 -0500 (Thu, 11 Jan 2007)
New Revision: 59555

Added:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/DispatchContext.java
Modified:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallAction.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java
Log:
initial DispatchContext code (similar to DynamicMBean) - see forum for more info

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java	2007-01-11 21:38:09 UTC (rev 59554)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java	2007-01-11 22:16:29 UTC (rev 59555)
@@ -25,21 +25,19 @@
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Set;
 import java.util.Stack;
 
 import org.jboss.beans.info.spi.BeanInfo;
-import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.MetaDataVisitor;
-import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+import org.jboss.beans.metadata.spi.*;
 import org.jboss.dependency.plugins.AbstractControllerContext;
 import org.jboss.dependency.plugins.AbstractDependencyInfo;
-import org.jboss.dependency.spi.Controller;
-import org.jboss.dependency.spi.ControllerMode;
-import org.jboss.dependency.spi.ControllerState;
-import org.jboss.dependency.spi.DependencyInfo;
-import org.jboss.dependency.spi.DependencyItem;
+import org.jboss.dependency.spi.*;
+import org.jboss.joinpoint.spi.TargettedJoinpoint;
 import org.jboss.kernel.Kernel;
+import org.jboss.kernel.plugins.config.Configurator;
+import org.jboss.kernel.spi.config.KernelConfigurator;
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
@@ -76,7 +74,7 @@
 
    /** The scope */
    protected ScopeKey scope;
-   
+
    /**
     * Create an abstract controller context
     *
@@ -149,7 +147,7 @@
       }
       return scope;
    }
-   
+
    public void setScope(ScopeKey key)
    {
       this.scope = key;
@@ -221,6 +219,49 @@
       }
    }
 
+   public Object get(final String name) throws Throwable
+   {
+      return execute(new JoinPointCreator()
+      {
+         public TargettedJoinpoint createJoinpoint(ClassLoader cl, KernelConfigurator configurator) throws Throwable
+         {
+            return configurator.getPropertyGetterJoinPoint(getBeanInfo(), name);
+         }
+      });
+   }
+
+   public void set(final PropertyMetaData property) throws Throwable
+   {
+      execute(new JoinPointCreator()
+      {
+         public TargettedJoinpoint createJoinpoint(ClassLoader cl, KernelConfigurator configurator) throws Throwable
+         {
+            return configurator.getPropertySetterJoinPoint(getBeanInfo(), cl, property);
+         }
+      });
+   }
+
+   public Object invoke(final String name, final List<ParameterMetaData> parameters) throws Throwable
+   {
+      return execute(new JoinPointCreator()
+      {
+         public TargettedJoinpoint createJoinpoint(ClassLoader cl, KernelConfigurator configurator) throws Throwable
+         {
+            return configurator.getMethodJoinPoint(getBeanInfo(), cl, name, parameters, false, true);
+         }
+      });
+   }
+
+   protected Object execute(JoinPointCreator creator) throws Throwable
+   {
+      KernelController controller = (KernelController) getController();
+      final KernelConfigurator configurator = controller.getKernel().getConfigurator();
+      final ClassLoader cl = Configurator.getClassLoader(getBeanMetaData());
+      TargettedJoinpoint joinpoint = creator.createJoinpoint(cl, configurator);
+      joinpoint.setTarget(getTarget());
+      return KernelControllerContextAction.dispatchJoinPoint(this, joinpoint);
+   }
+
    protected abstract class AbstractMetaDataVistor implements MetaDataVisitor, PrivilegedAction<Object>
    {
       /**
@@ -420,4 +461,9 @@
       }
    }
 
+   private interface JoinPointCreator
+   {
+      TargettedJoinpoint createJoinpoint(ClassLoader cl, KernelConfigurator configurator) throws Throwable;
+   }
+
 }
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallAction.java	2007-01-11 21:38:09 UTC (rev 59554)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallAction.java	2007-01-11 22:16:29 UTC (rev 59555)
@@ -23,18 +23,10 @@
 
 import java.util.List;
 
-import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.InstallMetaData;
-import org.jboss.beans.metadata.spi.ParameterMetaData;
-import org.jboss.joinpoint.spi.MethodJoinpoint;
 import org.jboss.kernel.Kernel;
-import org.jboss.kernel.plugins.config.Configurator;
-import org.jboss.kernel.spi.config.KernelConfigurator;
-import org.jboss.kernel.spi.dependency.KernelController;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
-import org.jboss.kernel.spi.dependency.InstallKernelControllerContextAware;
+import org.jboss.kernel.spi.dependency.*;
 import org.jboss.kernel.spi.registry.KernelRegistry;
 
 /**
@@ -55,17 +47,17 @@
       Object name = metaData.getName();
       registry.registerEntry(name, context);
       controller.addSupplies(context);
-      
+
       List installs = metaData.getInstalls();
       if (installs != null)
       {
          for (int i = 0; i < installs.size(); ++i)
          {
             InstallMetaData install = (InstallMetaData) installs.get(i);
-            KernelControllerContext target = context;
+            DispatchContext target = context;
             if (install.getBean() != null)
-               target = (KernelControllerContext) controller.getContext(install.getBean(), install.getDependentState());
-            dispatch(target, install.getMethodName(), install.getParameters());
+               target = (DispatchContext) controller.getContext(install.getBean(), install.getDependentState());
+            target.invoke(install.getMethodName(), install.getParameters());
          }
       }
    }
@@ -82,17 +74,17 @@
       KernelRegistry registry = kernel.getRegistry();
       BeanMetaData metaData = context.getBeanMetaData();
       Object name = metaData.getName();
-      
+
       List uninstalls = metaData.getUninstalls();
       if (uninstalls != null)
       {
          for (int i = uninstalls.size()-1; i >= 0; --i)
          {
             InstallMetaData uninstall = (InstallMetaData) uninstalls.get(i);
-            KernelControllerContext target = context;
+            DispatchContext target = context;
             if (uninstall.getBean() != null)
             {
-               target = (KernelControllerContext) controller.getContext(uninstall.getBean(), uninstall.getDependentState());
+               target = (DispatchContext) controller.getContext(uninstall.getBean(), uninstall.getDependentState());
                if (target == null)
                {
                   log.warn("Ignoring uninstall action on target in incorrect state " + uninstall.getBean());
@@ -101,7 +93,7 @@
             }
             try
             {
-               dispatch(target, uninstall.getMethodName(), uninstall.getParameters());
+               target.invoke(uninstall.getMethodName(), uninstall.getParameters());
             }
             catch (Throwable t)
             {
@@ -120,16 +112,5 @@
          log.warn("Ignoring unregistered entry at uninstall " + name);
       }
    }
-   
-   protected void dispatch(KernelControllerContext context, String method, List<ParameterMetaData> parameters) throws Throwable
-   {
-      KernelController controller = (KernelController) context.getController();
-      KernelConfigurator configurator = controller.getKernel().getConfigurator();
-      BeanInfo info = context.getBeanInfo();
-      BeanMetaData metaData = context.getBeanMetaData();
-      ClassLoader cl = Configurator.getClassLoader(metaData);
-      MethodJoinpoint joinpoint = configurator.getMethodJoinPoint(info, cl, method, parameters, false, true);
-      joinpoint.setTarget(context.getTarget());
-      dispatchJoinPoint(context, joinpoint);
-   }
+
 }
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java	2007-01-11 21:38:09 UTC (rev 59554)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java	2007-01-11 22:16:29 UTC (rev 59555)
@@ -58,7 +58,7 @@
     * @return the result
     * @throws Throwable for any error
     */
-   protected static Object dispatchJoinPoint(final KernelControllerContext context, final Joinpoint joinpoint) throws Throwable
+   static Object dispatchJoinPoint(final KernelControllerContext context, final Joinpoint joinpoint) throws Throwable
    {
       BeanMetaData metaData = context.getBeanMetaData();
       ClassLoader cl = Configurator.getClassLoader(metaData);

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/DispatchContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/DispatchContext.java	2007-01-11 21:38:09 UTC (rev 59554)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/DispatchContext.java	2007-01-11 22:16:29 UTC (rev 59555)
@@ -0,0 +1,66 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* 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.jboss.kernel.spi.dependency;
+
+import java.util.List;
+
+import org.jboss.beans.metadata.spi.ParameterMetaData;
+import org.jboss.beans.metadata.spi.PropertyMetaData;
+
+/**
+ * The API similar to the DynamicMBean API
+ * where there are methods to get/set Properties/Attributes and invoke on
+ * methods/operations with each context knowing how to do this, e.g.
+ * KernelControllerContext -> Configurator
+ * ServiceControllerContext -> MBeanServer
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public interface DispatchContext
+{
+   /**
+    * Getter property / attribute
+    *
+    * @param name
+    * @return
+    * @throws Throwable
+    */
+   Object get(String name) throws Throwable;
+
+   /**
+    * Setter property / attribute
+    *
+    * @param property
+    * @throws Throwable
+    */
+   void set(PropertyMetaData property) throws Throwable;
+
+   /**
+    * Invoke method / opration
+    *
+    * @param name
+    * @param parameters
+    * @return
+    * @throws Throwable
+    */
+   Object invoke(String name, List<ParameterMetaData> parameters) throws Throwable;
+}

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java	2007-01-11 21:38:09 UTC (rev 59554)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java	2007-01-11 22:16:29 UTC (rev 59555)
@@ -33,7 +33,7 @@
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
-public interface KernelControllerContext extends KernelRegistryEntry
+public interface KernelControllerContext extends KernelRegistryEntry, DispatchContext
 {
    /**
     * Get the kernel




More information about the jboss-cvs-commits mailing list