public String computeTypeName(Type type) { StringBuilder result = new StringBuilder(64); computeTypeName(type, result); return result.toString(); }
public void computeParameterizedTypeName(Type type, StringBuilder uriBuilder) { computeTypeName(type, uriBuilder); if (type instanceof ParameterizedType) { uriBuilder.append('<'); ParameterizedType parameterized = (ParameterizedType) type; Type[] actualTypeArguments = parameterized.getActualTypeArguments(); for (int i = 0; i < actualTypeArguments.length; i++) { if (i!=0) { uriBuilder.append(','); } computeParameter(actualTypeArguments[i], uriBuilder); } uriBuilder.append('>'); } }
public void computeTypeName(Type type, StringBuilder uriBuilder) { if (type instanceof Class<?>) { Class<?> clazz = (Class<?>) type; if (clazz.isArray()) { computeTypeName(clazz.getComponentType(), uriBuilder); uriBuilder.append("[]"); } else { uriBuilder.append(clazz.getName()); } } else if (type instanceof GenericArrayType) { computeTypeName(((GenericArrayType) type).getGenericComponentType(), uriBuilder); uriBuilder.append("[]"); } else if (type instanceof TypeVariable<?>) { uriBuilder.append(((TypeVariable<?>) type).getName()); } else if (type instanceof ParameterizedType) { Type rawType = ((ParameterizedType) type).getRawType(); computeTypeName(rawType, uriBuilder); } else { throw new IllegalStateException("unknown type: " + type); } }
protected void createFragmentForMember(Member member, StringBuilder uriBuilder) { Class<?> declaringClass = member.getDeclaringClass(); createFragmentForClass(declaringClass, uriBuilder); uriBuilder.append('.'); if (member instanceof Constructor<?>) { uriBuilder.append(declaringClass.getSimpleName()); } else { uriBuilder.append(member.getName()); } if (member instanceof Field) return; uriBuilder.append('('); Type[] parameterTypes = null; if (member instanceof java.lang.reflect.Constructor<?>) { parameterTypes = ((java.lang.reflect.Constructor<?>) member).getGenericParameterTypes(); } else if (member instanceof Method) { parameterTypes = ((Method) member).getGenericParameterTypes(); } else { throw new IllegalStateException("unknown member type: " + member); } for (int i = 0; i < parameterTypes.length; i++) { if (i != 0) { uriBuilder.append(','); } computeTypeName(parameterTypes[i], uriBuilder); } uriBuilder.append(')'); }
protected <T extends Member & GenericDeclaration> void enhanceExecutable(JvmExecutable result, T member, String simpleName, Type[] parameterTypes, Annotation[][] annotations, int offset) { StringBuilder fqName = new StringBuilder(48); fqName.append(member.getDeclaringClass().getName()); fqName.append('.'); fqName.append(simpleName); fqName.append('('); InternalEList<JvmFormalParameter> parameters = (InternalEList<JvmFormalParameter>)result.getParameters(); for (int typeIdx = offset, annotationIdx = annotations.length - parameterTypes.length + offset; typeIdx < parameterTypes.length; typeIdx++, annotationIdx++) { if (typeIdx != offset) fqName.append(','); Type parameterType = parameterTypes[typeIdx]; uriHelper.computeTypeName(parameterType, fqName); parameters.addUnique( createFormalParameter(parameterType, "arg" + (typeIdx - offset), result, member, annotations[annotationIdx])); } fqName.append(')'); result.internalSetIdentifier(fqName.toString()); result.setSimpleName(simpleName); setVisibility(result, member.getModifiers()); }