[jboss-cvs] JBossAS SVN: r100214 - projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Feb 1 11:07:43 EST 2010
Author: kabir.khan at jboss.com
Date: 2010-02-01 11:07:43 -0500 (Mon, 01 Feb 2010)
New Revision: 100214
Added:
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/ContextualInjectCleanupTestCase.java
Log:
[JBKERNEL-86] Test that ContextualInjectionDependencyItem is cleared
Added: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/ContextualInjectCleanupTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/ContextualInjectCleanupTestCase.java (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/ContextualInjectCleanupTestCase.java 2010-02-01 16:07:43 UTC (rev 100214)
@@ -0,0 +1,118 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.dependency.test;
+
+import java.lang.ref.WeakReference;
+import java.util.Set;
+
+import junit.framework.Test;
+
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.ContextualInjectionDependencyItem;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.DependencyItem;
+import org.jboss.test.kernel.dependency.support.SimpleBeanImpl;
+import org.jboss.test.kernel.dependency.support.SimpleBeanWithDependencyImpl;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ContextualInjectCleanupTestCase extends OldAbstractKernelDependencyTest
+{
+ public static Test suite()
+ {
+ return suite(ContextualInjectCleanupTestCase.class);
+ }
+
+ public ContextualInjectCleanupTestCase(String name) throws Throwable
+ {
+ super(name);
+ }
+
+ public ContextualInjectCleanupTestCase(String name, boolean xmltest) throws Throwable
+ {
+ super(name, xmltest, true);
+ }
+
+ public void testClearedContextualInjectInjectionValueMetaData() throws Throwable
+ {
+ clearedContextualInjectInjectionValueMetaData();
+
+ assertInstall(offSetNumber(0), "Name1");
+ ControllerContext context2 = assertInstall(offSetNumber(1), "Name2");
+
+ assertNotNull(context2.getDependencyInfo());
+ Set<DependencyItem> items = context2.getDependencyInfo().getIDependOn(ContextualInjectionDependencyItem.class);
+ assertNotNull(items);
+ assertEquals(1, items.size());
+ ContextualInjectionDependencyItem item = (ContextualInjectionDependencyItem)items.iterator().next();
+ assertNotNull(item.getInjectionValueMetaData());
+ assertNotNull(item.getIDependOn());
+
+ assertUninstall("Name2");
+
+ items = context2.getDependencyInfo().getIDependOn(ContextualInjectionDependencyItem.class);
+ assertNotNull(items);
+ assertEquals(1, items.size());
+ item = (ContextualInjectionDependencyItem)items.iterator().next();
+ assertNull(item.getInjectionValueMetaData());
+ assertNull(item.getIDependOn());
+
+ WeakReference<ControllerContext> ctxRef = new WeakReference<ControllerContext>(context2);
+ context2 = null;
+
+ setBeanMetaDatas(null);
+ int i = 0;
+ while (i < 10 && ctxRef.get() != null)
+ {
+ System.gc();
+ i++;
+ Thread.sleep(200);
+ }
+
+ assertNull(ctxRef.get());
+ }
+
+ protected void clearedContextualInjectInjectionValueMetaData()
+ {
+ BeanMetaDataBuilder builder1 = BeanMetaDataBuilder.createBuilder("Name1", SimpleBeanImpl.class.getName());
+
+ BeanMetaDataBuilder builder2 = BeanMetaDataBuilder.createBuilder("Name2", SimpleBeanWithDependencyImpl.class.getName());
+ builder2.addPropertyMetaData("simpleBean",builder2.createContextualInject());
+ addAnnotation((AbstractBeanMetaData)builder2.getBeanMetaData());
+
+ setBeanMetaDatas(new BeanMetaData[] {builder1.getBeanMetaData(), builder2.getBeanMetaData()});
+ }
+
+ protected void addAnnotation(AbstractBeanMetaData bmd)
+ {
+ }
+
+ protected int offSetNumber(int i)
+ {
+ return i;
+ }
+}
More information about the jboss-cvs-commits
mailing list