I am working on a project which requires me to execute standard HTTP calls with session tokens. I am building a custom HTTP client, with a custom authenticator, something like this:

Client client = Client.Builder().withConfig().withAuthenticator(Authenticator);

and my authenticator is an interface

public interface Authenticator{
  SessionToken getSessionToken(); // so that different authentication methods can be supported

Now, for executing a request, I need to get a session token, which I obtain by calling authenticator.getSessionToken(). However, the authenticator has to call the backend to get the token, for which it requires a client, leading to a circular dependency. How do I solve this? One approach is to create a separate authentication client, which I pass in the constructor of the Authenticator Implementation, but the package imports would still show circular dependency. Is there a better way to design this?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.