[jboss-cvs] JBossAS SVN: r88616 - in projects/microcontainer/branches/Branch_2_0: kernel/src/main/java/org/jboss/beans/metadata/plugins and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon May 11 05:36:41 EDT 2009
Author: alesj
Date: 2009-05-11 05:36:41 -0400 (Mon, 11 May 2009)
New Revision: 88616
Added:
projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTest.java
Removed:
projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTestCase.java
Modified:
projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/lazy/JBossAOPLazyInitializer.java
projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java
projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java
projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/AbstractLazyInitializer.java
projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/JDKLazyInitializer.java
projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/JavassistLazyInitializer.java
projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/JDKLazyInstantiationTestCase.java
projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/JavassistLazyInstantiationTestCase.java
Log:
Port JBMICROCONT=423 to branch 2.0.
Modified: projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/lazy/JBossAOPLazyInitializer.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/lazy/JBossAOPLazyInitializer.java 2009-05-11 09:36:05 UTC (rev 88615)
+++ projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/lazy/JBossAOPLazyInitializer.java 2009-05-11 09:36:41 UTC (rev 88616)
@@ -25,10 +25,11 @@
import org.jboss.aop.proxy.container.AOPProxyFactoryParameters;
import org.jboss.aop.proxy.container.GeneratedAOPProxyFactory;
-import org.jboss.beans.info.spi.BeanInfo;
+import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.kernel.Kernel;
import org.jboss.kernel.plugins.config.Configurator;
import org.jboss.kernel.plugins.lazy.AbstractLazyInitializer;
+import org.jboss.kernel.spi.config.KernelConfigurator;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.metadata.spi.MetaData;
@@ -48,20 +49,21 @@
public Object initializeProxy(Kernel kernel, String bean, boolean exposeClass, Set<String> interfaces, MetaData metaData) throws Throwable
{
KernelControllerContext context = getKernelControllerContext(kernel, bean);
- BeanInfo beanInfo = context.getBeanInfo();
- if (beanInfo == null)
- throw new IllegalArgumentException("Cannot proxy factory beans.");
+ BeanMetaData bmd = context.getBeanMetaData();
+ KernelConfigurator configurator = kernel.getConfigurator();
+ ClassLoader cl = Configurator.getClassLoader(bmd);
+ // TODO - add lazy handler
AOPProxyFactoryParameters params = new AOPProxyFactoryParameters();
params.setMetaData(metaData);
if (exposeClass)
{
- params.setProxiedClass(beanInfo.getClassInfo().getType());
+ Class<?> beanClass = getBeanClass(context, configurator, cl);
+ params.setProxiedClass(beanClass);
}
if (interfaces != null && interfaces.isEmpty() == false)
{
- ClassLoader cl = Configurator.getClassLoader(context.getBeanMetaData());
- params.setInterfaces(getClasses(kernel.getConfigurator(), interfaces, cl));
+ params.setInterfaces(getClasses(configurator, interfaces, cl));
}
GeneratedAOPProxyFactory factory = new GeneratedAOPProxyFactory();
Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java 2009-05-11 09:36:05 UTC (rev 88615)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java 2009-05-11 09:36:41 UTC (rev 88616)
@@ -98,7 +98,8 @@
constructor.setParameters(parameters);
setConstructor(constructor);
- vistor.addDependency(new AbstractDependencyItem(getName(), beanName, ControllerState.INSTANTIATED, ControllerState.DESCRIBED));
+ // we just need the original bean to be present --> Not_Installed state
+ vistor.addDependency(new AbstractDependencyItem(getName(), beanName, ControllerState.INSTANTIATED, ControllerState.NOT_INSTALLED));
super.initialVisit(vistor);
}
Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java 2009-05-11 09:36:05 UTC (rev 88615)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java 2009-05-11 09:36:41 UTC (rev 88616)
@@ -345,7 +345,9 @@
MetaData cmdr = retrieval.getComponentMetaData(mis);
if (cmdr != null)
{
- methodPlugins = getPlugins(ElementType.METHOD, METHOD_FILTER, annotationClasses);
+ if (methodPlugins == null)
+ methodPlugins = getPlugins(ElementType.METHOD, METHOD_FILTER, annotationClasses);
+
for(T plugin : methodPlugins)
{
if (isApplyPhase)
Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/AbstractLazyInitializer.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/AbstractLazyInitializer.java 2009-05-11 09:36:05 UTC (rev 88615)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/AbstractLazyInitializer.java 2009-05-11 09:36:41 UTC (rev 88616)
@@ -23,13 +23,17 @@
import java.lang.reflect.Method;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.jboss.beans.info.spi.BeanInfo;
+import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.dependency.spi.Controller;
import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerMode;
import org.jboss.dependency.spi.ControllerState;
import org.jboss.kernel.Kernel;
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.lazy.LazyInitializer;
import org.jboss.kernel.spi.registry.KernelBus;
@@ -51,6 +55,7 @@
private String bean;
private KernelBus bus;
private Class<?> proxyClass;
+ private AtomicBoolean onDemandInitialized = new AtomicBoolean(false);
protected AbstractInvokeHandler(String bean, KernelBus bus, Class<?> proxyClass)
{
@@ -85,6 +90,32 @@
if ("toString".equals(methodName))
return bean + "Proxy";
+ if (onDemandInitialized.getAndSet(true) == false)
+ {
+ Kernel kernel = bus.getKernel();
+ KernelController controller = kernel.getController();
+ ControllerContext context = controller.getContext(bean, null);
+ if (context == null)
+ throw new IllegalArgumentException("No such context: " + bean);
+
+ if (ControllerState.INSTALLED.equals(context.getState()) == false)
+ {
+ ControllerMode mode = context.getMode();
+ if (ControllerMode.ON_DEMAND.equals(mode))
+ {
+ controller.enableOnDemand(context);
+ controller.change(context, ControllerState.INSTALLED);
+ }
+ else if (ControllerMode.MANUAL.equals(mode))
+ {
+ controller.change(context, ControllerState.INSTALLED);
+ }
+ }
+
+ if (ControllerState.INSTALLED.equals(context.getState()) == false)
+ throw new IllegalArgumentException("Bean " + bean + " cannot be fully installed: " + context);
+ }
+
if (isGetter(method))
{
return bus.get(bean, getLowerPropertyName(methodName));
@@ -180,21 +211,50 @@
protected KernelControllerContext getKernelControllerContext(Kernel kernel, String bean)
{
Controller controller = kernel.getController();
- ControllerContext context = controller.getContext(bean, ControllerState.DESCRIBED);
+ ControllerContext context = controller.getContext(bean, null);
if (context == null)
- throw new IllegalArgumentException("Should not be here, dependency failed.");
+ throw new IllegalArgumentException("Should not be here, dependency failed, no such context: " + bean);
if (context instanceof KernelControllerContext == false)
throw new IllegalArgumentException("Context not KernelControllerContext: " + context);
+
return KernelControllerContext.class.cast(context);
}
/**
+ * Gte bean's class.
+ *
+ * @param context the kernel controller context
+ * @param configurator the configurator
+ * @param cl the classloader
+ * @return bean's class
+ * @throws Throwable for any error
+ */
+ protected Class<?> getBeanClass(KernelControllerContext context, KernelConfigurator configurator, ClassLoader cl) throws Throwable
+ {
+ BeanMetaData bmd = context.getBeanMetaData();
+
+ Class<?> beanClass = null;
+ String beanClassName = bmd.getBean();
+ if (beanClassName != null)
+ beanClass = configurator.getClassInfo(beanClassName, cl).getType();
+ else if (context.getBeanInfo() != null)
+ beanClass = context.getBeanInfo().getClassInfo().getType();
+
+ if (beanClass == null)
+ throw new IllegalArgumentException("Not enough info to get bean class: " + context);
+
+ return beanClass;
+ }
+
+ /**
* Get bean info.
*
* @param kernel the kernel
* @param bean the bean name
* @return bean info instance
+ * @deprecated not used any more
*/
+ @Deprecated
protected BeanInfo getBeanInfo(Kernel kernel, String bean)
{
KernelControllerContext context = getKernelControllerContext(kernel, bean);
Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/JDKLazyInitializer.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/JDKLazyInitializer.java 2009-05-11 09:36:05 UTC (rev 88615)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/JDKLazyInitializer.java 2009-05-11 09:36:41 UTC (rev 88616)
@@ -21,14 +21,15 @@
*/
package org.jboss.kernel.plugins.lazy;
-import java.lang.reflect.Proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
import java.util.Set;
-import org.jboss.beans.info.spi.BeanInfo;
+import org.jboss.beans.metadata.spi.BeanMetaData;
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.KernelControllerContext;
import org.jboss.kernel.spi.registry.KernelBus;
@@ -48,12 +49,13 @@
throw new IllegalArgumentException("Null interfaces.");
KernelControllerContext context = getKernelControllerContext(kernel, bean);
- BeanInfo beanInfo = context.getBeanInfo();
- if (beanInfo == null)
- throw new IllegalArgumentException("Cannot proxy factory beans.");
- LazyHandler lazyHandler = new LazyHandler(bean, kernel.getBus(), beanInfo.getClassInfo().getType());
- ClassLoader cl = Configurator.getClassLoader(context.getBeanMetaData());
- return Proxy.newProxyInstance(getClass().getClassLoader(), getClasses(kernel.getConfigurator(), interfaces, cl), lazyHandler);
+ BeanMetaData bmd = context.getBeanMetaData();
+ KernelConfigurator configurator = kernel.getConfigurator();
+ ClassLoader cl = Configurator.getClassLoader(bmd);
+ Class<?> beanClass = getBeanClass(context, configurator, cl);
+
+ LazyHandler lazyHandler = new LazyHandler(bean, kernel.getBus(), beanClass);
+ return Proxy.newProxyInstance(getClass().getClassLoader(), getClasses(configurator, interfaces, cl), lazyHandler);
}
/**
Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/JavassistLazyInitializer.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/JavassistLazyInitializer.java 2009-05-11 09:36:05 UTC (rev 88615)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/lazy/JavassistLazyInitializer.java 2009-05-11 09:36:41 UTC (rev 88616)
@@ -22,17 +22,18 @@
package org.jboss.kernel.plugins.lazy;
import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.Set;
-import java.security.PrivilegedAction;
-import java.security.AccessController;
import javassist.util.proxy.MethodFilter;
import javassist.util.proxy.MethodHandler;
import javassist.util.proxy.ProxyFactory;
import javassist.util.proxy.ProxyObject;
-import org.jboss.beans.info.spi.BeanInfo;
+import org.jboss.beans.metadata.spi.BeanMetaData;
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.KernelControllerContext;
import org.jboss.kernel.spi.registry.KernelBus;
@@ -47,24 +48,24 @@
public Object initializeProxy(Kernel kernel, String bean, boolean exposeClass, Set<String> interfaces) throws Throwable
{
KernelControllerContext context = getKernelControllerContext(kernel, bean);
- BeanInfo beanInfo = context.getBeanInfo();
- if (beanInfo == null)
- throw new IllegalArgumentException("Cannot proxy factory beans.");
+ BeanMetaData bmd = context.getBeanMetaData();
+ KernelConfigurator configurator = kernel.getConfigurator();
+ ClassLoader cl = Configurator.getClassLoader(bmd);
+ Class<?> beanClass = getBeanClass(context, configurator, cl);
ProxyFactory factory = new ProxyFactory();
factory.setFilter(FINALIZE_FILTER);
if (exposeClass)
{
- factory.setSuperclass(beanInfo.getClassInfo().getType());
+ factory.setSuperclass(beanClass);
}
if (interfaces != null && interfaces.size() > 0)
{
- ClassLoader cl = Configurator.getClassLoader(context.getBeanMetaData());
- factory.setInterfaces(getClasses(kernel.getConfigurator(), interfaces, cl));
+ factory.setInterfaces(getClasses(configurator, interfaces, cl));
}
Class<?> proxyClass = getProxyClass(factory);
ProxyObject proxy = (ProxyObject)proxyClass.newInstance();
- proxy.setHandler(new LazyHandler(bean, kernel.getBus(), beanInfo.getClassInfo().getType()));
+ proxy.setHandler(new LazyHandler(bean, kernel.getBus(), beanClass));
return proxy;
}
Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/JDKLazyInstantiationTestCase.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/JDKLazyInstantiationTestCase.java 2009-05-11 09:36:05 UTC (rev 88615)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/JDKLazyInstantiationTestCase.java 2009-05-11 09:36:41 UTC (rev 88616)
@@ -29,7 +29,7 @@
*
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
*/
-public class JDKLazyInstantiationTestCase extends LazyInstantiationTestCase
+public class JDKLazyInstantiationTestCase extends LazyInstantiationTest
{
public JDKLazyInstantiationTestCase(String name)
{
Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/JavassistLazyInstantiationTestCase.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/JavassistLazyInstantiationTestCase.java 2009-05-11 09:36:05 UTC (rev 88615)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/JavassistLazyInstantiationTestCase.java 2009-05-11 09:36:41 UTC (rev 88616)
@@ -29,7 +29,7 @@
*
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
*/
-public class JavassistLazyInstantiationTestCase extends LazyInstantiationTestCase
+public class JavassistLazyInstantiationTestCase extends LazyInstantiationTest
{
public JavassistLazyInstantiationTestCase(String name)
{
Copied: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTest.java (from rev 88614, projects/microcontainer/trunk/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTest.java)
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTest.java (rev 0)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTest.java 2009-05-11 09:36:41 UTC (rev 88616)
@@ -0,0 +1,166 @@
+/*
+* 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.lazy.test;
+
+import java.util.Collections;
+
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractDemandMetaData;
+import org.jboss.beans.metadata.plugins.AbstractLazyMetaData;
+import org.jboss.beans.metadata.spi.DemandMetaData;
+import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.test.AbstractTestDelegate;
+import org.jboss.test.kernel.AbstractKernelTest;
+import org.jboss.test.kernel.lazy.support.IRare;
+import org.jboss.test.kernel.lazy.support.RareBean;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public abstract class LazyInstantiationTest extends AbstractKernelTest
+{
+ public LazyInstantiationTest(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Default setup w/o security manager enabled
+ *
+ * @param clazz the class
+ * @return the delegate
+ * @throws Exception for any error
+ */
+ public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
+ {
+ return new AbstractTestDelegate(clazz);
+ }
+
+ protected abstract String getFactoryClassName();
+
+ public void testLazy() throws Throwable
+ {
+ Kernel kernel = bootstrap();
+ KernelController controller = kernel.getController();
+ try
+ {
+ AbstractBeanMetaData bean = new AbstractBeanMetaData("bean", RareBean.class.getName());
+ bean.setMode(ControllerMode.MANUAL);
+ DemandMetaData demand = new AbstractDemandMetaData("foobar");
+ ((AbstractDemandMetaData)demand).setWhenRequired(ControllerState.INSTANTIATED);
+ bean.setDemands(Collections.singleton(demand));
+
+ KernelControllerContext beanContext = controller.install(bean);
+ controller.change(beanContext, ControllerState.NOT_INSTALLED);
+
+ ModifiedLazyMetaData lazy = new ModifiedLazyMetaData("bean", getFactoryClassName());
+ lazy.setInterfaces(Collections.singleton(IRare.class.getName()));
+ KernelControllerContext lazyContext = controller.install(lazy);
+
+ assertNotNull(lazyContext);
+ assertEquals(ControllerState.INSTALLED, lazyContext.getState());
+
+ controller.change(beanContext, ControllerState.DESCRIBED);
+ controller.change(lazyContext, ControllerState.INSTALLED);
+
+ IRare lazyRare = (IRare)lazyContext.getTarget();
+ assertNotNull(lazyRare);
+
+ try
+ {
+ lazyRare.getHits();
+ throw new RuntimeException("Should not be here.");
+ }
+ catch(Throwable t)
+ {
+ assertInstanceOf(t, IllegalArgumentException.class);
+ }
+
+ controller.install(new AbstractBeanMetaData("foobar", Object.class.getName()));
+ controller.change(beanContext, ControllerState.INSTALLED);
+
+ assertEquals(0, lazyRare.getHits());
+ lazyRare.setHits(10);
+ assertEquals(5, lazyRare.checkHits(15));
+
+ controller.uninstall(beanContext.getName());
+ assertEquals(ControllerState.DESCRIBED, lazyContext.getState());
+ }
+ finally
+ {
+ controller.shutdown();
+ }
+ }
+
+ public void testOnDemand() throws Throwable
+ {
+ Kernel kernel = bootstrap();
+ KernelController controller = kernel.getController();
+ try
+ {
+ AbstractBeanMetaData bean = new AbstractBeanMetaData("bean", RareBean.class.getName());
+ bean.setMode(ControllerMode.ON_DEMAND);
+ KernelControllerContext beanContext = controller.install(bean);
+
+ ModifiedLazyMetaData lazy = new ModifiedLazyMetaData("bean", getFactoryClassName());
+ lazy.setInterfaces(Collections.singleton(IRare.class.getName()));
+ KernelControllerContext lazyContext = controller.install(lazy);
+ assertNotNull(lazyContext);
+ assertEquals(ControllerState.INSTALLED, lazyContext.getState());
+
+ IRare lazyRare = (IRare)lazyContext.getTarget();
+ assertNotNull(lazyRare);
+
+ // should not be fully installed yet
+ assertEquals(ControllerState.NOT_INSTALLED, beanContext.getState());
+ assertEquals(0, lazyRare.getHits());
+ // the hit should install it
+ assertEquals(ControllerState.INSTALLED, beanContext.getState());
+
+ lazyRare.setHits(10);
+ assertEquals(5, lazyRare.checkHits(15));
+
+ controller.uninstall(beanContext.getName());
+ assertEquals(ControllerState.DESCRIBED, lazyContext.getState());
+ }
+ finally
+ {
+ controller.shutdown();
+ }
+ }
+
+ private class ModifiedLazyMetaData extends AbstractLazyMetaData
+ {
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 1L;
+
+ public ModifiedLazyMetaData(String beanName, String factoryClassName)
+ {
+ super(beanName);
+ setFactoryClassName(factoryClassName);
+ }
+ }
+}
Deleted: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTestCase.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTestCase.java 2009-05-11 09:36:05 UTC (rev 88615)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTestCase.java 2009-05-11 09:36:41 UTC (rev 88616)
@@ -1,117 +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.test.kernel.lazy.test;
-
-import java.util.Collections;
-
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractLazyMetaData;
-import org.jboss.dependency.spi.ControllerMode;
-import org.jboss.dependency.spi.ControllerState;
-import org.jboss.kernel.Kernel;
-import org.jboss.kernel.spi.dependency.KernelController;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.test.AbstractTestDelegate;
-import org.jboss.test.kernel.AbstractKernelTest;
-import org.jboss.test.kernel.lazy.support.IRare;
-import org.jboss.test.kernel.lazy.support.RareBean;
-
-/**
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public abstract class LazyInstantiationTestCase extends AbstractKernelTest
-{
- public LazyInstantiationTestCase(String name)
- {
- super(name);
- }
-
- /**
- * Default setup w/o security manager enabled
- *
- * @param clazz the class
- * @return the delegate
- * @throws Exception for any error
- */
- public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
- {
- return new AbstractTestDelegate(clazz);
- }
-
- protected abstract String getFactoryClassName();
-
- public void testLazy() throws Throwable
- {
- Kernel kernel = bootstrap();
- KernelController controller = kernel.getController();
-
- AbstractBeanMetaData bean = new AbstractBeanMetaData("bean", RareBean.class.getName());
- bean.setMode(ControllerMode.MANUAL);
-
- KernelControllerContext beanContext = controller.install(bean);
- controller.change(beanContext, ControllerState.NOT_INSTALLED);
-
- ModifiedLazyMetaData lazy = new ModifiedLazyMetaData("bean", getFactoryClassName());
- lazy.setInterfaces(Collections.singleton(IRare.class.getName()));
- KernelControllerContext lazyContext = controller.install(lazy);
-
- assertNotNull(lazyContext);
- assertEquals(ControllerState.DESCRIBED, lazyContext.getState());
-
- controller.change(beanContext, ControllerState.DESCRIBED);
- controller.change(lazyContext, ControllerState.INSTALLED);
-
- IRare lazyRare = (IRare)lazyContext.getTarget();
- assertNotNull(lazyRare);
-
- try
- {
- lazyRare.getHits();
- throw new RuntimeException("Should not be here.");
- }
- catch(Throwable t)
- {
- assertInstanceOf(t, IllegalArgumentException.class);
- }
-
- controller.change(beanContext, ControllerState.INSTALLED);
-
- assertEquals(0, lazyRare.getHits());
- lazyRare.setHits(10);
- assertEquals(5, lazyRare.checkHits(15));
-
- controller.change(beanContext, ControllerState.PRE_INSTALL);
- assertEquals(ControllerState.DESCRIBED, lazyContext.getState());
- }
-
- private class ModifiedLazyMetaData extends AbstractLazyMetaData
- {
- /** The serialVersionUID */
- private static final long serialVersionUID = 1L;
-
- public ModifiedLazyMetaData(String beanName, String factoryClassName)
- {
- super(beanName);
- setFactoryClassName(factoryClassName);
- }
- }
-}
More information about the jboss-cvs-commits
mailing list