diff --git a/src/main/java/cz/cvut/kbss/termit/dto/TextAnalysisInput.java b/src/main/java/cz/cvut/kbss/termit/dto/TextAnalysisInput.java
index 72537cad0..e0e8cf7c1 100644
--- a/src/main/java/cz/cvut/kbss/termit/dto/TextAnalysisInput.java
+++ b/src/main/java/cz/cvut/kbss/termit/dto/TextAnalysisInput.java
@@ -44,6 +44,16 @@ public class TextAnalysisInput {
*/
private URI vocabularyRepository;
+ /**
+ * Username to access the repository
+ */
+ private String vocabularyRepositoryUserName;
+
+ /**
+ * Password to access the repository
+ */
+ private String vocabularyRepositoryPassword;
+
/**
* URIs of contexts containing vocabularies whose terms are used in the text analysis. Optional.
*
@@ -84,6 +94,22 @@ public void setVocabularyRepository(URI vocabularyRepository) {
this.vocabularyRepository = vocabularyRepository;
}
+ public String getVocabularyRepositoryUserName() {
+ return vocabularyRepositoryUserName;
+ }
+
+ public void setVocabularyRepositoryUserName(String vocabularyRepositoryUserName) {
+ this.vocabularyRepositoryUserName = vocabularyRepositoryUserName;
+ }
+
+ public String getVocabularyRepositoryPassword() {
+ return vocabularyRepositoryPassword;
+ }
+
+ public void setVocabularyRepositoryPassword(String vocabularyRepositoryPassword) {
+ this.vocabularyRepositoryPassword = vocabularyRepositoryPassword;
+ }
+
public Set getVocabularyContexts() {
return vocabularyContexts;
}
diff --git a/src/main/java/cz/cvut/kbss/termit/service/document/TextAnalysisService.java b/src/main/java/cz/cvut/kbss/termit/service/document/TextAnalysisService.java
index f68db9bb7..c5f81ba36 100644
--- a/src/main/java/cz/cvut/kbss/termit/service/document/TextAnalysisService.java
+++ b/src/main/java/cz/cvut/kbss/termit/service/document/TextAnalysisService.java
@@ -93,6 +93,8 @@ private TextAnalysisInput createAnalysisInput(File file) {
);
input.setVocabularyRepository(repositoryUrl);
input.setLanguage(config.getPersistence().getLanguage());
+ input.setVocabularyRepositoryUserName(config.getRepository().getUsername());
+ input.setVocabularyRepositoryPassword(config.getRepository().getPassword());
return input;
}
@@ -169,6 +171,8 @@ public void analyzeTermDefinition(AbstractTerm term, URI vocabularyContext) {
final TextAnalysisInput input = new TextAnalysisInput(term.getDefinition().get(language), language,
URI.create(config.getRepository().getUrl()));
input.addVocabularyContext(vocabularyContext);
+ input.setVocabularyRepositoryUserName(config.getRepository().getUsername());
+ input.setVocabularyRepositoryPassword(config.getRepository().getPassword());
invokeTextAnalysisOnTerm(term, input);
}
diff --git a/src/test/java/cz/cvut/kbss/termit/service/document/TextAnalysisServiceTest.java b/src/test/java/cz/cvut/kbss/termit/service/document/TextAnalysisServiceTest.java
index 3327c4dab..4f56a27ba 100644
--- a/src/test/java/cz/cvut/kbss/termit/service/document/TextAnalysisServiceTest.java
+++ b/src/test/java/cz/cvut/kbss/termit/service/document/TextAnalysisServiceTest.java
@@ -167,6 +167,8 @@ private TextAnalysisInput textAnalysisInput() {
);
input.setVocabularyRepository(repositoryUrl);
input.setLanguage(config.getPersistence().getLanguage());
+ input.setVocabularyRepositoryUserName(config.getRepository().getUsername());
+ input.setVocabularyRepositoryPassword(config.getRepository().getPassword());
return input;
}
@@ -183,6 +185,23 @@ void analyzeFilePassesContentTypeAndAcceptHeadersToService() throws Exception {
mockServer.verify();
}
+ @Test
+ void analyzeFilePassesRepositoryUsernameAndPasswordToServiceWhenProvided() throws Exception {
+ final String username = "user";
+ config.getRepository().setUsername(username);
+ final String password = "password";
+ config.getRepository().setPassword(password);
+ final TextAnalysisInput input = textAnalysisInput();
+ input.setVocabularyRepositoryUserName(username);
+ input.setVocabularyRepositoryPassword(password);
+ mockServer.expect(requestTo(config.getTextAnalysis().getUrl()))
+ .andExpect(method(HttpMethod.POST))
+ .andExpect(content().string(objectMapper.writeValueAsString(input)))
+ .andRespond(withSuccess(CONTENT, MediaType.APPLICATION_XML));
+ sut.analyzeFile(file, Collections.singleton(vocabulary.getUri()));
+ mockServer.verify();
+ }
+
@Test
void analyzeFileThrowsWebServiceIntegrationExceptionOnError() throws Exception {
final TextAnalysisInput input = textAnalysisInput();
@@ -353,4 +372,26 @@ void analyzeTermDefinitionDoesNothingWhenTextAnalysisServiceUrlIsNotConfigured()
verify(annotationGeneratorMock, never()).generateAnnotations(any(), any(Term.class));
verify(textAnalysisRecordDao, never()).persist(any());
}
+
+ @Test
+ void analyzeTermDefinitionInvokesTextAnalysisServiceWithVocabularyRepositoryUsernameAndPassword()
+ throws Exception {
+ final Term term = Generator.generateTermWithId();
+ term.setVocabulary(vocabulary.getUri());
+ final TextAnalysisInput input = textAnalysisInput();
+ input.setContent(term.getDefinition().get(Environment.LANGUAGE));
+ final String username = "user";
+ config.getRepository().setUsername(username);
+ final String password = "password";
+ config.getRepository().setPassword(password);
+ input.setVocabularyRepositoryUserName(username);
+ input.setVocabularyRepositoryPassword(password);
+ mockServer.expect(requestTo(config.getTextAnalysis().getUrl()))
+ .andExpect(method(HttpMethod.POST))
+ .andExpect(content().string(objectMapper.writeValueAsString(input)))
+ .andRespond(withSuccess(CONTENT, MediaType.APPLICATION_XML));
+
+ sut.analyzeTermDefinition(term, vocabulary.getUri());
+ mockServer.verify();
+ }
}