From 45e3ddca46619a9bbeed89e3f133973e755328ca Mon Sep 17 00:00:00 2001 From: Martin Ledvinka Date: Tue, 16 Jul 2024 16:08:19 +0200 Subject: [PATCH] [Enhancement #270] Pass repository username and password to annotace. --- .../kbss/termit/dto/TextAnalysisInput.java | 26 ++++++++++++ .../service/document/TextAnalysisService.java | 4 ++ .../document/TextAnalysisServiceTest.java | 41 +++++++++++++++++++ 3 files changed, 71 insertions(+) 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(); + } }