/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.gosu.parser; import gw.internal.gosu.parser.java.classinfo.JavaSourceUtil; import gw.lang.parser.TypeVarToTypeMap; import gw.lang.reflect.java.IJavaClassType; import gw.lang.reflect.IType; import gw.lang.reflect.module.IModule; import java.lang.reflect.Type; import java.lang.reflect.TypeVariable; import java.lang.reflect.GenericArrayType; import java.lang.reflect.ParameterizedType; import java.lang.reflect.WildcardType; public abstract class TypeJavaClassType implements IJavaClassType { private Type _type; protected IModule _module; public TypeJavaClassType(Type type, IModule module) { _type = type; _module = module; } @Override public IType getActualType( TypeVarToTypeMap typeMap) { return TypeLord.getActualType(_type, typeMap); } @Override public IType getActualType( TypeVarToTypeMap typeMap, boolean bKeepTypeVars) { return TypeLord.getActualType(_type, typeMap, bKeepTypeVars); } public static IJavaClassType createType(Type rawType, IModule module) { IJavaClassType type = null; if (rawType instanceof TypeVariable) { type = new TypeVariableJavaClassTypeVariable((TypeVariable) rawType, module); } if (rawType instanceof GenericArrayType) { type = new GenericArrayTypeJavaClassGenericArrayType((GenericArrayType) rawType, module); } if (rawType instanceof ParameterizedType) { type = new ParameterizedTypeJavaClassParameterizedType((ParameterizedType) rawType, module); } if (rawType instanceof WildcardType) { type = new WildcardTypeJavaClassWildcardType((WildcardType) rawType, module); } if (rawType instanceof Class) { type = JavaSourceUtil.getClassInfo((Class) rawType, module); } return type; } @Override public String getName() { return _type.toString(); } @Override public IModule getModule() { return _module; } @Override public String getNamespace() { return null; } }