Example usage for org.objectweb.asm.signature SignatureVisitor visitArrayType

List of usage examples for org.objectweb.asm.signature SignatureVisitor visitArrayType

Introduction

In this page you can find the example usage for org.objectweb.asm.signature SignatureVisitor visitArrayType.

Prototype

public SignatureVisitor visitArrayType() 

Source Link

Document

Visits a signature corresponding to an array type.

Usage

From source file:co.cask.cdap.internal.asm.Signatures.java

License:Apache License

public static void visitTypeSignature(TypeToken<?> type, SignatureVisitor visitor) {
    Class<?> rawType = type.getRawType();
    if (rawType.isPrimitive()) {
        visitor.visitBaseType(Type.getType(rawType).toString().charAt(0));
        return;//from   w  ww  .j a va2  s .  c  om
    } else if (rawType.isArray()) {
        visitTypeSignature(type.getComponentType(), visitor.visitArrayType());
        return;
    } else {
        visitor.visitClassType(Type.getInternalName(rawType));
    }

    java.lang.reflect.Type visitType = type.getType();
    if (visitType instanceof ParameterizedType) {
        for (java.lang.reflect.Type argType : ((ParameterizedType) visitType).getActualTypeArguments()) {
            visitTypeSignature(TypeToken.of(argType), visitor.visitTypeArgument(SignatureVisitor.INSTANCEOF));
        }
    }

    visitor.visitEnd();
}

From source file:com.pongasoft.kiwidoc.builder.serializer.type.TypeEncoder.java

License:Apache License

private void buildType(SignatureVisitor sv, Type type) {
    if (type instanceof PrimitiveType) {
        PrimitiveType primitiveType = (PrimitiveType) type;
        sv.visitBaseType(EnumCodec.INSTANCE.encode(primitiveType.getPrimitive()).charAt(0));
        return;/*  ww  w .  j a v  a  2 s . c o m*/
    }

    if (type instanceof GenericVariable) {
        GenericVariable genericVariable = (GenericVariable) type;
        sv.visitTypeVariable(genericVariable.getName());
        return;
    }

    if (type instanceof ArrayType) {
        ArrayType arrayType = (ArrayType) type;
        for (int i = 0; i < arrayType.getDimension(); i++)
            sv = sv.visitArrayType();
        buildType(sv, arrayType.getType());
        return;
    }

    if (type instanceof GenericType) {
        GenericType genericType = (GenericType) type;
        int i = 0;
        for (TypePart typePart : genericType.getTypeParts()) {
            if (i == 0) {
                sv.visitClassType(ClassResource.computeInternalName(typePart.getName()));
            } else {
                sv.visitInnerClassType(typePart.getName());
            }
            i++;
            buildGenericType(sv, typePart.getGenerics());
        }
        sv.visitEnd();
        return;
    }

    if (type instanceof UnresolvedType) {
        UnresolvedType unresolvedType = (UnresolvedType) type;
        sv.visitClassType(unresolvedType.getInternalName());
        sv.visitEnd();
        return;
    }

    throw new RuntimeException("unsupported type here..." + type.getClass().getName());
}