Package com.alibaba.citrus.generictype

Examples of com.alibaba.citrus.generictype.TypeInfo


        jarFile = jarFile.getCanonicalFile();
        List<Class<?>> classes = getClasses(jarFile);
        long start = System.currentTimeMillis();

        for (Class<?> c : classes) {
            TypeInfo type = factory.getType(c);

            System.out.println(type);
        }

        long duration = System.currentTimeMillis() - start;
View Full Code Here


    public void resolve_includeBaseType() throws Exception {
        ClassTypeInfo myClassType = factory.getClassType(MyClass.class);
        ClassTypeInfo listAType = (ClassTypeInfo) factory.getType(MyClass.class.getField("listA").getGenericType());

        // includeBaseType==false, Iterable<T=E> => Iterable<T=A>
        TypeInfo expectedType = factory.getParameterizedType(Iterable.class, MyClass.class.getTypeParameters()[0]);
        ClassTypeInfo iterableType = (ClassTypeInfo) factory.getType(List.class).getSupertype(Iterable.class);
        TypeInfo resolvedIterableType = iterableType.resolve(listAType, false);

        assertEquals(expectedType, resolvedIterableType);

        // resolvedIterableType应当还能再次resolve:Iterable<T=A> => Iterable<T=Integer>
        expectedType = factory.getParameterizedType(Iterable.class, Integer.class);
        ParameterizedTypeInfo context = factory.getParameterizedType(MyClass.class, Integer.class);

        assertEquals(expectedType, resolvedIterableType.resolve(context));
        assertEquals(expectedType, resolvedIterableType.resolve(context, true));
        assertEquals(expectedType, resolvedIterableType.resolve(context, false));

        // includeBaseType==true, Iterable<T=E> => Iterable<T=Number>
        expectedType = factory.getParameterizedType(Iterable.class, Number.class);

        assertEquals(expectedType, iterableType.resolve(listAType));
        assertEquals(expectedType, iterableType.resolve(listAType, true));

        // includeBaseType==false, T => A
        TypeInfo varA = myClassType.getTypeParameters().get(0);
        TypeInfo varT = iterableType.getTypeParameters().get(0);

        assertEquals(varA, varT.resolve(listAType, false));

        // includeBaseType==true, T => Number
        assertEquals(factory.getType(Number.class), varT.resolve(listAType));
        assertEquals(factory.getType(Number.class), varT.resolve(listAType, true));
    }
View Full Code Here

    @Test
    public void resolve_includeBaseType_2() throws Exception {
        ClassTypeInfo listAType = (ClassTypeInfo) factory.getType(MyClass2.class.getField("listA").getGenericType());

        // includeBaseType==false, Iterable<T=Collection.E> => Iterable<T=List.E>
        TypeInfo expectedType = factory.getParameterizedType(Iterable.class, List.class.getTypeParameters()[0]);
        ClassTypeInfo iterableType = (ClassTypeInfo) factory.getType(List.class).getSupertype(Iterable.class);
        TypeInfo resolvedIterableType = iterableType.resolve(listAType, false);

        assertEquals(expectedType, resolvedIterableType);

        // resolvedIterableType应当还能再次resolve:Iterable<T=List.E> => Iterable<T=Integer>
        expectedType = factory.getParameterizedType(Iterable.class, Integer.class);
        ParameterizedTypeInfo context = factory.getParameterizedType(List.class, Integer.class);

        assertEquals(expectedType, resolvedIterableType.resolve(context));
        assertEquals(expectedType, resolvedIterableType.resolve(context, true));
        assertEquals(expectedType, resolvedIterableType.resolve(context, false));

        // includeBaseType==true, Iterable<T=E> => Iterable<T=Object>
        expectedType = factory.getParameterizedType(Iterable.class, Object.class);

        assertEquals(expectedType, iterableType.resolve(listAType));
        assertEquals(expectedType, iterableType.resolve(listAType, true));

        // includeBaseType==false, T => List.E
        expectedType = factory.getType(List.class.getTypeParameters()[0]);
        TypeInfo varT = iterableType.getTypeParameters().get(0);

        assertEquals(expectedType, varT.resolve(listAType, false));

        // includeBaseType==true, T => Object
        assertEquals(TypeInfo.OBJECT, varT.resolve(listAType));
        assertEquals(TypeInfo.OBJECT, varT.resolve(listAType, true));
    }
View Full Code Here

        assertEquals(toString, typeInfo.toString());
    }

    @Test
    public void equalsHashCode() {
        TypeInfo newType = factory.getType(typeInfo.getRawType());

        assertSame(newType, typeInfo);

        newType = factory.getType(Exception.class);

        assertThat(typeInfo, not(equalTo(newType)));
        assertNotSame(newType, typeInfo);
        assertThat(typeInfo.hashCode(), not(equalTo(newType.hashCode())));
    }
View Full Code Here

        assertEquals(toString, typeInfo.toString());
    }

    @Test
    public void equalsHashCode() {
        TypeInfo newType = factory.getType(getArgOfReturnType(ownerType, methodName));

        assertEquals(newType, typeInfo);
        assertNotSame(newType, typeInfo);
        assertEquals(newType.hashCode(), typeInfo.hashCode());

        newType = factory.getType(getArgOfReturnType(TestClass.class, "zzz"));

        assertThat(typeInfo, not(equalTo(newType)));
        assertNotSame(newType, typeInfo);
        assertThat(typeInfo.hashCode(), not(equalTo(newType.hashCode())));
    }
View Full Code Here

        assertEquals(toString, typeInfo.toString());
    }

    @Test
    public void equalsHashCode() {
        TypeInfo newType = factory.getType(getReturnType(ownerType, methodName));

        assertEquals(newType, typeInfo);
        assertNotSame(newType, typeInfo);
        assertEquals(newType.hashCode(), typeInfo.hashCode());

        newType = factory.getType(getReturnType(TestClass.class, "zzz"));

        assertThat(typeInfo, not(equalTo(newType)));
        assertNotSame(newType, typeInfo);
        assertThat(typeInfo.hashCode(), not(equalTo(newType.hashCode())));
    }
View Full Code Here

        assertNotNull(contextClass, "contextClass");
        assertNotNull(parentClass, "parentClass");
        assertTrue(index < parentClass.getTypeParameters().length, "index out of bound");

        GenericDeclarationInfo context = factory.getGenericDeclaration(contextClass);
        TypeInfo param = factory.getType(parentClass.getTypeParameters()[index]);

        return param.resolve(context);
    }
View Full Code Here

        return resolve(context, true);
    }

    // Implementation of TypeInfo.resolve
    public TypeInfo resolve(GenericDeclarationInfo context, boolean includeBaseType) {
        TypeInfo resolvedComponentType = componentType.resolve(context, includeBaseType);

        if (resolvedComponentType == componentType) {
            return this;
        } else {
            return factory.getArrayType(resolvedComponentType, dimension);
View Full Code Here

            ARRAY_SUPERTYPES = arraySupertypes;
        }

        private Supertypes(ArrayTypeImpl arrayType) {
            TypeInfo componentType = arrayType.componentType;
            List<TypeInfo> componentSupertypes = componentType.getSupertypes();
            ArrayList<TypeInfo> supertypes = createArrayList(componentSupertypes.size() * 2);
            ArrayList<TypeInfo> interfaces = createArrayList();
            ArrayList<TypeInfo> superclasses = createArrayList();

            for (TypeInfo componentSupertype : componentSupertypes) {
View Full Code Here

                || Error.class.isAssignableFrom(exception.getRawType())) {
                continue;
            }

            for (Iterator<TypeInfo> j = effectiveExceptions.iterator(); j.hasNext(); ) {
                TypeInfo existing = j.next();

                if (exception.getRawType().isAssignableFrom(existing.getRawType())) {
                    j.remove();
                } else if (existing.getRawType().isAssignableFrom(exception.getRawType())) {
                    exception = null;
                    break;
                }
            }
View Full Code Here

TOP

Related Classes of com.alibaba.citrus.generictype.TypeInfo

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.