@Override public final int hashCode() { Optional<TypeVariableInfo> typeVariableInfo = typeVariableInfo(); Optional<PackageInfo> packageInfo = packageInfo(); Optional<NameInfo> type = type(); List<TypeParameterInfo> typeParameterInfoList = typeParameterInfoList(); return Objects.hashCode(typeVariableInfo, packageInfo, type, typeParameterInfoList); }
@Override public SimpleTypeInfo apply(TypeParameterInfo input) { return input.toSimpleTypeInfo(); }
@AutoFunctional public SimpleTypeInfo toSimpleTypeInfo() { return SimpleTypeInfo.newType() .packageInfo(packageInfo()) .nameInfo(type().or(NameInfo.of())) .typeParameterInfoList(typeParameterInfoList()) .build(); }
@AutoFunctional public String declaredName() { StringBuilder res = new StringBuilder(); String space = ""; Optional<TypeVariableInfo> maybeTypeVariableInfo = typeVariableInfo(); if (maybeTypeVariableInfo.isPresent()) { TypeVariableInfo typeVariableInfo = maybeTypeVariableInfo.get(); res.append(typeVariableInfo.declaredName()); space = " "; } Optional<NameInfo> maybeType = type(); if (maybeType.isPresent()) { res.append(space); String type = maybeType.get().getSimpleName(); res.append(type); } List<TypeParameterInfo> typeParameterInfoList = typeParameterInfoList(); if (!typeParameterInfoList.isEmpty()) { res.append("<"); res.append(Joiner.on(", ").join(typeParameterInfoList)); res.append(">"); } return res.toString(); }
@Override Optional<PackageInfo> packageInfo() { return component.packageInfo(); }
@Override Optional<NameInfo> type() { return component.type(); }
private TypeName toTypeName0( final Function<TypeParameterInfo, TypeName> typeParameterToTypeName, TypeVariableInfoToTypeName typeVariableInfoToTypeName) { final Optional<TypeName> maybeTypeName = type() .transform(new Function<NameInfo, ClassName>() { @Override return typeVariableInfo() .transform(typeVariableInfoToTypeName.get(maybeTypeName)) .or(new Supplier<TypeName>() {
@Override Optional<TypeVariableInfo> typeVariableInfo() { return delegate.typeVariableInfo(); }
@Override List<TypeParameterInfo> typeParameterInfoList() { return delegate.typeParameterInfoList(); }
@Override protected SimpleTypeInfo compute() { TypeMirror type = element.asType(); TypeParameterInfo parameterInfo = TypeParameterInfoTypeMirror.wrap(processingEnv, type); return parameterInfo.simpleTypeInfo(); } }
public static TypeParameterInfo wrap(ProcessingEnvironmentWrapper processingEnv, TypeMirror type) { TypeKind kind = type.getKind(); if (kind.isPrimitive()) { return new TypeParameterInfoPrimitiveType(processingEnv, type); } switch (kind) { case ARRAY: ArrayType arrayType = ArrayType.class.cast(type); TypeMirror componentType = arrayType.getComponentType(); return wrap(processingEnv, componentType).toArray(); case DECLARED: return new TypeParameterInfoDeclaredType(processingEnv, type); case ERROR: return new TypeParameterInfoErrorType(processingEnv, type); case WILDCARD: return new TypeParameterInfoWildcardType(processingEnv, type); case TYPEVAR: return new TypeParameterInfoTypeVariable(processingEnv, type); default: return new TypeParameterInfoDeclaredType(processingEnv, type); } }
@Override Optional<PackageInfo> packageInfo() { return delegate.packageInfo(); }
@Override Optional<NameInfo> type() { return delegate.type(); }
@Override public Optional<TypeVariableInfo> apply(TypeParameterInfo input) { return input.typeVariableInfo(); }
@Override List<TypeParameterInfo> typeParameterInfoList() { return component.typeParameterInfoList(); }
@Override protected SimpleTypeInfo compute() { TypeMirror type = element.asType(); TypeParameterInfo parameterInfo = TypeParameterInfoTypeMirror.wrap(processingEnv, type); TypeParameterInfo translated = typeParameterInfoMap.translate(parameterInfo); return translated.simpleTypeInfo(); } }
public static TypeParameterInfo wrap(ProcessingEnvironmentWrapper processingEnv, TypeMirror type) { TypeKind kind = type.getKind(); if (kind.isPrimitive()) { return new TypeParameterInfoPrimitiveType(processingEnv, type); } switch (kind) { case ARRAY: ArrayType arrayType = ArrayType.class.cast(type); TypeMirror componentType = arrayType.getComponentType(); return wrap(processingEnv, componentType).toArray(); case DECLARED: return new TypeParameterInfoDeclaredType(processingEnv, type); case ERROR: return new TypeParameterInfoErrorType(processingEnv, type); case WILDCARD: return new TypeParameterInfoWildcardType(processingEnv, type); case TYPEVAR: return new TypeParameterInfoTypeVariable(processingEnv, type); default: return new TypeParameterInfoDeclaredType(processingEnv, type); } }
@Override public final boolean equals(final Object obj) { if (obj == this) { return true; } if (obj instanceof TypeParameterInfo) { final TypeParameterInfo that = (TypeParameterInfo) obj; return Objects.equal(typeVariableInfo(), that.typeVariableInfo()) && Objects.equal(packageInfo(), that.packageInfo()) && Objects.equal(type(), that.type()) && Objects.equal(typeParameterInfoList(), that.typeParameterInfoList()); } else { return false; } }
@Override Optional<PackageInfo> packageInfo() { return component.packageInfo(); }
@Override Optional<NameInfo> type() { return delegate.type(); }