blob: 5c2600ff1262bc48311b84843e8842efdc29900c [file] [log] [blame]
/*
* Copyright(C) OASIS(R) 2005,2010. All Rights Reserved.
* OASIS trademark, IPR and other policies apply.
*/
package org.oasisopen.sca.annotation;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
/**
* The @Service annotation is used on a component implementation
* class to specify the SCA services offered by the implementation.
*
* The class need not be declared as implementing all of the
* interfaces implied by the services, but all methods of the service
* interfaces must be present.
*
* A class used as the implementation of a service is not required
* to have a @Service annotation. If a class has no @Service annotation,
* then the rules determining which services are offered and what
* interfaces those services have are determined by the specific
* implementation type.
*/
@Target(TYPE)
@Retention(RUNTIME)
public @interface Service {
/**
* The value is an array of interface or class objects that should be
* exposed as services by this component.
*
* @return the services of this component
*/
Class<?>[] value();
/**
* The value is an array of strings which are used as the service names
* for each of the interfaces declared in the value array.
*
* @return the service names
*/
String[] names() default {};
}