001package io.jstach.svc;
002
003import static java.lang.annotation.ElementType.MODULE;
004import static java.lang.annotation.ElementType.TYPE;
005import static java.lang.annotation.RetentionPolicy.SOURCE;
006
007import java.lang.annotation.Documented;
008import java.lang.annotation.Retention;
009import java.lang.annotation.Target;
010import java.util.ServiceLoader;
011
012/**
013 * Generates {@link ServiceLoader} <code>META-INF/services/SERVICE_INTERFACE</code> files
014 * and validates.
015 *
016 * @author agentgt
017 */
018@Documented
019@Retention(SOURCE)
020@Target({ TYPE, MODULE })
021public @interface ServiceProvider {
022
023        /**
024         * The specific interface to generate a service registration.
025         * @return if <code>void</code> is returned which is the default the interface will be
026         * inferred.
027         */
028        Class<?>[] value() default void.class;
029
030}