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