[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