/* * Copyright 2013. Guidewire Software, Inc. */ package gw.lang.reflect.java.asm; import gw.internal.ext.org.objectweb.asm.Type; /** */ public class AsmUtil { public static String makeDotName( String name ) { return name.replace( '/', '.' ); } public static String makeBaseName( String name ) { if( name.length() == 1 ) { return name; } while( name.charAt( 0 ) == '[' ) { name = name.substring( 1 ); } if( name.endsWith( ";" ) ) { name = name.substring( 1, name.length() - 1 ); } else { AsmType asmType = AsmPrimitiveType.findPrimitive( name ); if( asmType != null ) { name = asmType.getName(); } } return makeDotName( name ); } public static AsmType makeType( Type type ) { if( type.getSort() >= Type.ARRAY ) { return makeType( type.getInternalName() ); } else { return AsmPrimitiveType.findPrimitive( type.getClassName() ); } } public static AsmType makeType( String name ) { if( name.length() == 1 ) { return AsmPrimitiveType.findPrimitive( name ); } int iDims = 0; while( name.charAt( 0 ) == '[' ) { iDims++; name = name.substring( 1 ); } if( name.endsWith( ";" ) ) { name = name.substring( 1, name.length() - 1 ); } else { AsmType asmType = AsmPrimitiveType.findPrimitive( name ); if( asmType != null ) { name = asmType.getName(); } } return new AsmType( makeDotName( name ), iDims ); } public static AsmType makeTypeVariable( String tv ) { AsmType typeVarType = new AsmType( tv ); typeVarType.setTypeVariable(); return typeVarType; } }