File: TestJavaUtils.java

package info (click to toggle)
axis 1.4-29
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 52,100 kB
  • sloc: java: 129,124; xml: 10,602; jsp: 983; sh: 84; cs: 36; makefile: 18
file content (225 lines) | stat: -rw-r--r-- 8,527 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
package test.utils;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.axis.utils.JavaUtils;
import org.apache.axis.wsdl.toJava.Utils;

import javax.xml.rpc.holders.ByteHolder;
import javax.xml.rpc.holders.LongHolder;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Set;
import java.util.Vector;

public class TestJavaUtils extends TestCase
{

    public TestJavaUtils (String name) {
        super(name);
    }
    public static Test suite() {
        return new TestSuite(TestJavaUtils.class);
    }

    public void setup() {
    }

    /** 
     * See JSR-101: JAX-RPC, Appendix: Mapping of XML Names
     */
    public void testXmlNameToJava() {

        /* Begin TABLE 20-2 Illustrative Examples from JAXRPC Spec */
        assertEquals("mixedCaseName", JavaUtils.xmlNameToJava("mixedCaseName"));

        assertEquals("nameWithDashes", JavaUtils.xmlNameToJava("name-with-dashes"));
        
        assertEquals("name_with_underscore", JavaUtils.xmlNameToJava("name_with_underscore"));
        
        assertEquals("other_punctChars", JavaUtils.xmlNameToJava("other_punct.chars"));
        
        assertEquals("answer42", JavaUtils.xmlNameToJava("Answer42"));
        /* End TABLE 20-2 Illustrative Examples from JAXRPC Spec */

        assertEquals("nameWithDashes",
                JavaUtils.xmlNameToJava("name-with-dashes"));

        assertEquals("otherPunctChars",
                JavaUtils.xmlNameToJava("other.punct\u00B7chars"));

        assertEquals("answer42", JavaUtils.xmlNameToJava("Answer42"));

        assertEquals("\u2160Foo", JavaUtils.xmlNameToJava("\u2160foo"));

        assertEquals("foo", JavaUtils.xmlNameToJava("2foo"));

        //assertEquals("_Foo_", JavaUtils.xmlNameToJava("_foo_"));
        assertEquals("_foo_", JavaUtils.xmlNameToJava("_foo_"));

        assertEquals("foobar", JavaUtils.xmlNameToJava("--foobar--"));

        assertEquals("foo22Bar", JavaUtils.xmlNameToJava("foo22bar"));

        assertEquals("foo\u2160Bar", JavaUtils.xmlNameToJava("foo\u2160bar"));

        assertEquals("fooBar", JavaUtils.xmlNameToJava("foo-bar"));

        assertEquals("fooBar", JavaUtils.xmlNameToJava("foo.bar"));

        assertEquals("fooBar", JavaUtils.xmlNameToJava("foo:bar"));

        //assertEquals("foo_Bar", JavaUtils.xmlNameToJava("foo_bar"));
        assertEquals("foo_bar", JavaUtils.xmlNameToJava("foo_bar"));
      
        assertEquals("fooBar", JavaUtils.xmlNameToJava("foo\u00B7bar"));

        assertEquals("fooBar", JavaUtils.xmlNameToJava("foo\u0387bar"));

        assertEquals("fooBar", JavaUtils.xmlNameToJava("foo\u06DDbar"));

        assertEquals("fooBar", JavaUtils.xmlNameToJava("foo\u06DEbar"));

        assertEquals("fooBar", JavaUtils.xmlNameToJava("FooBar"));

        assertEquals("FOOBar", JavaUtils.xmlNameToJava("FOOBar"));

        assertEquals("a1BBB", JavaUtils.xmlNameToJava("A1-BBB"));

        assertEquals("ABBB", JavaUtils.xmlNameToJava("A-BBB"));

        assertEquals("ACCC", JavaUtils.xmlNameToJava("ACCC"));
        

        // the following cases are ambiguous in JSR-101
        assertEquals("fooBar", JavaUtils.xmlNameToJava("foo bar"));
        assertEquals("_1", JavaUtils.xmlNameToJava("-"));
    }
    
    /**
     * Test for Bug 17994 - wsdl2java generates code with reserved words as variable names
     */ 
    public void testXmlNameToJava2() {
        assertEquals("_abstract", JavaUtils.xmlNameToJava("abstract"));
    }
    
    /**
     * Test for Bug 17995 - wsdl2java converts namespace to uncompilable packages
     */ 
    public void testPackageNaming() {
        assertEquals("_0._1.util.liberty", Utils.makePackageName("urn:liberty:util:1.0"));
    }
    
    /**
     * test the convert() function 
     * verify that we can convert to the Collection, List, and Set interfaces
     * NOTE : These should be split out into separate tests...
     */ 
    public void testConvert() {
        Integer[] array = new Integer[4];
        array[0] = new Integer(5); array[1] = new Integer(4);
        array[2] = new Integer(3); array[3] = new Integer(2);
        
        Object ret = JavaUtils.convert(array, List.class);
        assertTrue("Converted array not a List", (ret instanceof List));
        List list = (List)ret;
        for (int i = 0; i < array.length; i++) {
            assertEquals(array[i], list.get(i));
        }
        
        ret = JavaUtils.convert(array, Collection.class);
        assertTrue("Converted array is not a Collection", (ret instanceof Collection));
        
        ret = JavaUtils.convert(array, Set.class);
        assertTrue("Converted array not a Set", (ret instanceof Set));
        
        ret = JavaUtils.convert(array, Vector.class);
        assertTrue("Converted array not a Vector", (ret instanceof Vector));
        
        HashMap m = new HashMap();
        m.put("abcKey", "abcVal");
        m.put("defKey", "defVal");
        ret = JavaUtils.convert(m, Hashtable.class);
        assertTrue("Converted HashMap not a Hashtable", (ret instanceof Hashtable));

        LongHolder holder = new LongHolder(1);
        ret = JavaUtils.convert(holder, Object.class);
        assertTrue(ret != null);
        assertTrue(Long.class.isInstance(ret));

        ByteHolder holder2 = new ByteHolder((byte)0);
        ret = JavaUtils.convert(holder2, Object.class);
        assertTrue(ret != null);
        assertTrue(Byte.class.isInstance(ret));
        
        // Make sure we convert ArrayList to array in 2D cases
        Object[] arrayin = new Object[1];
        ArrayList data = new ArrayList(5);
        data.add("one"); data.add(new Integer(2)); data.add(new Float(4.0));
        data.add(new Double(5.0)); data.add("five");
        arrayin[0] = data;
        ret = JavaUtils.convert(arrayin, Object[][].class);
        assertTrue("Converted 2D array/ArrayList wrong", ret.getClass().equals(Object[][].class));
        Object[][] outer = (Object[][]) ret;
        assertEquals("Outer array of 2D array/ArrayList is wrong length", 1, outer.length);
        Object[] inner = ((Object[][])ret)[0];
        assertEquals("Inner array of 2D array/ArrayLis is wrong length", 1, inner.length);
        
        // check 2D ArrayList of ArrayList
        ArrayList data2D = new ArrayList(2);
        data2D.add(data); data2D.add(data);
        ret = JavaUtils.convert(data2D, Object[][].class);
        assertTrue("Converted 2D ArrayList wrong", ret.getClass().equals(Object[][].class));
        Object[][] outer2 = (Object[][]) ret;
        assertEquals("Outer array of 2D ArrayList is wrong length", 2, outer2.length);
        Object[] inner2 = ((Object[][]) ret)[0];
        assertEquals("Inner array of 2D ArrayList is wrong length", 5, inner2.length);
        
    }

    public void test1dTo2d() throws Exception {
        byte [] arg = new byte [] { '0', '1' };
        byte [][] ret = (byte[][])JavaUtils.convert(arg, byte[][].class);
        // ClassCastException above if problems converting
        assertNotNull("Conversion result was null", ret);
        assertEquals("Outer array size wrong", 1, ret.length);
        assertEquals("Inner array size wrong", 2, ret[0].length);
    }

    /**
     * test the isConvertable() function
     */
    public void testIsConvert() {
        assertTrue(JavaUtils.isConvertable(new Long(1),Long.class));
        assertTrue(JavaUtils.isConvertable(new Long(1),long.class));
        assertTrue(JavaUtils.isConvertable(new Long(1),Object.class));
        assertTrue(!JavaUtils.isConvertable(new Long(1),Float.class));
        Class clazz = long.class;
        assertTrue(JavaUtils.isConvertable(clazz,Long.class));
        assertTrue(JavaUtils.isConvertable(clazz,Object.class));
        clazz = byte.class;
        assertTrue(JavaUtils.isConvertable(clazz,Byte.class));
        assertTrue(JavaUtils.isConvertable(clazz,Object.class));
    }
    
    /**
     * Make sure we can't say convert from string[] to Calendar[]
     */
    public void testIsConvert2() 
    {
        String[] strings = new String[]{"hello"};
        Calendar[] calendars = new Calendar[1];
        assertTrue(!JavaUtils.isConvertable(strings, calendars.getClass()));
    }    

    public static void main(String args[]){
        TestJavaUtils tester = new TestJavaUtils("TestJavaUtils");
        tester.testIsConvert();
        tester.testConvert();
    }
}