Skip to content

Commit 0e0502a

Browse files
authored
Merge pull request #11 from tnixa/master
Support for Watson SDK v7.0.0
2 parents 5817b88 + f6add13 commit 0e0502a

18 files changed

+244
-255
lines changed

build.gradle

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ targetCompatibility = 1.8
8282

8383
repositories {
8484
mavenCentral()
85+
maven { url 'http://repo.spring.io/libs-release' }
86+
maven { url 'https://dl.bintray.com/ibm-cloud-sdks/ibm-cloud-sdk-repo' }
87+
8588
}
8689

8790
processResources {
@@ -93,7 +96,7 @@ processResources {
9396

9497
dependencies {
9598
// Watson Java SDK
96-
compile group: 'com.ibm.watson.developer_cloud', name: 'java-sdk', version: watsonVersion
99+
compile group: 'com.ibm.watson', name: 'ibm-watson', version: watsonVersion
97100

98101
// Spring
99102
compile group: 'org.springframework', name: 'spring-core', version: springVersion

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
version=0.3.0
22
group = com.ibm.watson.developer_cloud
3-
watsonVersion = 6.1.0
3+
watsonVersion = 7.0.0
44
springVersion = 4.3.12.RELEASE
55
springBootVersion = 1.5.9.RELEASE

src/main/java/com/ibm/watson/developer_cloud/spring/boot/WatsonAutoConfiguration.java

Lines changed: 28 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,19 @@
1414

1515
package com.ibm.watson.developer_cloud.spring.boot;
1616

17-
import com.ibm.watson.developer_cloud.assistant.v1.Assistant;
18-
import com.ibm.watson.developer_cloud.conversation.v1.Conversation;
19-
import com.ibm.watson.developer_cloud.discovery.v1.Discovery;
20-
import com.ibm.watson.developer_cloud.language_translator.v3.LanguageTranslator;
21-
import com.ibm.watson.developer_cloud.natural_language_classifier.v1.NaturalLanguageClassifier;
22-
import com.ibm.watson.developer_cloud.natural_language_understanding.v1.NaturalLanguageUnderstanding;
23-
import com.ibm.watson.developer_cloud.personality_insights.v3.PersonalityInsights;
24-
import com.ibm.watson.developer_cloud.service.WatsonService;
25-
import com.ibm.watson.developer_cloud.service.security.IamOptions;
26-
import com.ibm.watson.developer_cloud.speech_to_text.v1.SpeechToText;
27-
import com.ibm.watson.developer_cloud.text_to_speech.v1.TextToSpeech;
28-
import com.ibm.watson.developer_cloud.tone_analyzer.v3.ToneAnalyzer;
29-
import com.ibm.watson.developer_cloud.visual_recognition.v3.VisualRecognition;
17+
import com.ibm.cloud.sdk.core.service.BaseService;
18+
import com.ibm.cloud.sdk.core.service.security.IamOptions;
19+
import com.ibm.watson.assistant.v1.Assistant;
20+
import com.ibm.watson.compare_comply.v1.CompareComply;
21+
import com.ibm.watson.discovery.v1.Discovery;
22+
import com.ibm.watson.language_translator.v3.LanguageTranslator;
23+
import com.ibm.watson.natural_language_classifier.v1.NaturalLanguageClassifier;
24+
import com.ibm.watson.natural_language_understanding.v1.NaturalLanguageUnderstanding;
25+
import com.ibm.watson.personality_insights.v3.PersonalityInsights;
26+
import com.ibm.watson.speech_to_text.v1.SpeechToText;
27+
import com.ibm.watson.text_to_speech.v1.TextToSpeech;
28+
import com.ibm.watson.tone_analyzer.v3.ToneAnalyzer;
29+
import com.ibm.watson.visual_recognition.v3.VisualRecognition;
3030

3131
import org.springframework.beans.factory.annotation.Autowired;
3232
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -35,29 +35,23 @@
3535
import org.springframework.context.annotation.Configuration;
3636

3737
@Configuration
38-
@EnableConfigurationProperties({
39-
WatsonAssistantConfigurationProperties.class,
40-
WatsonConversationConfigurationProperties.class,
41-
WatsonDiscoveryConfigurationProperties.class,
42-
WatsonLanguageTranslatorConfigurationProperties.class,
43-
WatsonNaturalLanguageClassifierConfigurationProperties.class,
38+
@EnableConfigurationProperties({ WatsonAssistantConfigurationProperties.class,
39+
WatsonCompareComplyConfigurationProperties.class, WatsonDiscoveryConfigurationProperties.class,
40+
WatsonLanguageTranslatorConfigurationProperties.class, WatsonNaturalLanguageClassifierConfigurationProperties.class,
4441
WatsonNaturalLanguageUnderstandingConfigurationProperties.class,
45-
WatsonPersonalityInsightsConfigurationProperties.class,
46-
WatsonSpeechToTextConfigurationProperties.class,
47-
WatsonTextToSpeechConfigurationProperties.class,
48-
WatsonToneAnalyzerConfigurationProperties.class,
49-
WatsonVisualRecognitionConfigurationProperties.class
50-
})
42+
WatsonPersonalityInsightsConfigurationProperties.class, WatsonSpeechToTextConfigurationProperties.class,
43+
WatsonTextToSpeechConfigurationProperties.class, WatsonToneAnalyzerConfigurationProperties.class,
44+
WatsonVisualRecognitionConfigurationProperties.class })
5145
public class WatsonAutoConfiguration {
5246

53-
private void configUrl(WatsonService service, WatsonConfigurationProperties config) {
47+
private void configUrl(BaseService service, WatsonConfigurationProperties config) {
5448
String url = config.getUrl();
5549
if (url != null) {
5650
service.setEndPoint(url);
5751
}
5852
}
5953

60-
private void configAuth(WatsonService service, WatsonConfigurationProperties config) {
54+
private void configAuth(BaseService service, WatsonConfigurationProperties config) {
6155
String iamApiKey = config.getIamApiKey();
6256
if (iamApiKey != null) {
6357
IamOptions options = new IamOptions.Builder().apiKey(iamApiKey).build();
@@ -92,18 +86,18 @@ public Assistant assistant() {
9286
return service;
9387
}
9488

95-
// Watson Conversation service
89+
// Watson Compare and Comply
9690

9791
@Autowired
98-
private WatsonConversationConfigurationProperties conversationConfig;
92+
private WatsonCompareComplyConfigurationProperties compareComplyConfig;
9993

10094
@Bean
10195
@ConditionalOnMissingBean
102-
@ConditionalOnWatsonServiceProperties(prefix = WatsonConversationConfigurationProperties.PREFIX)
103-
public Conversation conversation() {
104-
Conversation service = new Conversation(conversationConfig.getVersionDate());
105-
configUrl(service, conversationConfig);
106-
configAuth(service, conversationConfig);
96+
@ConditionalOnWatsonServiceProperties(prefix = WatsonCompareComplyConfigurationProperties.PREFIX)
97+
public CompareComply compareComply() {
98+
CompareComply service = new CompareComply(compareComplyConfig.getVersionDate());
99+
configUrl(service, compareComplyConfig);
100+
configAuth(service, compareComplyConfig);
107101
return service;
108102
}
109103

src/main/java/com/ibm/watson/developer_cloud/spring/boot/WatsonConversationConfigurationProperties.java renamed to src/main/java/com/ibm/watson/developer_cloud/spring/boot/WatsonCompareComplyConfigurationProperties.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
import org.springframework.boot.context.properties.ConfigurationProperties;
1818

19-
@ConfigurationProperties(prefix = WatsonConversationConfigurationProperties.PREFIX)
20-
public class WatsonConversationConfigurationProperties extends WatsonConfigurationProperties {
19+
@ConfigurationProperties(prefix = WatsonCompareComplyConfigurationProperties.PREFIX)
20+
public class WatsonCompareComplyConfigurationProperties extends WatsonConfigurationProperties {
2121

22-
public static final String PREFIX = "watson.conversation";
22+
public static final String PREFIX = "watson.compare-comply";
2323
}

src/test/java/com/ibm/watson/developer_cloud/spring/boot/test/AssistantAutoConfigTest.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515
package com.ibm.watson.developer_cloud.spring.boot.test;
1616

17-
import com.ibm.watson.developer_cloud.assistant.v1.Assistant;
18-
import com.ibm.watson.developer_cloud.service.WatsonService;
17+
import com.ibm.cloud.sdk.core.service.BaseService;
18+
import com.ibm.watson.assistant.v1.Assistant;
1919
import com.ibm.watson.developer_cloud.spring.boot.WatsonAutoConfiguration;
2020
import okhttp3.Credentials;
2121
import org.junit.Test;
@@ -33,13 +33,11 @@
3333
import static org.junit.Assert.assertNotNull;
3434

3535
@RunWith(SpringJUnit4ClassRunner.class)
36-
@ContextConfiguration(classes = {WatsonAutoConfiguration.class}, loader = AnnotationConfigContextLoader.class)
37-
@TestPropertySource(properties = {
38-
"watson.assistant.url=" + AssistantAutoConfigTest.url,
39-
"watson.assistant.username=" + AssistantAutoConfigTest.username,
40-
"watson.assistant.password=" + AssistantAutoConfigTest.password,
41-
"watson.assistant.versionDate=" + AssistantAutoConfigTest.versionDate
42-
})
36+
@ContextConfiguration(classes = { WatsonAutoConfiguration.class }, loader = AnnotationConfigContextLoader.class)
37+
@TestPropertySource(properties = { "watson.assistant.url=" + AssistantAutoConfigTest.url,
38+
"watson.assistant.username=" + AssistantAutoConfigTest.username,
39+
"watson.assistant.password=" + AssistantAutoConfigTest.password,
40+
"watson.assistant.versionDate=" + AssistantAutoConfigTest.versionDate })
4341
public class AssistantAutoConfigTest {
4442

4543
static final String url = "http://watson.com/assistant";
@@ -57,9 +55,10 @@ public void assistantBeanConfig() {
5755
assertNotNull(assistant);
5856
assertEquals(url, assistant.getEndPoint());
5957

60-
// Verify the credentials and versionDate -- which are stored in private member variables
58+
// Verify the credentials and versionDate -- which are stored in private member
59+
// variables
6160
try {
62-
Field apiKeyField = WatsonService.class.getDeclaredField("apiKey");
61+
Field apiKeyField = BaseService.class.getDeclaredField("apiKey");
6362
apiKeyField.setAccessible(true);
6463
assertEquals(Credentials.basic(username, password), apiKeyField.get(assistant));
6564

src/test/java/com/ibm/watson/developer_cloud/spring/boot/test/AssistantIamAuthTest.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414

1515
package com.ibm.watson.developer_cloud.spring.boot.test;
1616

17-
import com.ibm.watson.developer_cloud.assistant.v1.Assistant;
18-
import com.ibm.watson.developer_cloud.service.WatsonService;
19-
import com.ibm.watson.developer_cloud.service.security.IamTokenManager;
17+
import com.ibm.cloud.sdk.core.service.BaseService;
18+
import com.ibm.watson.assistant.v1.Assistant;
19+
import com.ibm.cloud.sdk.core.service.security.IamTokenManager;
2020
import com.ibm.watson.developer_cloud.spring.boot.WatsonAutoConfiguration;
2121
import org.junit.Test;
2222
import org.junit.runner.RunWith;
@@ -33,12 +33,10 @@
3333
import static org.junit.Assert.assertNotNull;
3434

3535
@RunWith(SpringJUnit4ClassRunner.class)
36-
@ContextConfiguration(classes = {WatsonAutoConfiguration.class}, loader = AnnotationConfigContextLoader.class)
37-
@TestPropertySource(properties = {
38-
"watson.assistant.url=" + AssistantIamAuthTest.url,
36+
@ContextConfiguration(classes = { WatsonAutoConfiguration.class }, loader = AnnotationConfigContextLoader.class)
37+
@TestPropertySource(properties = { "watson.assistant.url=" + AssistantIamAuthTest.url,
3938
"watson.assistant.iamApiKey=" + AssistantIamAuthTest.iamApiKey,
40-
"watson.assistant.versionDate=" + AssistantIamAuthTest.versionDate
41-
})
39+
"watson.assistant.versionDate=" + AssistantIamAuthTest.versionDate })
4240
public class AssistantIamAuthTest {
4341

4442
static final String url = "http://watson.com/assistant";
@@ -55,9 +53,10 @@ public void assistantBeanConfig() {
5553
assertNotNull(assistant);
5654
assertEquals(url, assistant.getEndPoint());
5755

58-
// Verify the credentials and versionDate -- which are stored in private member variables
56+
// Verify the credentials and versionDate -- which are stored in private member
57+
// variables
5958
try {
60-
Field iamTokenManagerField = WatsonService.class.getDeclaredField("tokenManager");
59+
Field iamTokenManagerField = BaseService.class.getDeclaredField("tokenManager");
6160
iamTokenManagerField.setAccessible(true);
6261
IamTokenManager tokenManager = (IamTokenManager) iamTokenManagerField.get(assistant);
6362
Field iamApiKeyField = IamTokenManager.class.getDeclaredField("apiKey");
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/*
2+
* Copyright © 2017 IBM Corp. All rights reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5+
* except in compliance with the License. You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software distributed under the
10+
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
11+
* either express or implied. See the License for the specific language governing permissions
12+
* and limitations under the License.
13+
*/
14+
15+
package com.ibm.watson.developer_cloud.spring.boot.test;
16+
17+
import com.ibm.watson.compare_comply.v1.CompareComply;
18+
import com.ibm.cloud.sdk.core.service.BaseService;
19+
import com.ibm.watson.developer_cloud.spring.boot.WatsonAutoConfiguration;
20+
import okhttp3.Credentials;
21+
import org.junit.Test;
22+
import org.junit.runner.RunWith;
23+
import org.springframework.beans.factory.annotation.Autowired;
24+
import org.springframework.context.ApplicationContext;
25+
import org.springframework.test.context.ContextConfiguration;
26+
import org.springframework.test.context.TestPropertySource;
27+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
28+
import org.springframework.test.context.support.AnnotationConfigContextLoader;
29+
30+
import java.lang.reflect.Field;
31+
32+
import static org.junit.Assert.assertEquals;
33+
import static org.junit.Assert.assertNotNull;
34+
35+
@RunWith(SpringJUnit4ClassRunner.class)
36+
@ContextConfiguration(classes = { WatsonAutoConfiguration.class }, loader = AnnotationConfigContextLoader.class)
37+
@TestPropertySource(properties = { "watson.compare-comply.url=" + CompareComplyAutoConfigTest.url,
38+
"watson.compare-comply.username=" + CompareComplyAutoConfigTest.username,
39+
"watson.compare-comply.password=" + CompareComplyAutoConfigTest.password,
40+
"watson.compare-comply.versionDate=" + CompareComplyAutoConfigTest.versionDate })
41+
public class CompareComplyAutoConfigTest {
42+
43+
static final String url = "http://watson.com/compare-comply";
44+
static final String username = "sam";
45+
static final String password = "secret";
46+
static final String versionDate = "2017-12-15";
47+
48+
@Autowired
49+
private ApplicationContext applicationContext;
50+
51+
@Test
52+
public void compareComplyBeanConfig() {
53+
CompareComply compareComply = (CompareComply) applicationContext.getBean("compareComply");
54+
55+
assertNotNull(compareComply);
56+
assertEquals(url, compareComply.getEndPoint());
57+
58+
// Verify the credentials and versionDate -- which are stored in private member
59+
// variables
60+
try {
61+
Field apiKeyField = BaseService.class.getDeclaredField("apiKey");
62+
apiKeyField.setAccessible(true);
63+
assertEquals(Credentials.basic(username, password), apiKeyField.get(compareComply));
64+
65+
Field versionField = CompareComply.class.getDeclaredField("versionDate");
66+
versionField.setAccessible(true);
67+
assertEquals(versionDate, versionField.get(compareComply));
68+
} catch (NoSuchFieldException | IllegalAccessException ex) {
69+
// This shouldn't happen
70+
assert false;
71+
}
72+
}
73+
}

src/test/java/com/ibm/watson/developer_cloud/spring/boot/test/ConversationAutoConfigTest.java

Lines changed: 0 additions & 74 deletions
This file was deleted.

0 commit comments

Comments
 (0)