A ServiceSupport annotation would enforce good pratices when creating service providers.
Example:
@ServiceDefinition
public interface Driver {
String getName();
Closeable openConnection();
}
@ServiceSupport
@lombok.Builder ( toBuilder = true )
public final class QuickDriverSupport implements Driver {
@lombok.Getter
@lombok.Builder.Default
private final String name;
@Override
public Closeable openConnection() { ... }
}
@ServiceProvider
public final class Driver1 implements Driver {
@lombok.experimental.Delegate
private final Driver delegate = QuickDriverSupport.builder().name("X1").build();
}
@ServiceProvider
public final class Driver2 implements Driver {
@lombok.experimental.Delegate
private final Driver delegate = QuickDriverSupport.builder().name("X2").build();
}
A
ServiceSupportannotation would enforce good pratices when creating service providers.Example: