1414
1515package com .ibm .watson .developer_cloud .spring .boot ;
1616
17+ import com .ibm .cloud .sdk .core .security .Authenticator ;
18+ import com .ibm .cloud .sdk .core .security .BasicAuthenticator ;
19+ import com .ibm .cloud .sdk .core .security .ConfigBasedAuthenticatorFactory ;
20+ import com .ibm .cloud .sdk .core .security .IamAuthenticator ;
1721import com .ibm .cloud .sdk .core .service .BaseService ;
18- import com .ibm .cloud .sdk .core .service .security .IamOptions ;
1922import com .ibm .watson .assistant .v1 .Assistant ;
2023import com .ibm .watson .compare_comply .v1 .CompareComply ;
2124import com .ibm .watson .discovery .v1 .Discovery ;
2730import com .ibm .watson .text_to_speech .v1 .TextToSpeech ;
2831import com .ibm .watson .tone_analyzer .v3 .ToneAnalyzer ;
2932import com .ibm .watson .visual_recognition .v3 .VisualRecognition ;
30-
3133import org .springframework .beans .factory .annotation .Autowired ;
3234import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
3335import org .springframework .boot .context .properties .EnableConfigurationProperties ;
@@ -47,28 +49,28 @@ public class WatsonAutoConfiguration {
4749 private void configUrl (BaseService service , WatsonConfigurationProperties config ) {
4850 String url = config .getUrl ();
4951 if (url != null ) {
50- service .setEndPoint (url );
52+ service .setServiceUrl (url );
5153 }
5254 }
5355
54- private void configAuth (BaseService service , WatsonConfigurationProperties config ) {
56+ private Authenticator configAuth (WatsonConfigurationProperties config , String serviceName ) {
5557 String iamApiKey = config .getIamApiKey ();
5658 if (iamApiKey != null ) {
57- IamOptions options = new IamOptions .Builder ().apiKey (iamApiKey ).build ();
58- service .setIamCredentials (options );
59- return ;
59+ return new IamAuthenticator (iamApiKey );
6060 }
6161 String username = config .getUsername ();
6262 String password = config .getPassword ();
6363 if (username != null && password != null ) {
64- service .setUsernameAndPassword (username , password );
65- return ;
64+ return new BasicAuthenticator (username , password );
6665 }
6766 String apiKey = config .getApiKey ();
6867 if (apiKey != null ) {
69- service .setApiKey (apiKey );
70- return ;
68+ return new WatsonApiKeyAuthenticator (apiKey );
7169 }
70+
71+ // If we can't find the right properties, we'll return what we get from the auth config factory, which will
72+ // pull from things like VCAP_SERVICES.
73+ return ConfigBasedAuthenticatorFactory .getAuthenticator (serviceName );
7274 }
7375
7476 // Watson Assistant service
@@ -80,9 +82,9 @@ private void configAuth(BaseService service, WatsonConfigurationProperties confi
8082 @ ConditionalOnMissingBean
8183 @ ConditionalOnWatsonServiceProperties (prefix = WatsonAssistantConfigurationProperties .PREFIX )
8284 public Assistant assistant () {
83- Assistant service = new Assistant (assistantConfig .getVersionDate ());
85+ Authenticator authConfig = configAuth (assistantConfig , "assistant" );
86+ Assistant service = new Assistant (assistantConfig .getVersionDate (), authConfig );
8487 configUrl (service , assistantConfig );
85- configAuth (service , assistantConfig );
8688 return service ;
8789 }
8890
@@ -95,9 +97,9 @@ public Assistant assistant() {
9597 @ ConditionalOnMissingBean
9698 @ ConditionalOnWatsonServiceProperties (prefix = WatsonCompareComplyConfigurationProperties .PREFIX )
9799 public CompareComply compareComply () {
98- CompareComply service = new CompareComply (compareComplyConfig .getVersionDate ());
100+ Authenticator authConfig = configAuth (compareComplyConfig , "compare_comply" );
101+ CompareComply service = new CompareComply (compareComplyConfig .getVersionDate (), authConfig );
99102 configUrl (service , compareComplyConfig );
100- configAuth (service , compareComplyConfig );
101103 return service ;
102104 }
103105
@@ -110,9 +112,9 @@ public CompareComply compareComply() {
110112 @ ConditionalOnMissingBean
111113 @ ConditionalOnWatsonServiceProperties (prefix = WatsonDiscoveryConfigurationProperties .PREFIX )
112114 public Discovery discovery () {
113- Discovery service = new Discovery (discoveryConfig .getVersionDate ());
115+ Authenticator authConfig = configAuth (discoveryConfig , "discovery" );
116+ Discovery service = new Discovery (discoveryConfig .getVersionDate (), authConfig );
114117 configUrl (service , discoveryConfig );
115- configAuth (service , discoveryConfig );
116118 return service ;
117119 }
118120
@@ -125,9 +127,9 @@ public Discovery discovery() {
125127 @ ConditionalOnMissingBean
126128 @ ConditionalOnWatsonServiceProperties (prefix = WatsonLanguageTranslatorConfigurationProperties .PREFIX )
127129 public LanguageTranslator languageTranslator () {
128- LanguageTranslator service = new LanguageTranslator (ltConfig .getVersionDate ());
130+ Authenticator authConfig = configAuth (ltConfig , "language_translator" );
131+ LanguageTranslator service = new LanguageTranslator (ltConfig .getVersionDate (), authConfig );
129132 configUrl (service , ltConfig );
130- configAuth (service , ltConfig );
131133 return service ;
132134 }
133135
@@ -140,9 +142,9 @@ public LanguageTranslator languageTranslator() {
140142 @ ConditionalOnMissingBean
141143 @ ConditionalOnWatsonServiceProperties (prefix = WatsonNaturalLanguageClassifierConfigurationProperties .PREFIX )
142144 public NaturalLanguageClassifier naturalLanguageClassifier () {
143- NaturalLanguageClassifier service = new NaturalLanguageClassifier ();
145+ Authenticator authConfig = configAuth (nlcConfig , "natural_language_classifier" );
146+ NaturalLanguageClassifier service = new NaturalLanguageClassifier (authConfig );
144147 configUrl (service , nlcConfig );
145- configAuth (service , nlcConfig );
146148 return service ;
147149 }
148150
@@ -155,9 +157,9 @@ public NaturalLanguageClassifier naturalLanguageClassifier() {
155157 @ ConditionalOnMissingBean
156158 @ ConditionalOnWatsonServiceProperties (prefix = WatsonNaturalLanguageUnderstandingConfigurationProperties .PREFIX )
157159 public NaturalLanguageUnderstanding naturalLanguageUnderstanding () {
158- NaturalLanguageUnderstanding service = new NaturalLanguageUnderstanding (nluConfig .getVersionDate ());
160+ Authenticator authConfig = configAuth (nluConfig , "natural_language_understanding" );
161+ NaturalLanguageUnderstanding service = new NaturalLanguageUnderstanding (nluConfig .getVersionDate (), authConfig );
159162 configUrl (service , nluConfig );
160- configAuth (service , nluConfig );
161163 return service ;
162164 }
163165
@@ -170,9 +172,9 @@ public NaturalLanguageUnderstanding naturalLanguageUnderstanding() {
170172 @ ConditionalOnMissingBean
171173 @ ConditionalOnWatsonServiceProperties (prefix = WatsonPersonalityInsightsConfigurationProperties .PREFIX )
172174 public PersonalityInsights personalityInsights () {
173- PersonalityInsights service = new PersonalityInsights (piConfig .getVersionDate ());
175+ Authenticator authConfig = configAuth (piConfig , "personality_insights" );
176+ PersonalityInsights service = new PersonalityInsights (piConfig .getVersionDate (), authConfig );
174177 configUrl (service , piConfig );
175- configAuth (service , piConfig );
176178 return service ;
177179 }
178180
@@ -185,9 +187,9 @@ public PersonalityInsights personalityInsights() {
185187 @ ConditionalOnMissingBean
186188 @ ConditionalOnWatsonServiceProperties (prefix = WatsonSpeechToTextConfigurationProperties .PREFIX )
187189 public SpeechToText speechToText () {
188- SpeechToText service = new SpeechToText ();
190+ Authenticator authConfig = configAuth (sttConfig , "speech_to_text" );
191+ SpeechToText service = new SpeechToText (authConfig );
189192 configUrl (service , sttConfig );
190- configAuth (service , sttConfig );
191193 return service ;
192194 }
193195
@@ -200,9 +202,9 @@ public SpeechToText speechToText() {
200202 @ ConditionalOnMissingBean
201203 @ ConditionalOnWatsonServiceProperties (prefix = WatsonTextToSpeechConfigurationProperties .PREFIX )
202204 public TextToSpeech textToSpeech () {
203- TextToSpeech service = new TextToSpeech ();
205+ Authenticator authConfig = configAuth (ttsConfig , "text_to_speech" );
206+ TextToSpeech service = new TextToSpeech (authConfig );
204207 configUrl (service , ttsConfig );
205- configAuth (service , ttsConfig );
206208 return service ;
207209 }
208210
@@ -215,9 +217,9 @@ public TextToSpeech textToSpeech() {
215217 @ ConditionalOnMissingBean
216218 @ ConditionalOnWatsonServiceProperties (prefix = WatsonToneAnalyzerConfigurationProperties .PREFIX )
217219 public ToneAnalyzer toneAnalyzer () {
218- ToneAnalyzer service = new ToneAnalyzer (taConfig .getVersionDate ());
220+ Authenticator authConfig = configAuth (taConfig , "tone_analyzer" );
221+ ToneAnalyzer service = new ToneAnalyzer (taConfig .getVersionDate (), authConfig );
219222 configUrl (service , taConfig );
220- configAuth (service , taConfig );
221223 return service ;
222224 }
223225
@@ -230,9 +232,9 @@ public ToneAnalyzer toneAnalyzer() {
230232 @ ConditionalOnMissingBean
231233 @ ConditionalOnWatsonServiceProperties (prefix = WatsonVisualRecognitionConfigurationProperties .PREFIX )
232234 public VisualRecognition visualRecognition () {
233- VisualRecognition service = new VisualRecognition (vrConfig .getVersionDate ());
235+ Authenticator authConfig = configAuth (vrConfig , "visual_recognition" );
236+ VisualRecognition service = new VisualRecognition (vrConfig .getVersionDate (), authConfig );
234237 configUrl (service , vrConfig );
235- configAuth (service , vrConfig );
236238 return service ;
237239 }
238240
0 commit comments