[jboss-cvs] JBossAS SVN: r65533 - in projects/microcontainer/trunk: kernel/src/main/org/jboss/beans/metadata/plugins and 6 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Sep 21 11:28:55 EDT 2007


Author: alesj
Date: 2007-09-21 11:28:55 -0400 (Fri, 21 Sep 2007)
New Revision: 65533

Added:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/InvokeDispatchHelper.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/registry/support/BusBean.java
Removed:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/AttributeKernelRegistryEntryJoinpoint.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/InvokeKernelRegistryEntryJoinpoint.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/registry/KernelRegistryEntryJoinpoint.java
Modified:
   projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/dispatch/InvokeDispatchContext.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java
   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/plugins/registry/basic/BasicKernelBus.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/registry/KernelBus.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/registry/test/BusTestCase.java
Log:
Changing KernelBus contract, removing kernel registry joinpoints, removing getTarget on InvokeDispatchContext.
Creating a TODO on removing/better securing getClassLoader in InvokeDispatchContext.

Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/dispatch/InvokeDispatchContext.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/dispatch/InvokeDispatchContext.java	2007-09-21 15:26:10 UTC (rev 65532)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/dispatch/InvokeDispatchContext.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -44,13 +44,6 @@
    Object invoke(String name, Object parameters[], String[] signature) throws Throwable;
 
    /**
-    * Get any target
-    *
-    * @return the target
-    */
-   Object getTarget();
-
-   /**
     * Get context's classloader.
     * Used when determining type info for parameter and
     * getting the parameter actual value.

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java	2007-09-21 15:26:10 UTC (rev 65532)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -34,11 +34,10 @@
 import org.jboss.dependency.spi.DependencyItem;
 import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
 import org.jboss.kernel.Kernel;
-import org.jboss.kernel.plugins.config.Configurator;
+import org.jboss.kernel.plugins.dispatch.InvokeDispatchHelper;
 import org.jboss.kernel.spi.config.KernelConfigurator;
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.reflect.spi.MethodInfo;
 import org.jboss.reflect.spi.TypeInfo;
 import org.jboss.util.JBossStringBuilder;
 
@@ -291,61 +290,18 @@
 
       Kernel kernel = controller.getKernel();
       KernelConfigurator configurator = kernel.getConfigurator();
-      Object result = invoke(configurator, (InvokeDispatchContext)lookup, getMethod(), getParameters());
+      Object result = InvokeDispatchHelper.invoke(
+            configurator,
+            lookup.getTarget(),
+            (InvokeDispatchContext)lookup,
+            getMethod(),
+            getParameters()
+      );
       if (result == null)
          result = defaultValue;
       return info != null ? info.convertValue(result) : result;
    }
 
-   protected Object invoke(KernelConfigurator configurator, InvokeDispatchContext context, String name, List<ParameterMetaData> params) throws Throwable
-   {
-      String[] signature;
-      Object[] parameters;
-      if (params == null || params.isEmpty())
-      {
-         signature = new String[0];
-         parameters = new Object[0];
-      }
-      else
-      {
-         int size = params.size();
-         signature = Configurator.getParameterTypes(log.isTraceEnabled(), params);
-         Object target = context.getTarget();
-         // TODO - is this ok for non-POJO targets?
-         if (target != null)
-         {
-            MethodInfo methodInfo = Configurator.findMethodInfo(configurator.getClassInfo(target.getClass()), name, signature);
-            parameters = Configurator.getParameters(log.isTraceEnabled(), context.getClassLoader(), methodInfo.getParameterTypes(), params);
-            // add some more info, if not yet set
-            for(int i = 0; i < size; i++)
-            {
-               if (signature[i] == null)
-               {
-                  signature[i] = methodInfo.getParameterTypes()[i].getName();
-               }
-            }
-         }
-         else
-         {
-            parameters = new Object[size];
-            ClassLoader classLoader = context.getClassLoader();
-            for (int i = 0; i < size; i++)
-            {
-               ParameterMetaData pmd = params.get(i);
-               TypeInfo typeInfo = null;
-               if (signature[i] != null)
-               {
-                  typeInfo = configurator.getClassInfo(signature[i], classLoader);
-               }
-               // typeInfo might be null, but we can still get value in some cases
-               parameters[i] = pmd.getValue().getValue(typeInfo, classLoader);
-            }
-
-         }
-      }
-      return context.invoke(name, parameters, signature);
-   }
-
    public void toString(JBossStringBuilder buffer)
    {
       super.toString(buffer);

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-09-21 15:26:10 UTC (rev 65532)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -38,6 +38,7 @@
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.util.JBossStringBuilder;
+import sun.security.util.SecurityConstants;
 
 /**
  * Controller context.
@@ -213,29 +214,34 @@
       }
    }
 
-   public Object get(final String name) throws Throwable
+   protected BeanInfo getInfo()
    {
       if (info == null)
          throw new IllegalArgumentException("Null BeanInfo");
-      return info.getProperty(getTarget(), name);
+      return info;
    }
 
+   public Object get(final String name) throws Throwable
+   {
+      return getInfo().getProperty(getTarget(), name);
+   }
+
    public void set(final String name, final Object value) throws Throwable
    {
-      if (info == null)
-         throw new IllegalArgumentException("Null BeanInfo");
-      info.setProperty(getTarget(), name, value);
+      getInfo().setProperty(getTarget(), name, value);
    }
 
    public Object invoke(final String name, final Object[] parameters, final String[] signature) throws Throwable
    {
-      if (info == null)
-         throw new IllegalArgumentException("Null BeanInfo");
-      return info.invoke(getTarget(), name, signature, parameters);
+      return getInfo().invoke(getTarget(), name, signature, parameters);
    }
 
+   // todo - remove or better security
    public ClassLoader getClassLoader() throws Throwable
    {
+      SecurityManager sm = System.getSecurityManager();
+      if (sm != null)
+         sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
       return Configurator.getClassLoader(getBeanMetaData());
    }
 }
\ 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-09-21 15:26:10 UTC (rev 65532)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallAction.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -28,6 +28,7 @@
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
 import org.jboss.kernel.Kernel;
+import org.jboss.kernel.plugins.dispatch.InvokeDispatchHelper;
 import org.jboss.kernel.spi.config.KernelConfigurator;
 import org.jboss.kernel.spi.dependency.InstallKernelControllerContextAware;
 import org.jboss.kernel.spi.dependency.KernelController;
@@ -65,7 +66,13 @@
                target = controller.getContext(install.getBean(), install.getDependentState());
             if (target instanceof InvokeDispatchContext)
             {
-               invoke(configurator, (InvokeDispatchContext)target, install.getMethodName(), install.getParameters());
+               InvokeDispatchHelper.invoke(
+                     configurator,
+                     target.getTarget(),
+                     (InvokeDispatchContext)target,
+                     install.getMethodName(),
+                     install.getParameters()
+               );
             }
             else
             {
@@ -109,7 +116,13 @@
             {
                try
                {
-                  invoke(configurator, (InvokeDispatchContext)target, uninstall.getMethodName(), uninstall.getParameters());
+                  InvokeDispatchHelper.invoke(
+                        configurator,
+                        target.getTarget(), 
+                        (InvokeDispatchContext)target,
+                        uninstall.getMethodName(),
+                        uninstall.getParameters()
+                  );
                }
                catch (Throwable t)
                {

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-09-21 15:26:10 UTC (rev 65532)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -24,16 +24,12 @@
 import java.security.AccessControlContext;
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
-import java.util.List;
 
 import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.ParameterMetaData;
 import org.jboss.dependency.plugins.action.SimpleControllerContextAction;
 import org.jboss.dependency.spi.ControllerContext;
-import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
 import org.jboss.joinpoint.spi.Joinpoint;
 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;
@@ -41,8 +37,6 @@
 import org.jboss.logging.Logger;
 import org.jboss.metadata.spi.MetaData;
 import org.jboss.metadata.spi.stack.MetaDataStack;
-import org.jboss.reflect.spi.MethodInfo;
-import org.jboss.reflect.spi.TypeInfo;
 
 /**
  * KernelControllerContextAction.
@@ -202,56 +196,4 @@
          }
       }
    }
-
-   // DispatchContext util methods
-
-   protected Object invoke(KernelConfigurator configurator, InvokeDispatchContext context, String name, List<ParameterMetaData> params) throws Throwable
-   {
-      String[] signature;
-      Object[] parameters;
-      if (params == null || params.isEmpty())
-      {
-         signature = new String[0];
-         parameters = new Object[0];
-      }
-      else
-      {
-         int size = params.size();
-         signature = Configurator.getParameterTypes(log.isTraceEnabled(), params);
-         Object target = context.getTarget();
-         // TODO - is this ok for non-POJO targets?
-         if (target != null)
-         {
-            MethodInfo methodInfo = Configurator.findMethodInfo(configurator.getClassInfo(target.getClass()), name, signature);
-            parameters = Configurator.getParameters(log.isTraceEnabled(), context.getClassLoader(), methodInfo.getParameterTypes(), params);
-            // add some more info, if not yet set
-            for(int i = 0; i < size; i++)
-            {
-               if (signature[i] == null)
-               {
-                  signature[i] = methodInfo.getParameterTypes()[i].getName();
-               }
-            }
-         }
-         else
-         {
-            parameters = new Object[size];
-            ClassLoader classLoader = context.getClassLoader();
-            for (int i = 0; i < size; i++)
-            {
-               ParameterMetaData pmd = params.get(i);
-               TypeInfo typeInfo = null;
-               if (signature[i] != null)
-               {
-                  typeInfo = configurator.getClassInfo(signature[i], classLoader);
-               }
-               // typeInfo might be null, but we can still get value in some cases
-               parameters[i] = pmd.getValue().getValue(typeInfo, classLoader);
-            }
-
-         }
-      }
-      return context.invoke(name, parameters, signature);
-   }
-
 }
\ No newline at end of file

Deleted: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/AttributeKernelRegistryEntryJoinpoint.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/AttributeKernelRegistryEntryJoinpoint.java	2007-09-21 15:26:10 UTC (rev 65532)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/AttributeKernelRegistryEntryJoinpoint.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -1,67 +0,0 @@
-/*
-* 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.plugins.dispatch;
-
-import org.jboss.dependency.spi.dispatch.AttributeDispatchContext;
-import org.jboss.kernel.spi.registry.KernelRegistryEntry;
-import org.jboss.kernel.spi.registry.KernelRegistryEntryJoinpoint;
-import org.jboss.util.JBossObject;
-
-/**
- * Attribute kernel registry entry joinpoint.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class AttributeKernelRegistryEntryJoinpoint extends JBossObject implements KernelRegistryEntryJoinpoint
-{
-   private String getterName;
-   private AttributeDispatchContext context;
-
-   public AttributeKernelRegistryEntryJoinpoint(String getterName)
-   {
-      if (getterName == null)
-         throw new IllegalArgumentException("Null getter name.");
-      this.getterName = getterName;
-   }
-
-   public boolean applyEntry(KernelRegistryEntry entry)
-   {
-      if (entry instanceof AttributeDispatchContext)
-      {
-         context = (AttributeDispatchContext)entry;
-         return true;
-      }
-      return false;
-   }
-
-   public Object dispatch() throws Throwable
-   {
-      if (context == null)
-         throw new IllegalArgumentException("Cannot dispatch null context.");
-      return context.get(getterName);
-   }
-
-   public String toHumanReadableString()
-   {
-      return getterName + "," + context;
-   }
-}

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/InvokeDispatchHelper.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/InvokeDispatchHelper.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/InvokeDispatchHelper.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -0,0 +1,106 @@
+/*
+* 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.plugins.dispatch;
+
+import java.util.List;
+
+import org.jboss.kernel.spi.config.KernelConfigurator;
+import org.jboss.kernel.plugins.config.Configurator;
+import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
+import org.jboss.beans.metadata.spi.ParameterMetaData;
+import org.jboss.reflect.spi.MethodInfo;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.logging.Logger;
+
+/**
+ * Helper - reducing duplicated code.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class InvokeDispatchHelper
+{
+   private static final Logger log = Logger.getLogger(InvokeDispatchHelper.class);
+
+   /**
+    * Invoke context with params from ParameterMetaData list.
+    *
+    * @param configurator the configurator
+    * @param target the target
+    * @param context the invoke dispatch
+    * @param methodName the method name
+    * @param params the parameters
+    * @return  invocation's result
+    * @throws Throwable for any exception
+    */
+   public static Object invoke(
+         KernelConfigurator configurator,
+         Object target,
+         InvokeDispatchContext context,
+         String methodName,
+         List<ParameterMetaData> params) throws Throwable
+   {
+      String[] signature;
+      Object[] parameters;
+      if (params == null || params.isEmpty())
+      {
+         signature = new String[0];
+         parameters = new Object[0];
+      }
+      else
+      {
+         int size = params.size();
+         signature = Configurator.getParameterTypes(log.isTraceEnabled(), params);
+         // TODO - is this ok for non-POJO targets?
+         if (target != null)
+         {
+            MethodInfo methodInfo = Configurator.findMethodInfo(configurator.getClassInfo(target.getClass()), methodName, signature);
+            parameters = Configurator.getParameters(log.isTraceEnabled(), context.getClassLoader(), methodInfo.getParameterTypes(), params);
+            // add some more info, if not yet set
+            for(int i = 0; i < size; i++)
+            {
+               if (signature[i] == null)
+               {
+                  signature[i] = methodInfo.getParameterTypes()[i].getName();
+               }
+            }
+         }
+         else
+         {
+            parameters = new Object[size];
+            ClassLoader classLoader = context.getClassLoader();
+            for (int i = 0; i < size; i++)
+            {
+               ParameterMetaData pmd = params.get(i);
+               TypeInfo typeInfo = null;
+               if (signature[i] != null)
+               {
+                  typeInfo = configurator.getClassInfo(signature[i], classLoader);
+               }
+               // typeInfo might be null, but we can still get value in some cases
+               parameters[i] = pmd.getValue().getValue(typeInfo, classLoader);
+            }
+
+         }
+      }
+      return context.invoke(methodName, parameters, signature);
+   }
+}

Deleted: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/InvokeKernelRegistryEntryJoinpoint.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/InvokeKernelRegistryEntryJoinpoint.java	2007-09-21 15:26:10 UTC (rev 65532)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dispatch/InvokeKernelRegistryEntryJoinpoint.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -1,71 +0,0 @@
-/*
-* 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.plugins.dispatch;
-
-import org.jboss.kernel.spi.registry.KernelRegistryEntryJoinpoint;
-import org.jboss.kernel.spi.registry.KernelRegistryEntry;
-import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
-import org.jboss.util.JBossObject;
-
-/**
- * Invoke kernel registry entry joinpoint.
- * 
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class InvokeKernelRegistryEntryJoinpoint extends JBossObject implements KernelRegistryEntryJoinpoint
-{
-   private String methodName;
-   private Object[] args;
-   private String[] signature;
-   private InvokeDispatchContext context;
-
-   public InvokeKernelRegistryEntryJoinpoint(String methodName, Object[] args, String[] signature)
-   {
-      if (methodName == null)
-         throw new IllegalArgumentException("Null method name.");
-      this.methodName = methodName;
-      this.args = args;
-      this.signature = signature;
-   }
-
-   public boolean applyEntry(KernelRegistryEntry entry)
-   {
-      if (entry instanceof InvokeDispatchContext)
-      {
-         context = (InvokeDispatchContext)entry;
-         return true;
-      }
-      return false;
-   }
-
-   public Object dispatch() throws Throwable
-   {
-      if (context == null)
-         throw new IllegalArgumentException("Cannot dispatch null context.");
-      return context.invoke(methodName, args, signature);
-   }
-
-   public String toHumanReadableString()
-   {
-      return methodName + "," + context;
-   }
-}

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/registry/basic/BasicKernelBus.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/registry/basic/BasicKernelBus.java	2007-09-21 15:26:10 UTC (rev 65532)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/registry/basic/BasicKernelBus.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -21,10 +21,10 @@
 */
 package org.jboss.kernel.plugins.registry.basic;
 
-import org.jboss.joinpoint.spi.TargettedJoinpoint;
+import org.jboss.dependency.spi.dispatch.AttributeDispatchContext;
+import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
 import org.jboss.kernel.plugins.registry.AbstractKernelBus;
 import org.jboss.kernel.spi.registry.KernelRegistryEntry;
-import org.jboss.kernel.spi.registry.KernelRegistryEntryJoinpoint;
 
 /**
  * Basic Kernel bus.
@@ -42,20 +42,40 @@
    public BasicKernelBus() throws Exception
    {
    }
-   
-   public Object invoke(Object name, TargettedJoinpoint joinPoint) throws Throwable
+
+   public Object get(Object name, String getter) throws Throwable
    {
       KernelRegistryEntry entry = registry.getEntry(name);
-      Object target = entry.getTarget();
-      joinPoint.setTarget(target);
-      return joinPoint.dispatch();
+      if (entry instanceof AttributeDispatchContext)
+      {
+         AttributeDispatchContext dispatcher = (AttributeDispatchContext)entry;
+         return dispatcher.get(getter);
+      }
+      else
+         throw new IllegalArgumentException("Cannot execute get on non AttributeDispatchContext entry: " + entry);
    }
 
-   public Object invoke(Object name, KernelRegistryEntryJoinpoint joinPoint) throws Throwable
+   public void set(Object name, String setter, Object value) throws Throwable
    {
       KernelRegistryEntry entry = registry.getEntry(name);
-      if (joinPoint.applyEntry(entry) == false)
-         throw new IllegalArgumentException("Cannot apply joinpoint " + joinPoint + " to entry " + entry);
-      return joinPoint.dispatch();
+      if (entry instanceof AttributeDispatchContext)
+      {
+         AttributeDispatchContext dispatcher = (AttributeDispatchContext)entry;
+         dispatcher.set(setter, value);
+      }
+      else
+         throw new IllegalArgumentException("Cannot execute set on non AttributeDispatchContext entry: " + entry);
    }
+
+   public Object invoke(Object name, String methodName, Object parameters[], String[] signature) throws Throwable
+   {
+      KernelRegistryEntry entry = registry.getEntry(name);
+      if (entry instanceof InvokeDispatchContext)
+      {
+         InvokeDispatchContext dispatcher = (InvokeDispatchContext)entry;
+         return dispatcher.invoke(methodName, parameters, signature);
+      }
+      else
+         throw new IllegalArgumentException("Cannot execute invoke on non InvokeDispatchContext entry: " + entry);
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/registry/KernelBus.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/registry/KernelBus.java	2007-09-21 15:26:10 UTC (rev 65532)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/registry/KernelBus.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -21,7 +21,6 @@
 */
 package org.jboss.kernel.spi.registry;
 
-import org.jboss.joinpoint.spi.TargettedJoinpoint;
 import org.jboss.kernel.spi.KernelObject;
 
 /**
@@ -36,22 +35,34 @@
 public interface KernelBus extends KernelObject
 {
    /**
-    * Invoke an operation
-    * 
-    * @param name the name of the object
-    * @param joinPoint the join point
-    * @return the result
+    * Getter property / attribute
+    *
+    * @param name entry name
+    * @param getter property / attribute name
+    * @return target's property / attribute instance
     * @throws Throwable for any error
     */
-   Object invoke(Object name, TargettedJoinpoint joinPoint) throws Throwable;
+   Object get(Object name, String getter) throws Throwable;
 
    /**
-    * Invoke an operation
+    * Setter property / attribute
     *
-    * @param name the name of the object
-    * @param joinPoint the join point
-    * @return the result
+    * @param name entry name
+    * @param setter property / attribute name
+    * @param value set target's property / attribute instance
     * @throws Throwable for any error
     */
-   Object invoke(Object name, KernelRegistryEntryJoinpoint joinPoint) throws Throwable;
+   void set(Object name, String setter, Object value) throws Throwable;
+
+   /**
+    * Invoke method / operation
+    *
+    * @param name entry name
+    * @param methodName method name
+    * @param parameters parameter values
+    * @param signature method's parameter types / signatures
+    * @return inovocation's return object
+    * @throws Throwable for any error
+    */
+   Object invoke(Object name, String methodName, Object[] parameters, String[] signature) throws Throwable;
 }

Deleted: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/registry/KernelRegistryEntryJoinpoint.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/registry/KernelRegistryEntryJoinpoint.java	2007-09-21 15:26:10 UTC (rev 65532)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/registry/KernelRegistryEntryJoinpoint.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -1,42 +0,0 @@
-/*
-* 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.registry;
-
-import org.jboss.joinpoint.spi.Joinpoint;
-
-/**
- * A join point with a kernel registry entry
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public interface KernelRegistryEntryJoinpoint extends Joinpoint
-{
-   /**
-    * Apply the entry.
-    * Return false if the entry cannot be applied
-    * to joinpoint.
-    *
-    * @return false if entry cannot be applied to instance 
-    * @param entry the entry
-    */
-   boolean applyEntry(KernelRegistryEntry entry);
-}

Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/registry/support/BusBean.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/registry/support/BusBean.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/registry/support/BusBean.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -0,0 +1,40 @@
+/*
+* 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.test.kernel.registry.support;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class BusBean
+{
+   private String value;
+
+   public String getValue()
+   {
+      return value;
+   }
+
+   public void setValue(String value)
+   {
+      this.value = value;
+   }
+}

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/registry/test/BusTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/registry/test/BusTestCase.java	2007-09-21 15:26:10 UTC (rev 65532)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/registry/test/BusTestCase.java	2007-09-21 15:28:55 UTC (rev 65533)
@@ -22,17 +22,15 @@
 package org.jboss.test.kernel.registry.test;
 
 import junit.framework.Test;
-
-import org.jboss.beans.info.spi.BeanInfo;
-import org.jboss.joinpoint.plugins.Config;
-import org.jboss.joinpoint.spi.JoinpointFactory;
-import org.jboss.joinpoint.spi.MethodJoinpoint;
-import org.jboss.joinpoint.spi.TargettedJoinpoint;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.kernel.Kernel;
-import org.jboss.kernel.spi.config.KernelConfig;
+import org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext;
 import org.jboss.kernel.spi.registry.KernelBus;
 import org.jboss.kernel.spi.registry.KernelRegistry;
+import org.jboss.kernel.spi.registry.KernelRegistryEntry;
+import org.jboss.kernel.spi.config.KernelConfigurator;
 import org.jboss.test.kernel.AbstractKernelTest;
+import org.jboss.test.kernel.registry.support.BusBean;
 
 /**
  * Bus Test Case.
@@ -52,25 +50,41 @@
       super(name);
    }
 
+   public void testSetAndGet() throws Throwable
+   {
+      Kernel kernel = bootstrap();
+      KernelRegistry registry = kernel.getRegistry();
+      KernelConfigurator configurator = kernel.getConfigurator();
+      registry.registerEntry("Bus", makeContext(configurator, "Name1", new BusBean()));
+      KernelBus bus = kernel.getBus();
+      Object result1 = bus.get("Bus", "value");
+      assertNull("Result 1", result1);
+      bus.set("Bus", "value", "BusBus");
+      Object result2 = bus.get("Bus", "value");
+      assertEquals("BusBus", result2);
+   }
+
    public void testInvoke() throws Throwable
    {
       Kernel kernel = bootstrap();
       KernelRegistry registry = kernel.getRegistry();
-      KernelConfig config = kernel.getConfig(); 
-      registry.registerEntry("Name1", makeEntry("A string"));
-      registry.registerEntry("Name2", makeEntry("B string"));
+      KernelConfigurator configurator = kernel.getConfigurator();
+      registry.registerEntry("Name1", makeContext(configurator, "Name1", "A string"));
+      registry.registerEntry("Name2", makeContext(configurator, "Name2", "B string"));
       KernelBus bus = kernel.getBus();
-      TargettedJoinpoint joinPoint = getMethodJoinpoint(config, String.class, "toString");
-      Object result1 = bus.invoke("Name1", joinPoint);
-      Object result2 = bus.invoke("Name2", joinPoint);
+      Object result1 = bus.invoke("Name1", "toString", new Object[]{}, new String[]{});
+      Object result2 = bus.invoke("Name2", "toString", new Object[]{}, new String[]{});
       assertEquals("A string", result1);
       assertEquals("B string", result2);
    }
 
-   protected MethodJoinpoint getMethodJoinpoint(KernelConfig config, Class clazz, String string) throws Throwable
+   protected static KernelRegistryEntry makeContext(KernelConfigurator configurator, String name, Object target)
+         throws Throwable
    {
-      BeanInfo info = config.getBeanInfo(clazz);
-      JoinpointFactory jpf = info.getJoinpointFactory();
-      return Config.getMethodJoinpoint(null, jpf, string, null, null);
+      return new AbstractKernelControllerContext(
+            configurator.getBeanInfo(target.getClass()),
+            new AbstractBeanMetaData(name, target.getClass().getName()),
+            target
+      );
    }
 }
\ No newline at end of file




More information about the jboss-cvs-commits mailing list