[jboss-cvs] JBossAS SVN: r102451 - in projects/jboss-reflect/trunk/src: test/java/org/jboss/test/plugins/javassist/support and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Mar 16 08:00:50 EDT 2010


Author: kabir.khan at jboss.com
Date: 2010-03-16 08:00:48 -0400 (Tue, 16 Mar 2010)
New Revision: 102451

Added:
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/support/NumberChild.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/test/JavassistHelperTestCase.java
Modified:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistHelper.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/test/JavassistTestSuite.java
Log:
[JBREFLECT-5] Test and fix JavassistHelper when class does not extend wanted class/interface

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistHelper.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistHelper.java	2010-03-16 11:40:25 UTC (rev 102450)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistHelper.java	2010-03-16 12:00:48 UTC (rev 102451)
@@ -166,6 +166,9 @@
       }
       
       CtClass superClass = current.getSuperclass();
+      if (superClass == null)
+         return false;
+      
       boolean result = determineHierarchy(hierarchy, superClass, search);
       if (result)
          return true;

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/support/NumberChild.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/support/NumberChild.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/support/NumberChild.java	2010-03-16 12:00:48 UTC (rev 102451)
@@ -0,0 +1,56 @@
+/*
+* 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.plugins.javassist.support;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class NumberChild extends Number
+{
+
+   @Override
+   public double doubleValue()
+   {
+      return 0;
+   }
+
+   @Override
+   public float floatValue()
+   {
+      return 0;
+   }
+
+   @Override
+   public int intValue()
+   {
+      return 0;
+   }
+
+   @Override
+   public long longValue()
+   {
+      return 0;
+   }
+
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/test/JavassistHelperTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/test/JavassistHelperTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/test/JavassistHelperTestCase.java	2010-03-16 12:00:48 UTC (rev 102451)
@@ -0,0 +1,102 @@
+/*
+* 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.plugins.javassist.test;
+
+import java.io.Serializable;
+import java.util.Collection;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.NotFoundException;
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.javassist.JavassistHelper;
+import org.jboss.test.ContainerTest;
+import org.jboss.test.plugins.javassist.support.NumberChild;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class JavassistHelperTestCase extends ContainerTest
+{
+   public JavassistHelperTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(JavassistHelperTestCase.class);
+   }
+   
+   public void testClassExtendsClass() throws Exception
+   {
+      CtClass object = loadCtClass(Object.class);
+      CtClass number = loadCtClass(Number.class);
+      CtClass lng = loadCtClass(Long.class); 
+      
+      assertTrue(JavassistHelper.determineHierarchy(null, lng, number));
+      assertTrue(JavassistHelper.determineHierarchy(null, lng, object));
+      assertTrue(JavassistHelper.determineHierarchy(null, number, object));
+   }
+   
+   public void testClassImplementsInterfaceDirectly() throws Exception
+   {
+      CtClass number = loadCtClass(Number.class);
+      CtClass seri = loadCtClass(Serializable.class);
+      
+      assertTrue(JavassistHelper.determineHierarchy(null, number, seri));
+   }
+   
+   public void testClassImplementsInterfaceViaSuperclass() throws Exception
+   {
+      CtClass numberChild = loadCtClass(NumberChild.class);
+      CtClass seri = loadCtClass(Serializable.class);
+      
+      assertTrue(JavassistHelper.determineHierarchy(null, numberChild, seri));
+   }
+   
+   public void testClassDoesNotExtendSuperclass() throws Exception
+   {
+      CtClass numberChild = loadCtClass(NumberChild.class);
+      CtClass seri = loadCtClass(String.class);
+      
+      assertFalse(JavassistHelper.determineHierarchy(null, numberChild, seri));
+   }
+   
+   public void testClassDoesNotExtendInterface() throws Exception
+   {
+      CtClass numberChild = loadCtClass(NumberChild.class);
+      CtClass collection = loadCtClass(Collection.class);
+      
+      assertFalse(JavassistHelper.determineHierarchy(null, numberChild, collection));
+   }
+   
+   private CtClass loadCtClass(Class<?> clazz) throws NotFoundException
+   {
+      return ClassPool.getDefault().get(clazz.getName());      
+   }
+   
+   
+}

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/test/JavassistTestSuite.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/test/JavassistTestSuite.java	2010-03-16 11:40:25 UTC (rev 102450)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/test/JavassistTestSuite.java	2010-03-16 12:00:48 UTC (rev 102451)
@@ -38,6 +38,7 @@
       suite.addTest(JavassistBodyTestCase.suite());
       suite.addTest(JavassistConstructorInfoTestCase.suite());
       suite.addTest(JavassistFieldInfoTestCase.suite());
+      suite.addTest(JavassistHelperTestCase.suite());
       suite.addTest(JavassistMutableMethodInfoTestCase.suite());
       suite.addTest(JavassistMutableTypeInfoTestCase.suite());
       suite.addTest(JavassistUtilTestCase.suite());




More information about the jboss-cvs-commits mailing list