-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
Is your feature request related to a problem? Please describe.
In the current implementation, it's necessary to change a bunch of method signatures when we introduce new HTTP parameters and pass them to downstream methods.
Let's say you introduce the new parameter forceRefresh like #2402.
In this case, you need to change the signature of EnvironmentRepository and SearchPathLocator and modify a lot of classes that implement those interfaces.
Before introducing forceRefresh
public interface EnvironmentRepository {
Environment findOne(String application, String profile, String label);
Environment findOne(String application, String profile, String label, boolean includeOrigin);
}
public interface SearchPathLocator {
Locations getLocations(String application, String profile, String label);
}After introducing forceRefresh
public interface EnvironmentRepository {
Environment findOne(String application, String profile, String label);
Environment findOne(String application, String profile, String label, boolean includeOrigin);
Environment findOne(String application, String profile, String label, boolean includeOrigin, boolean forceRefresh);
}
public interface SearchPathLocator {
Locations getLocations(String application, String profile, String label);
Locations getLocations(String application, String profile, String label, boolean forceRefresh);
}Describe the solution you'd like
Introduce RequestContext and change the interface of EnvironmentRepository and SearchPathLocator like below.
public interface EnvironmentRepository {
Environment findOne(RequestContext ctx);
}
public interface SearchPathLocator {
Locations getLocations(RequestContext ctx);
}When you introduce new HTTP parameters, you can just change RequestContext and don't need to change a bunch of method signatures like the current implementation.