FileDocCategorySizeDatePackage
TestTypeDescSynch.javaAPI DocApache Axis 1.44702Sat Apr 22 18:57:26 BST 2006test.typedesc

TestTypeDescSynch

public class TestTypeDescSynch extends TestCase
Confirm TypeDesc bugs are indeed fixed. See http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22819 for details
author
gawor@mcs.anl.gov

Fields Summary
Constructors Summary
public TestTypeDescSynch(String name)

        super(name);
    
public TestTypeDescSynch()

        super("Test TypeDesc Synch");
    
Methods Summary
public static voidmain(java.lang.String[] args)

        try {
            TestTypeDescSynch tester = new TestTypeDescSynch("TypeDesc Test");
            tester.testSynch();
            tester.testFields();
        } catch (Exception e) {
            e.printStackTrace();
        }
    
public voidtestFields()

        TypeDesc desc= TypeDesc.getTypeDescForClass(ComplexBean2.class);
        for (int i=0; i < 10; i++) {
            desc.getFields(true);
            
            // Check to make sure we keep to the constant 5 fields (this
            // used to grow each time we called getFields(true)).
            assertEquals(5, desc.getFields().length);
        }
    
public voidtestFields2()

        Service service = new Service();
        Call call  = (Call)service.createCall();
        
        call.registerTypeMapping(ComplexBean3.class, 
                                 new QName("foo2", "bar2"),
                                 BeanSerializerFactory.class,
                                 BeanDeserializerFactory.class,
                                 false);
        
        TypeDesc desc= TypeDesc.getTypeDescForClass(ComplexBean3.class);
        assertEquals(4, desc.getFields().length);
    
public voidtestSynch()

        
        int threads = 30;
        
        ThreadTest[] thread = new ThreadTest[threads];
        for (int i=0;i<threads;i++) {
            thread[i] = new ThreadTest();
            thread[i].start();
        }
        
        Throwable ex = null;
        
        for (int i=0;i<threads;i++) {
            thread[i].join();
            if (ex == null && thread[i].getException() != null) {
                ex = thread[i].getException();
            }
        }
        
        // either assertion will fail or ArrayIndexOutOfBoundException will
        // be raised (or it might be ok)
        
        TypeDesc desc= TypeDesc.getTypeDescForClass(ComplexBean.class);
        
        assertEquals(6, desc.getFields().length);
        
        if (ex != null) {
            fail(ex.getMessage());
        }