[jboss-cvs] JBossAS SVN: r71248 - in projects/microcontainer/trunk/kernel/src: main/org/jboss/beans/metadata/spi/builder and 4 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Mar 25 11:39:42 EDT 2008
Author: alesj
Date: 2008-03-25 11:39:42 -0400 (Tue, 25 Mar 2008)
New Revision: 71248
Added:
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AnnotationsAction.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/support/AfterInstantiateTester.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/support/OtherVerifier.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AfterInstantiateAnnotationsTestCase.java
Modified:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/CallbackDependencyItem.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ClassContextDependencyItem.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ClassDependencyItem.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AbstractBeanAnnotationAdapterTest.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AnnotationSupportTestSuite.java
Log:
Apply IoC annotations for beans created through factory (w/o bean attribute on BeanMetaData).
Fixing the human readable info for contextual dependencies.
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java 2008-03-25 15:35:05 UTC (rev 71247)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -154,6 +154,18 @@
return beanMetaData;
}
+ public BeanMetaDataBuilder setName(String name)
+ {
+ beanMetaData.setName(name);
+ return this;
+ }
+
+ public BeanMetaDataBuilder setBean(String bean)
+ {
+ beanMetaData.setBean(bean);
+ return this;
+ }
+
public BeanMetaDataBuilder setAliases(Set<Object> aliases)
{
beanMetaData.setAliases(aliases);
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2008-03-25 15:35:05 UTC (rev 71247)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -79,7 +79,8 @@
{
return BeanMetaDataBuilderFactory.createBuilder((AbstractBeanMetaData)beanMetaData);
}
- else throw new IllegalArgumentException("Invalid type of bean metadata");
+ else
+ throw new IllegalArgumentException("Invalid type of bean metadata");
}
/**
@@ -90,6 +91,22 @@
public abstract BeanMetaData getBeanMetaData();
/**
+ * Set the bean name.
+ *
+ * @param name the name
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setName(String name);
+
+ /**
+ * Set the bean.
+ *
+ * @param bean the bean class name
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setBean(String bean);
+
+ /**
* Set the aliases
*
* @param aliases the aliases
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java 2008-03-25 15:35:05 UTC (rev 71247)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -568,6 +568,7 @@
setFactoryClass(GenericBeanFactory.class.getName());
AbstractBeanMetaData beanMetaData = new AbstractBeanMetaData(name, getFactoryClass());
+ beanMetaData.setAnnotations(getAnnotations());
beanMetaData.setDemands(getDemands());
beanMetaData.setDepends(getDepends());
beanMetaData.setSupplies(getSupplies());
Copied: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AnnotationsAction.java (from rev 71237, projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallsAwareAction.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AnnotationsAction.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AnnotationsAction.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -0,0 +1,88 @@
+/*
+* 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.dependency;
+
+import org.jboss.kernel.plugins.annotations.BeanAnnotationAdapter;
+import org.jboss.kernel.plugins.annotations.BeanAnnotationAdapterFactory;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+
+/**
+ * Handles IoC annotations.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public abstract class AnnotationsAction extends InstallsAwareAction
+{
+ /**
+ * Handle IoC annotations.
+ *
+ * @param context the kernel controller context
+ * @throws Throwable for any error
+ */
+ protected void applyAnnotations(KernelControllerContext context) throws Throwable
+ {
+ AnnotationMetaDataVisitor annotationsVisitor = new AnnotationMetaDataVisitor(context);
+ annotationsVisitor.before();
+ try
+ {
+ getBeanAnnotationAdapter().applyAnnotations(annotationsVisitor);
+ }
+ finally
+ {
+ annotationsVisitor.after();
+ }
+ }
+
+ /**
+ * Clean IoC annotations.
+ *
+ * @param context the kernel controller context
+ */
+ protected void cleanAnnotations(KernelControllerContext context)
+ {
+ AnnotationMetaDataVisitor annotationsVisitor = new AnnotationMetaDataVisitor(context);
+ annotationsVisitor.before();
+ try
+ {
+ getBeanAnnotationAdapter().cleanAnnotations(annotationsVisitor);
+ }
+ catch(Throwable t)
+ {
+ log.debug("Error while cleaning the annotations: " + t);
+ }
+ finally
+ {
+ annotationsVisitor.after();
+ }
+ }
+
+ /**
+ * Get bean annotation adapter.
+ *
+ * @return bean annotation adapter
+ */
+ protected BeanAnnotationAdapter getBeanAnnotationAdapter()
+ {
+ BeanAnnotationAdapterFactory factory = BeanAnnotationAdapterFactory.getInstance();
+ return factory.getBeanAnnotationAdapter();
+ }
+}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/CallbackDependencyItem.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/CallbackDependencyItem.java 2008-03-25 15:35:05 UTC (rev 71247)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/CallbackDependencyItem.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -131,6 +131,7 @@
return first.equals(second) == false;
}
+ @Override
public void toString(JBossStringBuilder buffer)
{
super.toString(buffer);
@@ -140,7 +141,6 @@
@Override
public String toHumanReadableString()
{
- // TODO toHumanReadableString
- return super.toString();
+ return "Cardinality usage: '" + cardinality + "' and " + super.toHumanReadableString();
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ClassContextDependencyItem.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ClassContextDependencyItem.java 2008-03-25 15:35:05 UTC (rev 71247)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ClassContextDependencyItem.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -52,7 +52,6 @@
}
return isResolved();
}
-
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ClassDependencyItem.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ClassDependencyItem.java 2008-03-25 15:35:05 UTC (rev 71247)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ClassDependencyItem.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -62,7 +62,11 @@
public void toShortString(JBossStringBuilder buffer)
{
- buffer.append(getName()).append(" demands ").append(getIDependOn());
+ buffer.append(getName()).append(" demandsClass ").append(getIDependOn());
}
+ public String toHumanReadableString()
+ {
+ return getIDependOn() + " (NOTE: using autowiring to resolve this dependency)";
+ }
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java 2008-03-25 15:35:05 UTC (rev 71247)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -24,8 +24,6 @@
import java.util.List;
import org.jboss.beans.info.spi.BeanInfo;
-import org.jboss.kernel.plugins.annotations.BeanAnnotationAdapterFactory;
-import org.jboss.kernel.plugins.annotations.BeanAnnotationAdapter;
import org.jboss.kernel.spi.config.KernelConfig;
import org.jboss.kernel.spi.dependency.DependencyBuilder;
import org.jboss.kernel.spi.dependency.DependencyBuilderListItem;
@@ -41,7 +39,7 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision$
*/
-public class DescribeAction extends InstallsAwareAction
+public class DescribeAction extends AnnotationsAction
{
@SuppressWarnings("unchecked")
protected void installActionInternal(KernelControllerContext context) throws Throwable
@@ -66,40 +64,18 @@
}
}
// handle custom annotations
- AnnotationMetaDataVisitor annotationsVisitor = new AnnotationMetaDataVisitor(context);
- annotationsVisitor.before();
- try
- {
- getBeanAnnotationAdapter().applyAnnotations(annotationsVisitor);
- }
- finally
- {
- annotationsVisitor.after();
- }
+ applyAnnotations(context);
}
}
protected void uninstallActionInternal(KernelControllerContext context)
{
- // handle custom annotations
- AnnotationMetaDataVisitor annotationsVisitor = new AnnotationMetaDataVisitor(context);
- annotationsVisitor.before();
- try
- {
- getBeanAnnotationAdapter().cleanAnnotations(annotationsVisitor);
- }
- catch(Throwable t)
- {
- log.debug("Error while cleaning the annotations: " + t);
- }
- finally
- {
- annotationsVisitor.after();
- }
-
BeanInfo info = context.getBeanInfo();
if (info != null)
{
+ // handle custom annotations
+ cleanAnnotations(context);
+
KernelController controller = (KernelController)context.getController();
KernelConfig config = controller.getKernel().getConfig();
DependencyBuilder dependencyBuilder;
@@ -128,12 +104,6 @@
}
}
- protected BeanAnnotationAdapter getBeanAnnotationAdapter()
- {
- BeanAnnotationAdapterFactory factory = BeanAnnotationAdapterFactory.getInstance();
- return factory.getBeanAnnotationAdapter();
- }
-
protected ControllerState getState()
{
return ControllerState.DESCRIBED;
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java 2008-03-25 15:35:05 UTC (rev 71247)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -25,6 +25,7 @@
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.dependency.spi.ControllerState;
import org.jboss.dependency.spi.DependencyInfo;
+import org.jboss.dependency.spi.ScopeInfo;
import org.jboss.joinpoint.spi.Joinpoint;
import org.jboss.kernel.Kernel;
import org.jboss.kernel.spi.config.KernelConfigurator;
@@ -32,6 +33,9 @@
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
import org.jboss.kernel.spi.dependency.InstantiateKernelControllerContextAware;
+import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
+import org.jboss.metadata.spi.scope.ScopeKey;
+import org.jboss.metadata.spi.scope.CommonLevels;
/**
* InstantiateAction.
@@ -39,8 +43,9 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision$
*/
-public class InstantiateAction extends InstallsAwareAction
+public class InstantiateAction extends AnnotationsAction
{
+ @SuppressWarnings("deprecation")
protected void installActionInternal(KernelControllerContext context) throws Throwable
{
KernelController controller = (KernelController) context.getController();
@@ -62,6 +67,21 @@
{
info = configurator.getBeanInfo(object.getClass(), metaData.getAccessMode());
context.setBeanInfo(info);
+
+ // update class scope with class info
+ ScopeInfo scopeInfo = context.getScopeInfo();
+ KernelMetaDataRepository repository = kernel.getMetaDataRepository();
+ // remove old context
+ repository.removeMetaData(context);
+ // create new scope key
+ ScopeKey scopeKey = new ScopeKey(scopeInfo.getScope().getScopes());
+ scopeKey.addScope(CommonLevels.CLASS, info.getClassInfo().getType());
+ scopeInfo.setScope(scopeKey);
+ // re-register
+ repository.addMetaData(context);
+
+ // handle custom annotations
+ applyAnnotations(context);
}
DependencyInfo dependencyInfo = context.getDependencyInfo();
@@ -82,15 +102,11 @@
Object object = context.getTarget();
if (object != null)
{
-// if (object instanceof KernelControllerContextAware)
-// ((KernelControllerContextAware) object).unsetKernelControllerContext(context);
-
KernelController controller = (KernelController) context.getController();
DependencyInfo dependencyInfo = context.getDependencyInfo();
if (dependencyInfo != null && dependencyInfo.isAutowireCandidate())
controller.removeInstantiatedContext(context);
}
-
}
catch (Throwable ignored)
{
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/support/AfterInstantiateTester.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/support/AfterInstantiateTester.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/support/AfterInstantiateTester.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -0,0 +1,115 @@
+/*
+* 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.annotations.support;
+
+import java.util.Set;
+import java.io.PrintStream;
+
+import org.jboss.beans.metadata.api.annotations.Aliases;
+import org.jboss.beans.metadata.api.annotations.Demands;
+import org.jboss.beans.metadata.api.annotations.Demand;
+import org.jboss.beans.metadata.api.annotations.Supply;
+import org.jboss.beans.metadata.api.annotations.Depends;
+import org.jboss.beans.metadata.api.annotations.ExternalInstalls;
+import org.jboss.beans.metadata.api.annotations.ExternalInstall;
+import org.jboss.beans.metadata.api.annotations.ExternalUninstalls;
+import org.jboss.beans.metadata.api.annotations.Inject;
+import org.jboss.beans.metadata.api.annotations.Create;
+import org.jboss.beans.metadata.api.annotations.Start;
+import org.jboss.beans.metadata.api.annotations.Stop;
+import org.jboss.beans.metadata.api.annotations.Destroy;
+import org.jboss.beans.metadata.api.annotations.ValueFactory;
+import org.jboss.beans.metadata.api.annotations.Install;
+import org.jboss.beans.metadata.api.annotations.Uninstall;
+import org.jboss.beans.metadata.api.annotations.InstallMethod;
+import org.jboss.beans.metadata.api.annotations.UninstallMethod;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+ at Aliases("qwert")
+ at Demands(@Demand("other"))
+ at Supply("qaz")
+ at Depends("other")
+ at ExternalInstalls(@ExternalInstall(bean = "other", method = "touch"))
+ at ExternalUninstalls(@ExternalInstall(bean = "other", method = "touch"))
+public class AfterInstantiateTester
+{
+ public static AfterInstantiateTester getTester()
+ {
+ return new AfterInstantiateTester();
+ }
+
+ @Inject(bean = "other", property = "currentTime")
+ public int time;
+
+ @Create
+ public void createMe()
+ {
+ }
+
+ @Start
+ public void startMe()
+ {
+ }
+
+ @Stop
+ public void stopMe()
+ {
+ }
+
+ @Destroy
+ public void destroyMe()
+ {
+ }
+
+ @ValueFactory(bean = "other", method = "getSystemErr")
+ public void setSystemErr(PrintStream err)
+ {
+ }
+
+ @Install
+ @Uninstall
+ public void setVerifiers(Set<AfterInstallVerifier<?>> verifiers)
+ {
+ }
+
+ @Install
+ public void addVerifier(AfterInstallVerifier<?> verifier)
+ {
+ }
+
+ @Uninstall
+ public void removeVerifier(AfterInstallVerifier<?> verifier)
+ {
+ }
+
+ @InstallMethod
+ public void applyAfterAtInstall()
+ {
+ }
+
+ @UninstallMethod
+ public void applyAfterAtUninstall()
+ {
+ }
+}
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/support/OtherVerifier.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/support/OtherVerifier.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/support/OtherVerifier.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -0,0 +1,74 @@
+/*
+* 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.annotations.support;
+
+import java.util.Set;
+import java.io.PrintStream;
+
+import org.jboss.beans.metadata.api.annotations.Aliases;
+import org.jboss.beans.metadata.api.annotations.Demands;
+import org.jboss.beans.metadata.api.annotations.Demand;
+import org.jboss.beans.metadata.api.annotations.Supply;
+import org.jboss.beans.metadata.api.annotations.Depends;
+import org.jboss.beans.metadata.api.annotations.ExternalInstalls;
+import org.jboss.beans.metadata.api.annotations.ExternalInstall;
+import org.jboss.beans.metadata.api.annotations.ExternalUninstalls;
+import org.jboss.beans.metadata.api.annotations.Inject;
+import org.jboss.beans.metadata.api.annotations.Create;
+import org.jboss.beans.metadata.api.annotations.Start;
+import org.jboss.beans.metadata.api.annotations.Stop;
+import org.jboss.beans.metadata.api.annotations.Destroy;
+import org.jboss.beans.metadata.api.annotations.ValueFactory;
+import org.jboss.beans.metadata.api.annotations.Install;
+import org.jboss.beans.metadata.api.annotations.Uninstall;
+import org.jboss.beans.metadata.api.annotations.InstallMethod;
+import org.jboss.beans.metadata.api.annotations.UninstallMethod;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class OtherVerifier implements AfterInstallVerifier<Object>
+{
+ public void verify(Object target)
+ {
+ }
+
+ public Class<Object> getTargetClass()
+ {
+ return Object.class;
+ }
+
+ public PrintStream getSystemErr()
+ {
+ return System.err;
+ }
+
+ public long getCurrentTime()
+ {
+ return System.currentTimeMillis();
+ }
+
+ public void touch()
+ {
+ System.out.println(getCurrentTime());
+ }
+}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AbstractBeanAnnotationAdapterTest.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AbstractBeanAnnotationAdapterTest.java 2008-03-25 15:35:05 UTC (rev 71247)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AbstractBeanAnnotationAdapterTest.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -32,6 +32,7 @@
import org.jboss.kernel.plugins.dependency.AbstractKernelController;
import org.jboss.kernel.plugins.dependency.DescribeAction;
import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.kernel.spi.config.KernelConfig;
/**
@@ -81,7 +82,7 @@
protected void install(ControllerContext context, ControllerState fromState, ControllerState toState) throws Throwable
{
- if (ControllerState.DESCRIBED.equals(toState))
+ if (ControllerState.DESCRIBED.equals(toState) && (context instanceof KernelControllerContext))
describe.install(context);
else
super.install(context, fromState, toState);
@@ -89,7 +90,7 @@
protected void uninstall(ControllerContext context, ControllerState fromState, ControllerState toState)
{
- if (ControllerState.DESCRIBED.equals(fromState))
+ if (ControllerState.DESCRIBED.equals(fromState) && (context instanceof KernelControllerContext))
describe.uninstall(context);
else
super.uninstall(context, fromState, toState);
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AfterInstantiateAnnotationsTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AfterInstantiateAnnotationsTestCase.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AfterInstantiateAnnotationsTestCase.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -0,0 +1,129 @@
+/*
+* 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.annotations.test;
+
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.Test;
+import org.jboss.beans.info.spi.BeanAccessMode;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.CallbackMetaData;
+import org.jboss.beans.metadata.spi.InstallMetaData;
+import org.jboss.beans.metadata.spi.LifecycleMetaData;
+import org.jboss.beans.metadata.spi.PropertyMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.kernel.plugins.annotations.BeanAnnotationAdapter;
+import org.jboss.kernel.plugins.annotations.BeanAnnotationAdapterFactory;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.test.kernel.annotations.support.AfterInstantiateTester;
+import org.jboss.test.kernel.annotations.support.OtherVerifier;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class AfterInstantiateAnnotationsTestCase extends AbstractBeanAnnotationAdapterTest
+{
+ public AfterInstantiateAnnotationsTestCase(String name)
+ {
+ super(name);
+ }
+
+ protected BeanAnnotationAdapter getBeanAnnotationAdapterClass()
+ {
+ return BeanAnnotationAdapterFactory.getInstance().getBeanAnnotationAdapter();
+ }
+
+ public static Test suite()
+ {
+ return suite(AfterInstantiateAnnotationsTestCase.class);
+ }
+
+ public void testAfterInstantiationBeanInfo() throws Throwable
+ {
+ KernelController controller = getController();
+ // other
+ KernelControllerContext occ = controller.install(new AbstractBeanMetaData("other", OtherVerifier.class.getName()));
+ assertNotNull(occ);
+ Object tcc = occ.getTarget();
+ assertNotNull(tcc);
+
+ // tester
+ AbstractBeanMetaData abmd = new AbstractBeanMetaData();
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(abmd);
+ builder.setName("tester");
+ builder.setAccessMode(BeanAccessMode.ALL);
+ builder.setFactoryClass(AfterInstantiateTester.class.getName());
+ builder.setFactoryMethod("getTester");
+
+ KernelControllerContext kcc = controller.install(builder.getBeanMetaData());
+ try
+ {
+ assertNotNull(kcc);
+ BeanMetaData beanMetaData = kcc.getBeanMetaData();
+ // test aliases
+ assertNotNull(controller.getContext("qwert", null));
+ // propertys
+ Set<PropertyMetaData> properties = beanMetaData.getProperties();
+ assertNotNull(properties);
+ assertEquals(2, properties.size());
+ // lifecycle
+ LifecycleMetaData create = beanMetaData.getCreate();
+ assertNotNull(create);
+ assertEquals("createMe", create.getMethodName());
+ LifecycleMetaData start = beanMetaData.getStart();
+ assertNotNull(start);
+ assertEquals("startMe", start.getMethodName());
+ LifecycleMetaData stop = beanMetaData.getStop();
+ assertNotNull(stop);
+ assertEquals("stopMe", stop.getMethodName());
+ LifecycleMetaData destroy = beanMetaData.getDestroy();
+ assertNotNull(destroy);
+ assertEquals("destroyMe", destroy.getMethodName());
+ // callbacks
+ List<CallbackMetaData> incallbacks = beanMetaData.getInstallCallbacks();
+ assertNotNull(incallbacks);
+ assertEquals(2, incallbacks.size());
+ List<CallbackMetaData> uncallbacks = beanMetaData.getUninstallCallbacks();
+ assertNotNull(uncallbacks);
+ assertEquals(2, uncallbacks.size());
+ // installs
+ List<InstallMetaData> installs = beanMetaData.getInstalls();
+ assertNotNull(installs);
+ assertEquals(2, installs.size());
+ List<InstallMetaData> uninstalls = beanMetaData.getUninstalls();
+ assertNotNull(uninstalls);
+ assertEquals(2, uninstalls.size());
+
+ Object tkcc = kcc.getTarget();
+ assertNotNull(tkcc);
+ AfterInstantiateTester tester = assertInstanceOf(tkcc, AfterInstantiateTester.class);
+ assertTrue(tester.time != 0);
+ }
+ finally
+ {
+ controller.uninstall(kcc.getName());
+ }
+ }
+}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AnnotationSupportTestSuite.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AnnotationSupportTestSuite.java 2008-03-25 15:35:05 UTC (rev 71247)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/annotations/test/AnnotationSupportTestSuite.java 2008-03-25 15:39:42 UTC (rev 71248)
@@ -45,6 +45,7 @@
suite.addTest(FactoryMethodXMLTestCase.suite());
suite.addTest(FactoryMethodBadTestCase.suite());
suite.addTest(CleanupAnnotationTestCase.suite());
+ suite.addTest(AfterInstantiateAnnotationsTestCase.suite());
return suite;
}
More information about the jboss-cvs-commits
mailing list