public static URI computeTypeUri(final Class<?> topLevelClass) { return new ClassURIHelper().getFullURI(topLevelClass); }
public URI getFullURI(Type type) { StringBuilder uriBuilder = createURIBuilder(); createResourceURI(type, uriBuilder); uriBuilder.append('#'); createFragment(type, uriBuilder); return createURI(uriBuilder); }
protected void createFragment(Type type, StringBuilder uriBuilder) { if (type instanceof Class<?>) { Class<?> clazz = (Class<?>) type; createFragmentForClass(clazz, uriBuilder); } else if (type instanceof TypeVariable<?>) { TypeVariable<?> variable = (TypeVariable<?>) type; createFragmentForTypeVariable(variable, uriBuilder); } else if (type instanceof GenericArrayType) { createFragment(((GenericArrayType) type).getGenericComponentType(), uriBuilder); uriBuilder.append("[]"); } else { throw new IllegalStateException("Unexpected type: " + type); } }
public URI createResourceURI(Type type) { StringBuilder uriBuilder = createURIBuilder(); createResourceURI(type, uriBuilder); return createURI(uriBuilder); }
public URI getFullURI(Member member) { if (member instanceof Type) return getFullURI((Type) member); StringBuilder uriBuilder = createURIBuilder(); createResourceURI(member.getDeclaringClass(), uriBuilder); uriBuilder.append('#'); createFragmentForMember(member, uriBuilder); return createURI(uriBuilder); }
protected void createResourceURI(Type type, StringBuilder uriBuilder) { if (type instanceof Class<?>) { Class<?> clazz = (Class<?>) type; createResourceURIForClass(clazz, uriBuilder); } else if (type instanceof TypeVariable<?>) { TypeVariable<?> variable = (TypeVariable<?>) type; createResourceURIForTypeVariable(variable, uriBuilder); } else if (type instanceof GenericArrayType) { createResourceURI(((GenericArrayType) type).getGenericComponentType(), uriBuilder); } else { throw new IllegalStateException("unexpected type: " + type); } }
protected URI toCommonTypesUri(Class<?> clazz) { URI result = uriHelper.getFullURI(clazz); return result; }
private void createResourceURI(Type type, StringBuilder uriBuilder) { if (type instanceof Class<?>) { Class<?> clazz = (Class<?>) type; createResourceURIForClass(clazz, uriBuilder); } else { throw new IllegalArgumentException("unexpected type: " + type); } }
protected void createFragmentForTypeVariable(TypeVariable<?> variable, StringBuilder uriBuilder) { Object declaration = variable.getGenericDeclaration(); if (declaration instanceof Type) { Type declaringType = (Type) declaration; createFragment(declaringType, uriBuilder); } else if (declaration instanceof Member) { Member member = (Member) declaration; createFragmentForMember(member, uriBuilder); } else { throw new IllegalArgumentException(variable + " / " + declaration); } uriBuilder.append('/'); uriBuilder.append(variable.getName()); }
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(')'); }
private void createFragment(Type type, StringBuilder uriBuilder) { if (type instanceof Class<?>) { Class<?> clazz = (Class<?>) type; createFragmentForClass(clazz, uriBuilder); } else { throw new IllegalArgumentException("Unexpected type: " + type); } }
private JvmType findTypeByClass(Class<?> clazz) { IndexedJvmTypeAccess indexedJvmTypeAccess = getIndexedJvmTypeAccess(); URI resourceURI = uriHelper.createResourceURI(clazz); if (indexedJvmTypeAccess != null) { URI proxyURI = resourceURI.appendFragment(uriHelper.getFragment(clazz)); EObject candidate = indexedJvmTypeAccess.getIndexedJvmType(proxyURI, getResourceSet()); if (candidate instanceof JvmType) return (JvmType) candidate; } TypeResource result = (TypeResource) getResourceSet().getResource(resourceURI, true); return findTypeByClass(clazz, result); }
protected ClassURIHelper createClassURIHelper() { return new ClassURIHelper(); }
public String getFragment(Type type) { StringBuilder uriBuilder = new StringBuilder(32); createFragment(type, uriBuilder); return uriBuilder.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 URI createResourceURI(String withoutProtocol) { StringBuilder uriBuilder = new StringBuilder(URIHelperConstants.PROTOCOL.length() + 1 + withoutProtocol.length()); uriBuilder.append(URIHelperConstants.PROTOCOL).append(":").append(withoutProtocol); return createURI(uriBuilder); }
public String computeParameterizedTypeName(Type type) { StringBuilder result = new StringBuilder(64); computeParameterizedTypeName(type, result); return result.toString(); }
protected JvmEnumerationLiteral createEnumLiteralProxy(Enum<?> e) { JvmEnumerationLiteral enumLiteralProxy = TypesFactory.eINSTANCE.createJvmEnumerationLiteral(); InternalEObject internalEObject = (InternalEObject) enumLiteralProxy; Class<?> type = e.getDeclaringClass(); try { Field field = type.getDeclaredField(e.toString()); internalEObject.eSetProxyURI(uriHelper.getFullURI(field)); } catch (Exception exception) { log.error(exception.getMessage(), exception); return null; } return enumLiteralProxy; }
protected void createResourceURIForTypeVariable(TypeVariable<?> variable, StringBuilder uriBuilder) { Object declaration = variable.getGenericDeclaration(); if (declaration instanceof Class<?>) { Class<?> declaringClass = (Class<?>) declaration; createResourceURIForClass(declaringClass, uriBuilder); } else if (declaration instanceof Member) { Member member = (Member) declaration; Class<?> declaringClass = member.getDeclaringClass(); createResourceURIForClass(declaringClass, uriBuilder); } else { throw new IllegalArgumentException(variable + " / " + declaration); } }
protected void createFragmentForClass(Class<?> clazz, StringBuilder uriBuilder) { if (clazz.isArray()) { createFragmentForClass(clazz.getComponentType(), uriBuilder); uriBuilder.append("[]"); } else { uriBuilder.append(clazz.getName()); } }