[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