Am Dienstag, den 02.10.2007, 10:38 -0400 schrieb Richard S. Hall:
> It seems reasonable to me. Is there any relationship here to the 
> Dependency Manager API? Or should there be?

Not yet, but Marcel said that we might want to try develop a common
Management API.

Marcel, what do you think ?

Regards
Felix

> 
> -> richard
> 
> Felix Meschberger wrote:
> > Hi all,
> >
> > In issue FELIX-284, I stipulate the definition of a management API for
> > the Felix Declarative Services Implementationn (SCR). Disregarding
> > anything else in the first step, I come up with a very simple API. The
> > goal is to be easily usable as a Management API and not to directly
> > reflect the service declaration. For this reason, the <rerference
> > cardinality> configuration is split in two methods isOptional and
> > isMultiple and the <service> and <provide> elements are folded into the
> > isServiceFactory getServices method.
> >
> > In addtion the Component interface has two methods to enable and disable
> > a component and the Refernce interface provides access to an array of
> > ServiceReference objects denoting the services currently bound to the
> > component.
> >
> > This API may be used by some shell or JMX integration.
> >
> > What do you think ?
> >
> > Regards
> > Felix
> >
> >
> > API follows:
> >
> > // registered as a service accessible to management agents
> > public interface ScrService {
> >   // return all known components in ascending order of theire
> > component.id
> >   Component[] getComponents();
> >   // return the component with the given ID or null if none
> >   Component getComponent(long componentId);
> > }
> >
> > public interface Component {
> >   // the name of the component (<component name>)
> >   String getName();
> >   // the component ID (assigned by SCR)
> >   long getId();
> >   // the component factory name or null (<component factory>)
> >   String getFactory();
> >   // the component class name (<implementation class>)
> >   String getClassName();
> >   // the current state of the component (to be defined as constants)
> >   int getState();
> >   // true if the component is a service factory (<service
> > serviceFactory>)
> >   boolen isServiceFactory();
> >   // the list of service names or null if not a service (<provide
> > interface>)
> >   String[] getServices();
> >   // the component properties (same as ComponentContext.getProperties())
> >   Dictionary getProperties();
> >   // the service references of the Component
> >   Reference[] getReferences();
> >   // enables the component if disabled
> >   void enable();
> >   // disables the component if enabled
> >   void disable();
> >   // whether the component is defined to be initially enabled
> > (<component enabled>)
> >   boolean isDefaultEnabled();
> >   // whether the component is defined to be created immediately
> > (<component immediate>)
> >   boolean isImmediate();
> > }
> >
> > public interface Reference {
> >   // the local name of the reference (<reference name>)
> >   String getName();
> >   // the name of the service referred to (<reference interface>)
> >   String getServiceName();
> >   // services bound to the component per this Reference
> >   ServiceReference[] getServiceReferences();
> >   // whether this reference is satisfied
> >   boolean isSatisfied();
> >   // whether the service is optional (<reference cardinality>)
> >   boolean isOptional();
> >   // whether the service is multiple (<reference cardinality>)
> >   boolean isMultiple();
> >   // whether the service is bound statically or dynamically (<reference
> > policy>)
> >   boolean isStatic();
> >   // the target selection filter or null if none
> >   // (getName()+".target" property of component based on <reference
> > target>)
> >   String getTarget();
> >   // the name of the bind method or null (<reference bind>)
> >   String getBindMethodName();
> >   // the name of the unbind method or null (<reference unbind>)
> >   String getUnbindMethodName();
> > }
> >
> >   

Reply via email to