spring-cloud-config icon indicating copy to clipboard operation
spring-cloud-config copied to clipboard

[Refactoring] Introduce RequestContext to easily pass new parameters to downstream methods

Open opeco17 opened this issue 10 months ago • 0 comments

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.

opeco17 avatar Apr 22 '24 13:04 opeco17