/*
* Copyright 2013. Guidewire Software, Inc.
*/
package gw.internal.gosu.parser;
import gw.lang.reflect.java.IJavaClassType;
import gw.lang.reflect.java.IJavaClassTypeVariable;
import gw.lang.reflect.java.JavaTypes;
import gw.lang.reflect.java.asm.AsmType;
import gw.lang.reflect.java.asm.IAsmType;
import gw.lang.reflect.module.IModule;
import java.util.List;
public class AsmTypeVariableJavaClassTypeVariable extends AsmTypeJavaClassType implements IJavaClassTypeVariable {
public AsmTypeVariableJavaClassTypeVariable( IAsmType typeVariable, IModule module ) {
super(typeVariable, module);
}
@Override
public IJavaClassType getConcreteType() {
return getBounds()[0].getConcreteType();
}
@Override
public String getName() {
return getType().getName();
}
@Override
public String getSimpleName() {
return getType().getSimpleName();
}
@Override
public IJavaClassType[] getBounds() {
List<AsmType> typeParameters = getType().getTypeParameters();
if( typeParameters.isEmpty() ) {
return new IJavaClassType[] {JavaTypes.OBJECT().getBackingClassInfo()};
}
else {
return new IJavaClassType[] {createType( typeParameters.get( 0 ), getModule() )};
}
}
@Override
public IModule getModule() {
return _module;
}
public String toString() {
return getName();
}
}