Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "COSMOS Bug Design 209248"
Line 7: | Line 7: | ||
The annotations should provide support for this model in order to | The annotations should provide support for this model in order to | ||
enforce/encourage alignment with the existing Muse programming model. | enforce/encourage alignment with the existing Muse programming model. | ||
+ | |||
+ | <pre> | ||
+ | /** | ||
+ | * Annotation used to indicate an interface which to be exposed as a distinct | ||
+ | * management capability. | ||
+ | */ | ||
+ | @Target(TYPE) | ||
+ | @Retention(RUNTIME) | ||
+ | public @interface ManagedResourceCapability { | ||
+ | |||
+ | /** | ||
+ | * A text description of the capability. | ||
+ | * This attribute is intended for tooling support. | ||
+ | * | ||
+ | */ | ||
+ | String description() default ""; | ||
+ | /** | ||
+ | * The namespace of the capability. This namespace will be used for all | ||
+ | * operations and properties exposed by this capability (unless overridden) | ||
+ | * and will uniquely identify the capability when introspecting its resource. | ||
+ | */ | ||
+ | String namespace(); | ||
+ | |||
+ | /** | ||
+ | * Indicates that the annotated implementation may be used in conjunction | ||
+ | * with the ComposableManagedCapabilitySet annotation to implement a | ||
+ | * composite managed resource | ||
+ | */ | ||
+ | boolean composable() default false; | ||
+ | } | ||
+ | </pre> | ||
<pre> | <pre> | ||
Line 50: | Line 81: | ||
*/ | */ | ||
Class capability() default Void.class; | Class capability() default Void.class; | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | /** | ||
+ | * Annotation used to indicate a class to be exposed as a manageable resource. | ||
+ | */ | ||
+ | @Target(TYPE) | ||
+ | @Retention(RUNTIME) | ||
+ | public @interface ManagedResourceFactory { | ||
+ | |||
+ | /** | ||
+ | * If true, indicates that the resource is a singleton, and only the default | ||
+ | * instance may be registered. All other instances attempting to register will | ||
+ | * be rejected | ||
+ | */ | ||
+ | boolean singleton() default false; | ||
+ | |||
} | } | ||
</pre> | </pre> |
Revision as of 16:44, 16 November 2007
The Muse programming model is a composition-oriented model, where capabilities can be imposed on a resource implementation externally. In the annotations, the composition model can be supported programatically by creating a single facade over multiple capability implementations, but the annotations don't provide any support to make this easier.
The annotations should provide support for this model in order to enforce/encourage alignment with the existing Muse programming model.
/** * Annotation used to indicate an interface which to be exposed as a distinct * management capability. */ @Target(TYPE) @Retention(RUNTIME) public @interface ManagedResourceCapability { /** * A text description of the capability. * This attribute is intended for tooling support. * */ String description() default ""; /** * The namespace of the capability. This namespace will be used for all * operations and properties exposed by this capability (unless overridden) * and will uniquely identify the capability when introspecting its resource. */ String namespace(); /** * Indicates that the annotated implementation may be used in conjunction * with the ComposableManagedCapabilitySet annotation to implement a * composite managed resource */ boolean composable() default false; }
/** * Annotation used to decorate a ManagedResource with externally implemented capabilities */ @Target(TYPE) @Retention(RUNTIME) public @interface ComposableManagedCapabilitySet { /** * The set of capability classes to decorate the targeted * ManagedResource instance with. This annotation works * in conjunction with the ManagedFrameworkAutowire, * ManagedResourceCapability, and ManagedResourceFactory * annotations to enable the framework to replicate the * delcarative programming model exposed by Muse.xml */ Class[] set() default {}; }
/** * Annotation used to support autowiring of * Components within the management framework. */ @Target(FIELD) @Retention(RUNTIME) public @interface ManagedFrameworkAutowire { /** * Name of the desired Component */ String name() default ""; /** * Class of the desired Capability. This attribute works * in conjunction with the ComposableManagedCapabilitySet * annotation */ Class capability() default Void.class; }
/** * Annotation used to indicate a class to be exposed as a manageable resource. */ @Target(TYPE) @Retention(RUNTIME) public @interface ManagedResourceFactory { /** * If true, indicates that the resource is a singleton, and only the default * instance may be registered. All other instances attempting to register will * be rejected */ boolean singleton() default false; }