[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