You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by pc...@apache.org on 2004/02/18 02:32:55 UTC
cvs commit: xml-xmlbeans/v2/test/src/jamtest/tests/org/apache/xmlbeans/test/jam JamTests.java
pcal 2004/02/17 17:32:55
Modified: v2 build.xml
v2/src/jam/org/apache/xmlbeans/impl/jam/internal/javadoc
JDClass.java JDClassLoader.java
Added: v2/test/src/jamtest build.xml
v2/test/src/jamtest/dummyclasses/org/apache/xmlbeans/test/jam/dummyclasses
Base.java Baz.java Foo.java FooImpl.java
v2/test/src/jamtest/dummyclasses/org/apache/xmlbeans/test/jam/dummyclasses/ejb
IEnv.java TradeResult.java TraderEJB.java
v2/test/src/jamtest/tests/org/apache/xmlbeans/test/jam
JamTests.java
Log:
jam: add some basic regression tests, plus fix a bug they found
Revision Changes Path
1.33 +4 -1 xml-xmlbeans/v2/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/build.xml,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- build.xml 14 Feb 2004 01:07:39 -0000 1.32
+++ build.xml 18 Feb 2004 01:32:54 -0000 1.33
@@ -123,7 +123,7 @@
<mkdir dir="build/private/lib"/>
</target>
- <target name="drt" depends="builddrt, rundrt"/>
+ <target name="drt" depends="builddrt, rundrt, jamdrt"/>
<target name="rundrt" >
<echo message="Running random tester"/>
@@ -182,6 +182,9 @@
<echo message="___ XML Catalog Test : PASSED" />
</target>
+ <target name='jamdrt'>
+ <ant dir='test/src/jamtest' target='all' inheritAll='false' />
+ </target>
<target name="builddrt" depends="drt.jar, random.jar, eric"/>
1.5 +7 -1 xml-xmlbeans/v2/src/jam/org/apache/xmlbeans/impl/jam/internal/javadoc/JDClass.java
Index: JDClass.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/jam/org/apache/xmlbeans/impl/jam/internal/javadoc/JDClass.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- JDClass.java 12 Feb 2004 20:06:15 -0000 1.4
+++ JDClass.java 18 Feb 2004 01:32:54 -0000 1.5
@@ -22,6 +22,7 @@
import org.apache.xmlbeans.impl.jam.*;
import org.apache.xmlbeans.impl.jam.internal.JClassHelper;
import org.apache.xmlbeans.impl.jam.internal.JPropertyImpl;
+import org.apache.xmlbeans.impl.jam.internal.ObjectJClass;
/**
* javadoc-backed implementation of JClass.
@@ -88,7 +89,12 @@
if (isObject() || isInterface() || isPrimitive()) {
return null;
} else {
- return JDClassLoader.getClassFor(mClass.superclass(),mLoader);
+ ClassDoc sclass = mClass.superclass();
+ if (sclass == null) {
+ return ObjectJClass.getInstance();
+ } else {
+ return JDClassLoader.getClassFor(sclass,mLoader);
+ }
}
}
1.7 +3 -0 xml-xmlbeans/v2/src/jam/org/apache/xmlbeans/impl/jam/internal/javadoc/JDClassLoader.java
Index: JDClassLoader.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/jam/org/apache/xmlbeans/impl/jam/internal/javadoc/JDClassLoader.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- JDClassLoader.java 12 Feb 2004 20:06:15 -0000 1.6
+++ JDClassLoader.java 18 Feb 2004 01:32:54 -0000 1.7
@@ -115,6 +115,8 @@
// Static utilities
public static JClass getClassFor(Type t, JClassLoader loader) {
+ if (t == null) throw new IllegalArgumentException("null type");
+ if (loader == null) throw new IllegalArgumentException("null loader");
return loader.loadClass(getFieldDescriptorFor(t));
}
@@ -125,6 +127,7 @@
* JClass.forName().
*/
public static String getFieldDescriptorFor(Type t) {
+ if (t == null) throw new IllegalArgumentException("null type");
String dim = t.dimension();
if (dim == null || dim.length() == 0) {
return t.qualifiedTypeName();
1.1 xml-xmlbeans/v2/test/src/jamtest/build.xml
Index: build.xml
===================================================================
<project name='jam' default='all' >
<!-- Build file to build and run JAM tests -->
<property name='src-jamtest' value='.' />
<property name='xbean-build-dir' value='../../../build'/>
<property name='build-dir' value='${xbean-build-dir}/test/jamtest'/>
<property name='junit-jar' value='../../../external/lib/junit.jar' />
<path id='classpath' >
<!-- prefer build/classes to jar just for develpment convenience -->
<pathelement path='../../../build/classes' />
<pathelement path='../../../build/lib/xbean.jar' />
<pathelement location='${build-dir}' />
<pathelement location='${junit-jar}'/>
<pathelement path='${java.class.path}' />
</path>
<property name='classpath-value' refid='classpath'/>
<target name='all' depends='build,run' />
<target name='build' >
<mkdir dir='${build-dir}'/>
<javac
srcdir='tests'
destdir='${build-dir}'
classpathref='classpath'
includes='**/*.java'
/>
</target>
<target name='run'>
<!--
<java fork='yes' classname='junit.textui.TestRunner' classpathref='extra-classpath'>
<arg line='jamtest.SimpleTest' />
</java>
-->
<junit fork='yes'
dir='.'
haltonerror='yes'
haltonfailure='yes'
showoutput='yes'
printsummary='yes'>
<classpath>
<pathelement path='${classpath-value}'/> <!--ref no workie-->
</classpath>
<formatter type='plain' usefile='false'/>
<test name='org.apache.xmlbeans.test.jam.JamTests'/>
</junit>
</target>
</project>
1.1 xml-xmlbeans/v2/test/src/jamtest/dummyclasses/org/apache/xmlbeans/test/jam/dummyclasses/Base.java
Index: Base.java
===================================================================
package org.apache.xmlbeans.test.jam.dummyclasses;
/**
* Dummy class for JAM tests.
*
* @author pcal Nov 25, 2003
*/
public abstract class Base {
public int getId() { return -1; }
public void setId(int id) {}
}
1.1 xml-xmlbeans/v2/test/src/jamtest/dummyclasses/org/apache/xmlbeans/test/jam/dummyclasses/Baz.java
Index: Baz.java
===================================================================
package org.apache.xmlbeans.test.jam.dummyclasses;
/**
* Dummy class for JAM tests.
*
* @author pcal Nov 25, 2003
*/
public class Baz implements Runnable {
public void run() {}
}
1.1 xml-xmlbeans/v2/test/src/jamtest/dummyclasses/org/apache/xmlbeans/test/jam/dummyclasses/Foo.java
Index: Foo.java
===================================================================
package org.apache.xmlbeans.test.jam.dummyclasses;
/**
* Dummy class for JAM tests.
*
* @author pcal Nov 25, 2003
*
*/
public interface Foo {
public int getId();
public void setId(int id);
}
1.1 xml-xmlbeans/v2/test/src/jamtest/dummyclasses/org/apache/xmlbeans/test/jam/dummyclasses/FooImpl.java
Index: FooImpl.java
===================================================================
package org.apache.xmlbeans.test.jam.dummyclasses;
/**
* Dummy class for JAM tests.
*
* @author pcal Nov 25, 2003
*/
public class FooImpl extends Base implements Foo {
public int getId() { return -1; }
public void setId(int id) {}
}
1.1 xml-xmlbeans/v2/test/src/jamtest/dummyclasses/org/apache/xmlbeans/test/jam/dummyclasses/ejb/IEnv.java
Index: IEnv.java
===================================================================
package org.apache.xmlbeans.test.jam.dummyclasses.ejb;
public interface IEnv {
/**
* @ejbgen:remote-method
* transaction-attribute = NotSupported
*
*/
public TradeResult buy(String customerName, String stockSymbol, int shares);
}
1.1 xml-xmlbeans/v2/test/src/jamtest/dummyclasses/org/apache/xmlbeans/test/jam/dummyclasses/ejb/TradeResult.java
Index: TradeResult.java
===================================================================
package org.apache.xmlbeans.test.jam.dummyclasses.ejb;
public class TradeResult {
}
1.1 xml-xmlbeans/v2/test/src/jamtest/dummyclasses/org/apache/xmlbeans/test/jam/dummyclasses/ejb/TraderEJB.java
Index: TraderEJB.java
===================================================================
package org.apache.xmlbeans.test.jam.dummyclasses.ejb;
public class TraderEJB implements IEnv {
/**
* @ejbgen:remote-method
* isolation-level = Serializable
*
*/
public TradeResult buy(String customerName, String stockSymbol, int shares)
{
return null;
}
}
1.1 xml-xmlbeans/v2/test/src/jamtest/tests/org/apache/xmlbeans/test/jam/JamTests.java
Index: JamTests.java
===================================================================
package org.apache.xmlbeans.test.jam;
import junit.framework.TestCase;
import org.apache.xmlbeans.impl.jam.*;
import java.io.File;
import java.io.IOException;
/**
*
*/
public class JamTests extends TestCase {
// ========================================================================
// Constants
private static final String
DUMMY = "org.apache.xmlbeans.test.jam.dummyclasses";
// ========================================================================
// Variables
private JService mService = null;
private JClassLoader mLoader = null;
// ========================================================================
// Constructors
public JamTests() {
super("JamTests");
}
public JamTests(String casename) {
super(casename);
}
// ========================================================================
// TestCase implementation
public void setUp() throws IOException {
JServiceFactory jsf = JServiceFactory.getInstance();
JServiceParams params = jsf.createServiceParams();
params.includeSourceFiles(new File("dummyclasses"),"**/*.java");
mService = jsf.createService(params);
mLoader = mService.getClassLoader();
}
// ========================================================================
// Test methods
public void testInterfaceIsAssignableFrom()
throws ClassNotFoundException
{
JClass fooImpl = mLoader.loadClass(DUMMY+".FooImpl");
JClass foo = mLoader.loadClass(DUMMY+".Foo");
assertTrue("Foo should be assignableFrom FooImpl",
foo.isAssignableFrom(fooImpl));
assertTrue("FooImpl should not be assignableFrom Foo",
!fooImpl.isAssignableFrom(foo));
}
public void testClassIsAssignableFrom()
throws ClassNotFoundException
{
JClass fooImpl = mLoader.loadClass(DUMMY+".FooImpl");
JClass base = mLoader.loadClass(DUMMY+".Base");
assertTrue("Base should be assignableFrom FooImpl",
base.isAssignableFrom(fooImpl));
assertTrue("FooImpl should not be assignableFrom Base",
!fooImpl.isAssignableFrom(base));
}
public void testClassIsAssignableFromDifferentClassLoaders()
throws ClassNotFoundException
{
JClass baz = mLoader.loadClass(DUMMY+".Baz");
JClass runnable = mLoader.loadClass("java.lang.Runnable");
assertTrue("Runnable should be assignableFrom Baz",
runnable.isAssignableFrom(baz));
assertTrue("Baz should not be assignableFrom Runnable",
!baz.isAssignableFrom(runnable));
}
public void testAnnotationsAndInheritance() {
JClass ejb = mLoader.loadClass(DUMMY+".ejb.TraderEJB");
JClass ienv = ejb.getInterfaces()[0];
JMethod ejbBuy = ejb.getMethods()[0];
JMethod ienvBuy = ienv.getMethods()[0];
String INTER_ANN = "ejbgen:remote-method@transaction-attribute";
String INTER_ANN_VALUE = "NotSupported";
String CLASS_ANN = "ejbgen:remote-method@isolation-level";
String CLASS_ANN_VALUE = "Serializable";
verifyAnnotationAbsent(ejbBuy,INTER_ANN);
verifyAnnotationAbsent(ienvBuy,CLASS_ANN);
verifyAnnotation(ienvBuy,INTER_ANN,INTER_ANN_VALUE);
verifyAnnotation(ejbBuy,CLASS_ANN,CLASS_ANN_VALUE);
}
// ========================================================================
// Private methods
private void verifyAnnotation(JElement j, String ann, String val) {
JAnnotation a = j.getAnnotation(ann);
assertTrue(j.getParent().getQualifiedName()+" '"+j.getQualifiedName()+"' is missing expected annotation '"+ann+"'",
a != null);
assertTrue(j.getQualifiedName()+" annotation '"+ann+"' does not equal "+
val,val.equals(a.getStringValue().trim()));
}
private void verifyAnnotationAbsent(JElement j, String ann) {
JAnnotation a = j.getAnnotation(ann);
assertTrue("'"+j.getQualifiedName()+"' expected to NOT have annotation '"+ann+"'",
a == null);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org