[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