@Override public boolean accept(Type type, Class<? extends MetaElement> metaClass) { boolean hasAnnotation = ClassUtils.getRawType(type).getAnnotation(Embeddable.class) != null; boolean hasType = metaClass == MetaElement.class || metaClass == MetaEmbeddable.class || metaClass == MetaJpaDataObject.class; return hasAnnotation && hasType; }
@Override public boolean accept(Type type, Class<? extends MetaElement> metaClass) { boolean hasResourceAnnotation = ClassUtils.getRawType(type).getAnnotation(JsonApiResource.class) != null; return type instanceof Class && metaClass == MetaJsonObject.class && !hasResourceAnnotation; }
@JsonIgnore public Class<?> getImplementationClass() { return ClassUtils.getRawType(implementationType); }
@Override public boolean accept(Type type, Class<? extends MetaElement> metaClass) { boolean hasAnnotation = ClassUtils.getRawType(type).getAnnotation(MappedSuperclass.class) != null; boolean hasType = metaClass == MetaElement.class || metaClass == MetaMappedSuperclass.class || metaClass == MetaJpaDataObject.class; return hasAnnotation && hasType; }
@Override public boolean accept(Type type, Class<? extends MetaElement> metaClass) { boolean hasAnnotation = ClassUtils.getRawType(type).getAnnotation(Entity.class) != null; boolean hasMetaType = metaClass == MetaElement.class || metaClass == MetaEntity.class || metaClass == MetaJpaDataObject.class; return hasAnnotation && hasMetaType; }
public static Class<?> getRawType(Type type) { if (type instanceof Class) { return (Class<?>) type; } else if (type instanceof ParameterizedType) { return getRawType(((ParameterizedType) type).getRawType()); } else { throw new IllegalStateException("unknown type: " + type); } }
public static String getResourceType(Type genericType, ResourceInformationBuilderContext context) { Type elementType = genericType; if (Iterable.class.isAssignableFrom(ClassUtils.getRawType(genericType))) { elementType = ClassUtils.getRawType(((ParameterizedType) genericType).getActualTypeArguments()[0]); } Class<?> rawType = ClassUtils.getRawType(elementType); return context.accept(rawType) ? context.getResourceType(rawType) : null; }
@Override public boolean accept(Type type, Class<? extends MetaElement> metaClass) { if (metaClass != MetaResource.class && metaClass != MetaElement.class && metaClass != MetaJsonObject.class) return false; // note that the resourceRegistry might also contain none JSON API objects with a custom // information builder, so only accept if a MetaResource was explicitly requested if (resourceRegistry != null && (metaClass == MetaResource.class || metaClass == MetaJsonObject.class)) { Class<?> clazz = ClassUtils.getRawType(type); if (resourceRegistry.getEntryForClass(clazz) != null) { return true; } } // always accept if json api annotations are found return ClassUtils.getRawType(type).getAnnotation(JsonApiResource.class) != null; }
private void setListInformationTypes(Object repository, MetaProviderContext context, MetaResourceRepository meta) { try { Method findMethod = repository.getClass().getMethod("findAll", QuerySpec.class); Class<?> listType = findMethod.getReturnType(); if (ResourceListBase.class.equals(listType.getSuperclass()) && listType.getGenericSuperclass() instanceof ParameterizedType) { ParameterizedType genericSuperclass = (ParameterizedType) listType.getGenericSuperclass(); Class<?> metaType = ClassUtils.getRawType(genericSuperclass.getActualTypeArguments()[1]); Class<?> linksType = ClassUtils.getRawType(genericSuperclass.getActualTypeArguments()[2]); if (!metaType.equals(MetaInformation.class)) { MetaDataObject listMetaType = context.getLookup().getMeta(metaType, MetaJsonObject.class); meta.setListMetaType(listMetaType); } if (!linksType.equals(LinksInformation.class)) { MetaDataObject listLinksType = context.getLookup().getMeta(linksType, MetaJsonObject.class); meta.setListLinksType(listLinksType); } } } catch (SecurityException | NoSuchMethodException e) { throw new IllegalStateException(e); } }
@Override public MetaEmbeddable createElement(Type type, MetaProviderContext context) { Class<?> rawClazz = ClassUtils.getRawType(type); Class<?> superClazz = rawClazz.getSuperclass(); MetaElement superMeta = null; if (superClazz != Object.class) { superMeta = context.getLookup().getMeta(superClazz, MetaJpaDataObject.class); } MetaEmbeddable meta = new MetaEmbeddable(); meta.setElementType(meta); meta.setName(rawClazz.getSimpleName()); meta.setImplementationType(type); meta.setSuperType((MetaDataObject) superMeta); if (superMeta != null) { ((MetaDataObject) superMeta).addSubType(meta); } createAttributes(meta); return meta; }
@Override public MetaElement createElement(Type type, MetaProviderContext context) { Class<?> rawClazz = ClassUtils.getRawType(type); Class<?> superClazz = rawClazz.getSuperclass(); MetaElement superMeta = null; if (superClazz != Object.class && superClazz != null) { superMeta = context.getLookup().getMeta(superClazz, getMetaClass()); } MetaDataObject meta = newDataObject(); meta.setElementType(meta); meta.setName(rawClazz.getSimpleName()); meta.setImplementationType(type); meta.setSuperType((MetaDataObject) superMeta); if (superMeta != null) { ((MetaDataObject) superMeta).addSubType(meta); } createAttributes(meta); return meta; }
@Override public MetaElement createElement(Type type, MetaProviderContext context) { Class<?> rawClazz = ClassUtils.getRawType(type); Class<?> jpaSuperclass = getJpaSuperclass(rawClazz); MetaElement superMeta = null; if (jpaSuperclass != null) { superMeta = context.getLookup().getMeta(jpaSuperclass, MetaJpaDataObject.class); } T meta = newDataObject(); meta.setElementType(meta); meta.setName(rawClazz.getSimpleName()); meta.setImplementationType(type); meta.setSuperType((MetaDataObject) superMeta); if (superMeta != null) { ((MetaDataObject) superMeta).addSubType(meta); } createAttributes(meta); setKey(meta); return meta; }
@Override public MetaElement createElement(Type type, MetaProviderContext context) { ResourceInformation information = getResourceInformation(ClassUtils.getRawType(type));
for (ResourceField field : information.getRelationshipFields()) { if (field.getOppositeName() != null) { Class<?> oppositeType = ClassUtils.getRawType(field.getElementType()); MetaResource oppositeMeta = context.getLookup().getMeta(oppositeType, MetaResource.class); MetaAttribute attr = metaResource.getAttribute(field.getUnderlyingName());