Example usage for org.springframework.data.rest.core.mapping AnnotationBasedResourceDescription AnnotationBasedResourceDescription

List of usage examples for org.springframework.data.rest.core.mapping AnnotationBasedResourceDescription AnnotationBasedResourceDescription

Introduction

In this page you can find the example usage for org.springframework.data.rest.core.mapping AnnotationBasedResourceDescription AnnotationBasedResourceDescription.

Prototype

public AnnotationBasedResourceDescription(Class<?> type, ResourceDescription fallback) 

Source Link

Usage

From source file:org.springframework.data.rest.webmvc.json.JacksonMetadata.java

/**
 * Returns the fallback {@link ResourceDescription} to be used for the given {@link BeanPropertyDefinition}.
 * /*from  w  ww.  ja  v  a  2  s  .  c om*/
 * @param ownerMetadata must not be {@literal null}.
 * @param definition must not be {@literal null}.
 * @return
 */
public ResourceDescription getFallbackDescription(ResourceMetadata ownerMetadata,
        BeanPropertyDefinition definition) {

    Assert.notNull(ownerMetadata, "Owner's resource metadata must not be null!");
    Assert.notNull(definition, "BeanPropertyDefinition must not be null!");

    AnnotatedMember member = definition.getPrimaryMember();
    Description description = member.getAnnotation(Description.class);
    ResourceDescription fallback = TypedResourceDescription.defaultFor(ownerMetadata.getItemResourceRel(),
            definition.getInternalName(), definition.getPrimaryMember().getRawType());

    return description == null ? fallback : new AnnotationBasedResourceDescription(description, fallback);
}

From source file:org.springframework.data.rest.webmvc.alps.RootResourceInformationToAlpsDescriptorConverter.java

/**
 * Builds a descriptor for the projection parameter of the given resource.
 * //from ww  w . ja  va 2s .c  o m
 * @param metadata
 * @return
 */
private Descriptor buildProjectionDescriptor(ResourceMetadata metadata) {

    ProjectionDefinitionConfiguration projectionConfiguration = configuration.getProjectionConfiguration();
    String projectionParameterName = projectionConfiguration.getParameterName();

    Map<String, Class<?>> projections = projectionConfiguration.getProjectionsFor(metadata.getDomainType());
    List<Descriptor> projectionDescriptors = new ArrayList<Descriptor>(projections.size());

    for (Entry<String, Class<?>> projection : projections.entrySet()) {

        Class<?> type = projection.getValue();
        String key = String.format("%s.%s.%s", metadata.getRel(), projectionParameterName, projection.getKey());
        ResourceDescription fallback = SimpleResourceDescription.defaultFor(key);
        AnnotationBasedResourceDescription projectionDescription = new AnnotationBasedResourceDescription(type,
                fallback);

        projectionDescriptors.add(//
                descriptor().//
                        type(Type.SEMANTIC).//
                        name(projection.getKey()).//
                        doc(getDocFor(projectionDescription)).//
                        descriptors(createJacksonDescriptor(projection.getKey(), type)).//
                        build());
    }

    return descriptor().//
            type(Type.SEMANTIC).//
            name(projectionParameterName).//
            doc(getDocFor(SimpleResourceDescription.defaultFor(projectionParameterName))).//
            descriptors(projectionDescriptors).build();
}

From source file:org.springframework.data.rest.webmvc.alps.RootResourceInformationToAlpsDescriptorConverter.java

private List<Descriptor> createJacksonDescriptor(String name, Class<?> type) {

    List<Descriptor> descriptors = new ArrayList<Descriptor>();

    for (BeanPropertyDefinition definition : new JacksonMetadata(mapper, type)) {

        AnnotatedMethod getter = definition.getGetter();
        Description description = getter.getAnnotation(Description.class);
        ResourceDescription fallback = SimpleResourceDescription
                .defaultFor(String.format("%s.%s", name, definition.getName()));
        ResourceDescription resourceDescription = description == null ? null
                : new AnnotationBasedResourceDescription(description, fallback);

        descriptors.add(//
                descriptor().//
                        name(definition.getName()).//
                        type(Type.SEMANTIC).//
                        doc(getDocFor(resourceDescription)).//
                        build());//  ww  w.  j a  v a 2  s . com
    }

    return descriptors;
}