org.apache.felix.dm.annotation.api
Annotation Type AdapterService


@Retention(value=CLASS)
@Target(value=TYPE)
public @interface AdapterService

Annotates an Adapater service. Adapters, like AspectService, are used to "extend" existing services, and can publish different services based on the existing one. An example would be implementing a management interface for an existing service, etc ....

When you annotate an adapter class with the @AdapterService annotation, it will be applied to any service that matches the implemented interface and filter. The adapter will be registered with the specified interface and existing properties from the original service plus any extra properties you supply here. If you declare the original service as a member it will be injected.

Usage Examples

Here, the AdapterService is registered into the OSGI registry each time an AdapteeService is found from the registry. The AdapterImpl class adapts the AdapteeService to the AdapterService. The AdapterService will also have a service property (param=value), and will also include eventual service properties found from the AdapteeService:

 
 @AdapterService(adapteeService = AdapteeService.class, properties={@Property(name="param", value="value")})
 class AdapterImpl implements AdapterService {
     // The service we are adapting (injected by reflection)
     protected AdapteeService adaptee;
   
     public void doWork() {
        adaptee.mehod1();
        adaptee.method2();
     }
 }
 


Required Element Summary
  adapteeService
          Sets the adaptee service interface this adapter is applying to.
 
Optional Element Summary
 String adapteeFilter
          Sets the filter condition to use with the adapted service interface.
 String factoryMethod
          Sets the static method used to create the adapter service implementation instance.
 Property[] properties
          Sets some additional properties to use with the adapter service registration.
 [] provides
          Sets the adapter service interface(s).
 

Element Detail

adapteeService

public abstract  adapteeService
Sets the adaptee service interface this adapter is applying to.

provides

public abstract [] provides
Sets the adapter service interface(s). By default, the directly implemented interface(s) is (are) used.

Default:
{}

properties

public abstract Property[] properties
Sets some additional properties to use with the adapter service registration. By default, the adapter will inherit all adaptee service properties.

Default:
{}

adapteeFilter

public abstract String adapteeFilter
Sets the filter condition to use with the adapted service interface.

Default:
""

factoryMethod

public abstract String factoryMethod
Sets the static method used to create the adapter service implementation instance. By default, the default constructor of the annotated class is used.

Default:
""


Copyright © 2011 Apache Software Foundation. All Rights Reserved.