This improves service loading by adding an IntegrationsLoader that uses annotations to sort and filter implementation candidates.
Furthermore static "factory" methods have been added to all current services.
Sorting
Using the @Priority(42) annotation, we can make a certain service implementation take precedence over others, allowing us to implement fallback mechanisms easily.
Filtering
This allows us (to a certain degree) to check whether a certain service implementation is suited for e.g. the current operating system (using the @OperatingSystem(Value.Windows) annotation) without actually creating an instance of said service. Further discriminators may be added on demand eventually.
This improves service loading by adding an
IntegrationsLoader
that uses annotations to sort and filter implementation candidates.Furthermore static "factory" methods have been added to all current services.
Sorting
Using the
@Priority(42)
annotation, we can make a certain service implementation take precedence over others, allowing us to implement fallback mechanisms easily.Filtering
This allows us (to a certain degree) to check whether a certain service implementation is suited for e.g. the current operating system (using the
@OperatingSystem(Value.Windows)
annotation) without actually creating an instance of said service. Further discriminators may be added on demand eventually.