From 2a1d842417bb46eb7ff67cf9ddf998d3dfc835d1 Mon Sep 17 00:00:00 2001 From: "Stefan E. Funk" <funk@sub.uni-goettingen.de> Date: Tue, 27 Sep 2022 14:30:47 +0200 Subject: [PATCH] fix: add singleton tgcrud client --- .../info/textgrid/middleware/IDIOMImages.java | 14 ++++++---- .../textgrid/middleware/OAIPMHUtilities.java | 6 +++- .../test/online/OAIPMHUtilitiesOnline.java | 13 ++++----- .../online/tg/TestTGListRecordsOnline.java | 28 +++++++++++-------- 4 files changed, 35 insertions(+), 26 deletions(-) diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java index 78018c03..0253ea54 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java @@ -40,7 +40,7 @@ import info.textgrid.middleware.oaipmh.ResumptionTokenType; /** * */ -// FIXME Why do we have to implement three classes?? +// TODO Why do we have to implement three classes?? public class IDIOMImages implements RecordDelivererInterface, RecordListDelivererInterface, IdentifierListDelivererInterface { @@ -56,6 +56,8 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere private static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>(); private static Map<String, String> fromUntilCollector = new Hashtable<String, String>(); + private static CrudClient tgCrudClient; + /** * */ @@ -203,11 +205,13 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere log.fine("tgcrud rbac sid: " + OAIPMHUtilities.hideSID(this.idiomRbacSessionID)); try { - - // Get TG-crud client. - CrudClient cc = new CrudClient(this.idiomTgcrudEndpoint).enableGzipCompression(); + // Get TG-crud client (if not yet existing) + // TODO If tgcrud client has got a fix endpoint, could it be created elsewhere?? + if (tgCrudClient == null) { + tgCrudClient = new CrudClient(this.idiomTgcrudEndpoint).enableGzipCompression(); + } TextGridObject tgo = - cc.read().setTextgridUri(changedID).setSid(this.idiomRbacSessionID).execute(); + tgCrudClient.read().setTextgridUri(changedID).setSid(this.idiomRbacSessionID).execute(); // Get image object. immByTGObject = new ImageMetsMods(tgo); diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java index aea29bc2..6647c3ef 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java @@ -49,7 +49,7 @@ import info.textgrid.namespaces.middleware.tgauth.ProjectInfo; * * @author Maximilian Brodhun, SUB Göttingen * @author Stefan E. Funk, SUB Göttingen - * @version 2022-07-07 + * @version 2022-09-27 * @since 2014-01-29 */ public class OAIPMHUtilities { @@ -236,12 +236,16 @@ public class OAIPMHUtilities { */ public static String datestampAsString(String originalDateTimeString) throws ParseException { + log.fine("incoming date: " + originalDateTimeString); + SimpleDateFormat tgItemTime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S"); Date date = tgItemTime.parse(originalDateTimeString); SimpleDateFormat outFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); outFormatter.setTimeZone(TimeZone.getTimeZone("UTC")); String dateOutputAsString = outFormatter.format(date); + log.fine("outgoing date: " + dateOutputAsString); + return dateOutputAsString; } diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java index 4df1c699..97f65bbc 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java @@ -347,14 +347,9 @@ public class OAIPMHUtilitiesOnline { // Test resumption token tags. responseString = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - System.out.println(" ## RESPONSE" + responseString); - restok = examineTGResumptionTokenTag(responseString, testOccurance, restok, recordsExpectedPerRequest, loopCount, threadName); - System.out.println(" ## restok: " + restok); - // Test if the header identifiers are sound. if (theVerb.equals(VERB_LIST_RECORDS)) { examineTGHeader(responseString, recordsExpectedPerRequest); @@ -368,6 +363,8 @@ public class OAIPMHUtilitiesOnline { } } + System.out.println(" ## RESPONSE NOTOK" + responseString); + // Only check for max loops, if we do have less loops and no resumption token, it will be fine, // too! if (!restok.equals(NO_TOKEN) && loopCount < maxNumberOfPagesToTest) { @@ -497,7 +494,7 @@ public class OAIPMHUtilitiesOnline { && !theResponseString.contains("metadataPrefix=\"" + OAI_DC_PREFIX + "\"") && !theResponseString.contains(EXPECTED_OAIDC_FORMAT_CONTENT)) { - System.out.println(theResponseString); + System.out.println("\tRESPONSE: " + theResponseString); String message = OAI_DC_PREFIX + " needs to deliver content with schema: " + EXPECTED_OAIDC_FORMAT_CONTENT + "!"; @@ -508,7 +505,7 @@ public class OAIPMHUtilitiesOnline { .contains("metadataPrefix=\"" + EXPECTED_IDIOMMETS_FORMAT_CONTENT + "\"") && !theResponseString.contains(EXPECTED_IDIOMMETS_FORMAT_CONTENT)) { - System.out.println(theResponseString); + System.out.println("\tRESPONSE: " + theResponseString); String message = OAI_IDIOMMETS_PREFIX + " needs to deliver content with schema: " + EXPECTED_IDIOMMETS_FORMAT_CONTENT + "!"; @@ -518,7 +515,7 @@ public class OAIPMHUtilitiesOnline { && !theResponseString.contains("metadataPrefix=\"" + OAI_DATACITE_PREFIX + "\"") && !theResponseString.contains(EXPECTED_DATACITE_FORMAT_CONTENT)) { - System.out.println(theResponseString); + System.out.println("\tRESPONSE: " + theResponseString); String message = OAI_DATACITE_PREFIX + " needs to deliver content with schema: " + EXPECTED_DATACITE_FORMAT_CONTENT + "!"; diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java index 7a88be98..5fadffbf 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java @@ -24,7 +24,7 @@ import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline; * @version 2022-09-26 * @since 2022-09-12 */ -@Ignore +// @Ignore public class TestTGListRecordsOnline { // ** @@ -149,22 +149,26 @@ public class TestTGListRecordsOnline { * @throws IOException */ @Test - @Ignore public void testListRecordsOAIDCAllPages() throws IOException { System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsOAIDCAllPages()"); - OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, - OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - 0, 100, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, - OAIPMHUtilitiesOnline.NO_FROM, - OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); + if (OAIPMHUtilitiesOnline.TEST_ALL_PAGES) { - System.out.println(OAIPMHUtilitiesOnline.OK); + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_DC_PREFIX, + 0, 100, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + OAIPMHUtilitiesOnline.NO_FROM, + OAIPMHUtilitiesOnline.NO_UNTIL, + OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); + + System.out.println(OAIPMHUtilitiesOnline.OK); + } else { + System.out.println("...skipping"); + } } /** -- GitLab