1. Naming Pattern - Component Name
A DS component name should end with Component e.g. RobotComponent.
public class RobotComponent implements Robot {}
2. Naming Pattern - Start and Stop Method
For methods, which should be called on, activate or deactivate a DS component the following names should be used:
- start(…) and stop(…)
- startup(…) and shutdown(…)
- initialize(…) and deinitialize (…)
- activate(…) and deactivate(…)
public class RobotComponent implements Robot {
public void activate(){...}
public void deactivate(){...}
}
3. Naming Pattern - Service Lifecycle Methods
For the service lifecycle method the following method name patterns should be uses:
- bind${serviceName}(…) and unbind${serviceName}(…)
- set${serviceName}(…) and unset${serviceName}(…)
- add${serviceName}(…) and remove${serviceName}(…)
DS method name for bind more then one service instance 0..n or 1..n should become the name add* and remove*.
public class RobotComponent implements Robot {
public void setEngine(Engine engine){...}
public void unsetEngine(Engine engine){...}
public void addSensor(Sensor sensor){...}
public void removeSensor(Sensor sensor){...}
}
4. Implementation Pattern - Behavior Symmetry
When there is logic for start (activate) or set something there should always be logic for stopping or unset.
5. Implementation Pattern - Avoid Implicit Immediate Components
When a DS component not provide a Service then the component is immediate activate when all reference service are available. When the code is changed and the component know provide a service, then the component is activated when the first client component like to use the service. When a component should be activate immediate then I think avoid implicitly immediate components add always immediate=true.
6. Implementation Pattern - Use Annotations for DS Components
Use BND or Apache Felix SCR annotations to describe DS components.
Links
- Apache Felix Maven SCR - http://felix.apache.org/site/apache-felix-maven-scr-plugin.html
- BND Annotation - http://www.aqute.biz/Bnd/Components