Describe the feature
There should be a way to uniquely identify a service from its Builder. Direct reflection on the Builder's class or interfaces is heavy handed and cumbersome. In the interim, we have been successfully using reflection to make accessible and call the protected method AwsDefaultClientBuilder.serviceName(). The serviceEndpointPrefix() method would work equally well.
Use Case
We have service-specific configuration settings that we apply in a generic way using SdkBuilder.applyMutation(). For example, under certain circumstances, some services need to use one of two different proxy clusters or no proxy server at all. But part of this determination requires that we know what service it is.
Proposed Solution
Hoist serviceEndpointPrefix() and/or serviceName() from AwsDefaultClientBuilder into an interface like AwsClientBuilder.
Other Information
I haven't really thought through all the implications of moving those methods to AwsClientBuilder (or to another interface, or just making the abstract class's methods public). Or whether there's a better way altogether. But I can say that we have been successfully using serviceName() for many years, and it would be nice to make this (or something equivalent) better/officially supported.
So let's start the discussion here.
Acknowledgements
AWS Java SDK version used
All
JDK version used
All
Operating System and version
All
Describe the feature
There should be a way to uniquely identify a service from its Builder. Direct reflection on the Builder's class or interfaces is heavy handed and cumbersome. In the interim, we have been successfully using reflection to make accessible and call the
protectedmethodAwsDefaultClientBuilder.serviceName(). TheserviceEndpointPrefix()method would work equally well.Use Case
We have service-specific configuration settings that we apply in a generic way using
SdkBuilder.applyMutation(). For example, under certain circumstances, some services need to use one of two different proxy clusters or no proxy server at all. But part of this determination requires that we know what service it is.Proposed Solution
Hoist
serviceEndpointPrefix()and/orserviceName()fromAwsDefaultClientBuilderinto an interface likeAwsClientBuilder.Other Information
I haven't really thought through all the implications of moving those methods to
AwsClientBuilder(or to another interface, or just making the abstract class's methods public). Or whether there's a better way altogether. But I can say that we have been successfully usingserviceName()for many years, and it would be nice to make this (or something equivalent) better/officially supported.So let's start the discussion here.
Acknowledgements
AWS Java SDK version used
All
JDK version used
All
Operating System and version
All