package de.escalon.hypermedia.action;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Allows to explicitly qualify a method handler as resource with defined cardinality. Normally a Collection or a
* Resources return type (optionally wrapped into an HttpEntity) or the presence of a POST method implicitly qualifies a
* resource a collection. Created by Dietrich on 02.05.2015.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface ResourceHandler {
/**
* Allows to disambiguate if the annotated method handler manages a single or a collection resource. This can be
* helpful when there is a return type which doesn't allow to decide the cardinality of a resource, or when the
* default recognition comes to the wrong result. E.g. one can annotate a POST handler so that renderers can render
* the related resource as a single resource.
* <pre>
* @ResourceHandler(Cardinality.SINGLE)
* @RequestMapping(method=RequestMethod.POST)
* public ResponseEntity<String> myPostHandler() {}
* </pre>
*
* @return cardinality
*/
Cardinality value();
}