Project: mule
Issue MULE-8240: Allow extension components to extend existing functionality
There're cases in which an operation implemented through the ext-api should be part of an specific substitution group. Because substitution groups are an XSD specific concept and because the same concept might be necessary in other DSL types, we need a mechanism to denote extensibility that goes beyond Java's "extends" and "implements" keywords but is still type related. For that purpose, two new annotations are created: @Extensible: means that a given type is extensible by another extension. It doesn't mean type subclassing, but extension from a functionality point of view. This annotation has an optional String alias() attribute to allow a better experience when generating XSD @ImplementationOf(type=XX.class): This annotation can be used on a class or method implementing operations. It means that the affected operations are to be part of a substitution group defined by an extensible type. The type argument in this annotation is mandatory and has to be a type that is annotated with @Extensible
Story points: 3