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.