/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.axis2.jaxws.description.builder; import junit.framework.TestCase; import java.util.ArrayList; import java.util.List; /** Tests the parsing of Generics that are used in the DescriptionBuilderComposite processing. */ public class ReturnTypeParsingTests extends TestCase { public void testNonHolderGenric() { String inputString = "java.util.List<org.apache.axis2.jaxws.description.builder.MyReturnTestObject>"; MethodDescriptionComposite mdc = new MethodDescriptionComposite(); mdc.setReturnType(inputString); assertEquals( "java.util.List<org.apache.axis2.jaxws.description.builder.MyReturnTestObject>", mdc.getReturnType()); assertEquals(java.util.List.class, mdc.getReturnTypeClass()); } public void testPrimitivesEncoded() { String[] primitivesToTest = { "Z", "B", "C", "D", "F", "I", "J", "S", "V" }; Class[] primitiveClasses = { boolean.class, byte.class, char.class, double.class, float.class, int.class, long.class, short.class, void.class }; for (int i = 0; i < primitivesToTest.length; i++) { assertNull(DescriptionBuilderUtils.getRawType(primitivesToTest[i])); MethodDescriptionComposite mdc = new MethodDescriptionComposite(); mdc.setReturnType(primitivesToTest[i]); assertEquals(primitiveClasses[i], mdc.getReturnTypeClass()); } } public void testPrimitives() { String[] primitivesToTest = { "boolean", "byte", "char", "double", "float", "int", "long", "short", "void" }; Class[] primitiveClasses = { boolean.class, byte.class, char.class, double.class, float.class, int.class, long.class, short.class, void.class }; for (int i = 0; i < primitivesToTest.length; i++) { assertNull(DescriptionBuilderUtils.getRawType(primitivesToTest[i])); MethodDescriptionComposite mdc = new MethodDescriptionComposite(); mdc.setReturnType(primitivesToTest[i]); assertEquals(primitiveClasses[i], mdc.getReturnTypeClass()); } } public void testPrimitiveArrays() { String[] primitivesToTest = { "boolean[]", "byte[]", "char[]", "double[]", "float[]", "int[]", "long[]", "short[]" }; Class[] primitiveClasses = { boolean[].class, byte[].class, char[].class, double[].class, float[].class, int[].class, long[].class, short[].class }; for (int i = 0; i < primitivesToTest.length; i++) { MethodDescriptionComposite mdc = new MethodDescriptionComposite(); mdc.setReturnType(primitivesToTest[i]); assertEquals(primitiveClasses[i], mdc.getReturnTypeClass()); } } public void testPrimitiveMultiDimArrays() { String[] primitivesToTest = { "boolean[][]", "byte[][][]", "char[][][][]", "double[][][][][]", "float[][][][][][]", "int[]", "long[]", "short[]" }; Class[] primitiveClasses = { boolean[][].class, byte[][][].class, char[][][][].class, double[][][][][].class, float[][][][][][].class, int[].class, long[].class, short[].class }; for (int i = 0; i < primitivesToTest.length; i++) { MethodDescriptionComposite mdc = new MethodDescriptionComposite(); mdc.setReturnType(primitivesToTest[i]); assertEquals(primitiveClasses[i], mdc.getReturnTypeClass()); } } public void testJavaLangObjectArrays() { MethodDescriptionComposite pdcObject = new MethodDescriptionComposite(); pdcObject.setReturnType("java.lang.Object[]"); Object[] verifyObject = new Object[5]; assertEquals(verifyObject.getClass(), pdcObject.getReturnTypeClass()); MethodDescriptionComposite pdcString = new MethodDescriptionComposite(); pdcString.setReturnType("java.lang.String[][][]"); String[][][] verifyString = new String[5][1][3]; assertEquals(verifyString.getClass(), pdcString.getReturnTypeClass()); MethodDescriptionComposite pdcInteger = new MethodDescriptionComposite(); pdcInteger.setReturnType("java.lang.Integer[][][][]"); Integer[][][][] verifyInteger = new Integer[5][1][3][12]; assertEquals(verifyInteger.getClass(), pdcInteger .getReturnTypeClass()); } public void testMyObjectArray() { MethodDescriptionComposite mdc = new MethodDescriptionComposite(); mdc.setReturnType("org.apache.axis2.jaxws.description.builder.MyReturnTestObject[][]"); MyReturnTestObject[][] myObject = new MyReturnTestObject[2][3]; assertEquals(myObject.getClass(), mdc.getReturnTypeClass()); } public void testArrayListOfPrimitiveArray() { MethodDescriptionComposite mdc = new MethodDescriptionComposite(); mdc.setReturnType("java.util.ArrayList<byte[]>"); assertEquals("java.util.ArrayList<byte[]>", mdc.getReturnType()); assertEquals(ArrayList.class, mdc.getReturnTypeClass()); } public void testListOfMyObjectArray() { MethodDescriptionComposite mdc = new MethodDescriptionComposite(); mdc.setReturnType( "java.util.List<org.apache.axis2.jaxws.description.builder.MyReturnTestObject[][]>"); assertEquals( "java.util.List<org.apache.axis2.jaxws.description.builder.MyReturnTestObject[][]>", mdc.getReturnType()); assertEquals(List.class, mdc.getReturnTypeClass()); } public void testGenericArray() { MethodDescriptionComposite mdc = new MethodDescriptionComposite(); mdc.setReturnType("java.util.List<java.lang.String[]>[]"); assertEquals("java.util.List<java.lang.String[]>[]", mdc.getReturnType()); assertEquals(List[].class, mdc.getReturnTypeClass()); } public void testGenericArrayMultiDimension() { MethodDescriptionComposite mdc = new MethodDescriptionComposite(); mdc.setReturnType( "java.util.List<org.apache.axis2.jaxws.description.builder.MyReturnTestObject>[][]"); assertEquals( "java.util.List<org.apache.axis2.jaxws.description.builder.MyReturnTestObject>[][]", mdc.getReturnType()); assertEquals(List[][].class, mdc.getReturnTypeClass()); } public void testWildcardGenericArray() { MethodDescriptionComposite mdc = new MethodDescriptionComposite(); mdc.setReturnType("java.util.List<?>[]"); assertEquals("java.util.List<?>[]", mdc.getReturnType()); assertEquals(List[].class, mdc.getReturnTypeClass()); } } class MyReturnTestObject { }