From 8435814f6a7d05f19dcef023d15d015338062ed2 Mon Sep 17 00:00:00 2001 From: Thomas Scheffler Date: Fri, 25 Sep 2026 14:23:41 +0200 Subject: [PATCH] MCR-3585 update Java dependencies to latest versions Minor/patch updates: AWS SDK 2.55.5, Jackson 2.22.3, JUnit 6.1.3, Log4j 2.26.1, Mockito 5.24.0, Guava 33.7.1, Bouncy Castle 1.86, H2 2.5.250, iText 9.7.1, PDFBox 3.0.8, Selenium 4.49.0, Swagger 2.2.55, Neo4j driver 6.3.0, Netty 4.1.138 and others. Major updates: Saxon-HE 13.0, rdf4j 6.1.0, hk2 4.0.2, ICU4J 78.3, Rhino 1.9.1, vis-network 10.0.3, Hibernate ORM 7.4.10. Required adjustments: - Guava: use Duration overloads of refreshAfterWrite/expireAfterWrite - Bouncy Castle: use BCrypt.generate(..., false), password is already null-terminated - ICU4J: drop now redundant Calendar casts after clone(); Meiji era starts on 23.10.1868 (CLDR 48) - Saxon: vendor URL is now https://www.saxonica.com/ mets-model stays at 2.0: 2.1 fails on METS documents without metsHdr. --- .../metadata/MCRMetaHistoryDate.java | 8 +- .../mycore/frontend/MCRLayoutUtilities.java | 4 +- .../org/mycore/common/MCRCalendarTest.java | 8 +- .../uriresolver/MCRURIResolverFlavorTest.java | 4 +- .../uriresolver/MCRURIResolverSaxonTest.java | 2 +- .../iview2/frontend/MCRThumbnailServlet.java | 4 +- .../components/neo4j/config/mycore.properties | 2 +- .../hash/bouncycastle/MCRBCryptStrategy.java | 2 +- pom.xml | 114 +++++++++--------- 9 files changed, 74 insertions(+), 74 deletions(-) diff --git a/mycore-base/src/main/java/org/mycore/datamodel/metadata/MCRMetaHistoryDate.java b/mycore-base/src/main/java/org/mycore/datamodel/metadata/MCRMetaHistoryDate.java index b0e00e07b2..07fff206bd 100644 --- a/mycore-base/src/main/java/org/mycore/datamodel/metadata/MCRMetaHistoryDate.java +++ b/mycore-base/src/main/java/org/mycore/datamodel/metadata/MCRMetaHistoryDate.java @@ -469,8 +469,8 @@ public void validate() throws MCRException { throw new MCRException(getSubTag() + ": von,bis or calendar are null"); } if (ibis < ivon) { - Calendar swp = (Calendar) von.clone(); - setVonDate((Calendar) bis.clone()); + Calendar swp = von.clone(); + setVonDate(bis.clone()); setBisDate(swp); } } @@ -482,8 +482,8 @@ public MCRMetaHistoryDate clone() { clone.texts = this.texts.stream().map(MCRMetaHistoryDateText::clone) .collect(Collectors.toCollection(ArrayList::new)); - clone.bis = (Calendar) this.bis.clone(); - clone.von = (Calendar) this.von.clone(); + clone.bis = this.bis.clone(); + clone.von = this.von.clone(); clone.ibis = this.ibis; clone.ivon = this.ivon; clone.calendar = this.calendar; diff --git a/mycore-base/src/main/java/org/mycore/frontend/MCRLayoutUtilities.java b/mycore-base/src/main/java/org/mycore/frontend/MCRLayoutUtilities.java index 838de3e501..946f7d45d8 100644 --- a/mycore-base/src/main/java/org/mycore/frontend/MCRLayoutUtilities.java +++ b/mycore-base/src/main/java/org/mycore/frontend/MCRLayoutUtilities.java @@ -28,6 +28,7 @@ import java.net.URLConnection; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.time.Duration; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -35,7 +36,6 @@ import java.util.Objects; import java.util.concurrent.Executor; import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; @@ -112,7 +112,7 @@ public class MCRLayoutUtilities { private static Map itemStore = new HashMap<>(); private static final LoadingCache NAV_DOCUMENT_CACHE = CacheBuilder.newBuilder() - .refreshAfterWrite(STANDARD_CACHE_SECONDS, TimeUnit.SECONDS).build(new CacheLoader<>() { + .refreshAfterWrite(Duration.ofSeconds(STANDARD_CACHE_SECONDS)).build(new CacheLoader<>() { Executor executor = Executors.newSingleThreadExecutor(r -> new Thread(r, "navigation.xml refresh")); diff --git a/mycore-base/src/test/java/org/mycore/common/MCRCalendarTest.java b/mycore-base/src/test/java/org/mycore/common/MCRCalendarTest.java index e9236c1d6e..9f14a108d7 100644 --- a/mycore-base/src/test/java/org/mycore/common/MCRCalendarTest.java +++ b/mycore-base/src/test/java/org/mycore/common/MCRCalendarTest.java @@ -677,12 +677,12 @@ public void testParseEgyptianDate() { public void testParseJapaneseDate() { Calendar cal; - // Meiji era: 8.9.1868 - 29.07.1912 - cal = MCRCalendar.getHistoryDateAsCalendar("8.9.M1", true, MCRCalendar.TAG_JAPANESE); - assertCalEqualWithActual(cal, 8, JapaneseCalendar.SEPTEMBER, 1, JapaneseCalendar.MEIJI); + // Meiji era: 23.10.1868 - 29.07.1912 + cal = MCRCalendar.getHistoryDateAsCalendar("23.10.M1", true, MCRCalendar.TAG_JAPANESE); + assertCalEqualWithActual(cal, 23, JapaneseCalendar.OCTOBER, 1, JapaneseCalendar.MEIJI); assertEquals(MCRCalendar.getJulianDayNumber(cal), MCRCalendar.getJulianDayNumber( - MCRCalendar.getHistoryDateAsCalendar("8.9.1868", false, MCRCalendar.TAG_GREGORIAN))); + MCRCalendar.getHistoryDateAsCalendar("23.10.1868", false, MCRCalendar.TAG_GREGORIAN))); cal = MCRCalendar.getHistoryDateAsCalendar("29.7.M45", true, MCRCalendar.TAG_JAPANESE); assertCalEqualWithActual(cal, 29, JapaneseCalendar.JULY, 45, JapaneseCalendar.MEIJI); diff --git a/mycore-base/src/test/java/org/mycore/common/xsl/uriresolver/MCRURIResolverFlavorTest.java b/mycore-base/src/test/java/org/mycore/common/xsl/uriresolver/MCRURIResolverFlavorTest.java index 80d14500f3..f03679e1af 100644 --- a/mycore-base/src/test/java/org/mycore/common/xsl/uriresolver/MCRURIResolverFlavorTest.java +++ b/mycore-base/src/test/java/org/mycore/common/xsl/uriresolver/MCRURIResolverFlavorTest.java @@ -41,7 +41,7 @@ public void testSaxonFlavor() { assertEquals("xslt", id); assertEquals("3.0", version); assertEquals("Saxonica", vendor); - assertEquals("http://www.saxonica.com/", vendorUrl); + assertEquals("https://www.saxonica.com/", vendorUrl); } @@ -60,7 +60,7 @@ public void testSaxonFlavorViaParameter() { assertEquals("xslt", id); assertEquals("3.0", version); assertEquals("Saxonica", vendor); - assertEquals("http://www.saxonica.com/", vendorUrl); + assertEquals("https://www.saxonica.com/", vendorUrl); } diff --git a/mycore-base/src/test/java/org/mycore/common/xsl/uriresolver/MCRURIResolverSaxonTest.java b/mycore-base/src/test/java/org/mycore/common/xsl/uriresolver/MCRURIResolverSaxonTest.java index 60c528bfa8..acac6a443d 100644 --- a/mycore-base/src/test/java/org/mycore/common/xsl/uriresolver/MCRURIResolverSaxonTest.java +++ b/mycore-base/src/test/java/org/mycore/common/xsl/uriresolver/MCRURIResolverSaxonTest.java @@ -54,7 +54,7 @@ public void testSaxonAvailability() { assertEquals("xslt-test", id); assertEquals("3.0", version); assertEquals("Saxonica", vendor); - assertEquals("http://www.saxonica.com/", vendorUrl); + assertEquals("https://www.saxonica.com/", vendorUrl); } diff --git a/mycore-iview2/src/main/java/org/mycore/iview2/frontend/MCRThumbnailServlet.java b/mycore-iview2/src/main/java/org/mycore/iview2/frontend/MCRThumbnailServlet.java index f7bde44e1c..b664ce52d3 100644 --- a/mycore-iview2/src/main/java/org/mycore/iview2/frontend/MCRThumbnailServlet.java +++ b/mycore-iview2/src/main/java/org/mycore/iview2/frontend/MCRThumbnailServlet.java @@ -29,12 +29,12 @@ import java.nio.file.Path; import java.nio.file.attribute.BasicFileAttributes; import java.text.MessageFormat; +import java.time.Duration; import java.util.Date; import java.util.Locale; import java.util.Objects; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import javax.imageio.IIOImage; @@ -84,7 +84,7 @@ public class MCRThumbnailServlet extends MCRServlet { private int thumbnailSize = MCRImage.getTileSize(); private static LoadingCache modifiedCache = CacheBuilder.newBuilder().maximumSize(5000) - .expireAfterWrite(MCRTileServlet.MAX_AGE, TimeUnit.SECONDS).weakKeys().build(new CacheLoader<>() { + .expireAfterWrite(Duration.ofSeconds(MCRTileServlet.MAX_AGE)).weakKeys().build(new CacheLoader<>() { @Override public Long load(String id) { ThumnailInfo thumbnailInfo = getThumbnailInfo(id); diff --git a/mycore-neo4j/src/main/resources/components/neo4j/config/mycore.properties b/mycore-neo4j/src/main/resources/components/neo4j/config/mycore.properties index 4d008f972a..cf4026a12e 100644 --- a/mycore-neo4j/src/main/resources/components/neo4j/config/mycore.properties +++ b/mycore-neo4j/src/main/resources/components/neo4j/config/mycore.properties @@ -39,4 +39,4 @@ MCR.Neo4J.Parser.MCRMetaXML.Class=org.mycore.mcr.neo4j.datamodel.metadata.neo4jp # MCR.Neo4J.Parser.MCRMetaXML.mods.Class=org.mycore.mcr.neo4j.datamodel.metadata.neo4jparser.MCRMetaXMLModsParser # MCR.Neo4J.Parser.MCRMetaXML.record.Class=org.mycore.mcr.neo4j.datamodel.metadata.neo4jparser.MCRMetaXMLRecordParser -MCR.Neo4J.VISNetworkJSURL=/webjars/vis-network/9.1.2/dist/vis-network.js +MCR.Neo4J.VISNetworkJSURL=/webjars/vis-network/10.0.3/dist/vis-network.js diff --git a/mycore-user2/src/main/java/org/mycore/user2/hash/bouncycastle/MCRBCryptStrategy.java b/mycore-user2/src/main/java/org/mycore/user2/hash/bouncycastle/MCRBCryptStrategy.java index 36bcdc0969..4d1ea70597 100644 --- a/mycore-user2/src/main/java/org/mycore/user2/hash/bouncycastle/MCRBCryptStrategy.java +++ b/mycore-user2/src/main/java/org/mycore/user2/hash/bouncycastle/MCRBCryptStrategy.java @@ -184,7 +184,7 @@ private Details parseBCryptMCFString(String sting) { private byte[] getHash(int cost, byte[] salt, String password) { byte[] bytes = (password + '\0').getBytes(StandardCharsets.UTF_8); - byte[] fullHash = BCrypt.generate(bytes, salt, cost); + byte[] fullHash = BCrypt.generate(bytes, salt, cost, false); assert fullHash.length == 24; byte[] hash = new byte[23]; diff --git a/pom.xml b/pom.xml index bd24bf003b..aa48ad06ba 100644 --- a/pom.xml +++ b/pom.xml @@ -54,53 +54,53 @@ Applications based on MyCoRe use a common core, which provides the functionality - 2.41.32 + 2.55.5 true ${user.dir}/checkstyle-suppressions.xml 1.12.0 - 5.0.1 + 5.0.2 3.0 - 7.2 + 7.4 ${hibernate.version} - ${hibernate.base.version}.0.Final - 3.1.1 - 5.6.1 - 5.4.1 - 2.21.5 + ${hibernate.base.version}.10.Final + 4.0.2 + 5.6.4 + 5.4.4 + 2.22.3 2.1.4 2.1.5 25 - 4.0.6 + 4.0.9 4.0.2 - 6.0.3 - 2.25.4 + 6.1.3 + 2.26.1 99 -Werror ${java.target.version} ${settings.localRepository}/org/mockito/mockito-core/${mockito.version}/mockito-core-${mockito.version}.jar - 5.21.0 - 6.0.3 + 5.24.0 + 6.3.0 true CLASS_FILE_API_FIRST - 4.1.136.Final + 4.1.138.Final v20.19.0 3.0 2.2.3 true true 7.16.0 - 5.2.2 - 4.40.0 + 6.1.0 + 4.49.0 10.0.0 - 2.2.43 + 2.2.55 false 1.30.2 - 9.1.2 + 10.0.3 2.7.3 1.1.1 --mutex network - 3.9.5 + 3.9.6 @@ -775,12 +775,12 @@ Applications based on MyCoRe use a common core, which provides the functionality at.yawk.lz4 lz4-java - 1.11.1 + 1.11.3 com.auth0 java-jwt - 4.5.1 + 4.6.1 com.bucket4j @@ -800,17 +800,17 @@ Applications based on MyCoRe use a common core, which provides the functionality com.google.code.gson gson - 2.13.2 + 2.14.0 com.google.guava guava - 33.5.0-jre + 33.7.1-jre com.google.protobuf protobuf-java - 4.33.5 + 4.36.2 com.google.zxing @@ -820,12 +820,12 @@ Applications based on MyCoRe use a common core, which provides the functionality com.ibm.icu icu4j - 77.1 + 78.3 com.itextpdf html2pdf - 6.3.1 + 6.3.3 org.bouncycastle @@ -840,7 +840,7 @@ Applications based on MyCoRe use a common core, which provides the functionality com.itextpdf kernel - 9.5.0 + 9.7.1 org.bouncycastle @@ -855,7 +855,7 @@ Applications based on MyCoRe use a common core, which provides the functionality com.itextpdf layout - 9.5.0 + 9.7.1 org.bouncycastle @@ -875,7 +875,7 @@ Applications based on MyCoRe use a common core, which provides the functionality com.zaxxer HikariCP - 7.0.2 + 7.1.0 commons-beanutils @@ -891,22 +891,22 @@ Applications based on MyCoRe use a common core, which provides the functionality commons-codec commons-codec - 1.21.0 + 1.22.1 commons-io commons-io - 2.21.0 + 2.22.0 de.larsgrefer.sass sass-embedded-host - 4.4.0 + 4.5.2 de.larsgrefer.sass sass-embedded-protocol - 4.4.0 + 4.5.2 de.thetaphi @@ -916,7 +916,7 @@ Applications based on MyCoRe use a common core, which provides the functionality de.undercouch citeproc-java - 3.5.0 + 3.5.2 io.bit3 @@ -926,7 +926,7 @@ Applications based on MyCoRe use a common core, which provides the functionality io.github.classgraph classgraph - 4.8.184 + 4.8.196 io.ocfl @@ -1023,7 +1023,7 @@ Applications based on MyCoRe use a common core, which provides the functionality jaxen jaxen - 2.0.0 + 2.0.6 jdom @@ -1118,7 +1118,7 @@ Applications based on MyCoRe use a common core, which provides the functionality org.apache.pdfbox pdfbox - 3.0.6 + 3.0.8 commons-logging @@ -1129,7 +1129,7 @@ Applications based on MyCoRe use a common core, which provides the functionality org.apache.pdfbox pdfbox-io - 3.0.6 + 3.0.8 commons-logging @@ -1236,7 +1236,7 @@ Applications based on MyCoRe use a common core, which provides the functionality org.bouncycastle bcprov-jdk18on - 1.84 + 1.86 org.eclipse.rdf4j @@ -1336,12 +1336,12 @@ Applications based on MyCoRe use a common core, which provides the functionality org.jsoup jsoup - 1.22.1 + 1.23.2 org.mozilla rhino - 1.7.14.1 + 1.9.1 org.mycore @@ -1612,7 +1612,7 @@ Applications based on MyCoRe use a common core, which provides the functionality org.mycore.mets mets-validator - 1.3 + 1.4 org.mycore.sword @@ -1652,7 +1652,7 @@ Applications based on MyCoRe use a common core, which provides the functionality org.postgresql postgresql - 42.7.11 + 42.7.13 org.tmatesoft.svnkit @@ -1746,7 +1746,7 @@ Applications based on MyCoRe use a common core, which provides the functionality com.github.spotbugs spotbugs-annotations - 4.9.8 + 4.10.4 provided @@ -1776,27 +1776,27 @@ Applications based on MyCoRe use a common core, which provides the functionality com.fasterxml.woodstox woodstox-core - 7.1.1 + 7.2.2 runtime com.github.mwiede jsch - 2.28.0 + 2.28.7 runtime net.java.dev.jna jna - 5.18.1 + 5.19.1 runtime true net.sf.saxon Saxon-HE - 12.9 + 13.0 runtime @@ -1840,7 +1840,7 @@ Applications based on MyCoRe use a common core, which provides the functionality org.apache.pdfbox fontbox - 3.0.6 + 3.0.8 runtime @@ -1852,25 +1852,25 @@ Applications based on MyCoRe use a common core, which provides the functionality org.apache.pdfbox jbig2-imageio - 3.0.4 + 3.0.5 runtime org.citationstyles locales - 26.2 + 26.8 runtime org.citationstyles styles - 26.2 + 26.8 runtime org.codehaus.woodstox stax2-api - 4.2.2 + 4.3.0 runtime @@ -1894,7 +1894,7 @@ Applications based on MyCoRe use a common core, which provides the functionality org.javassist javassist - 3.30.2-GA + 3.33.0-GA runtime @@ -1906,13 +1906,13 @@ Applications based on MyCoRe use a common core, which provides the functionality com.google.jimfs jimfs - 1.3.1 + 1.3.2 test com.h2database h2 - 2.4.240 + 2.5.250 test @@ -1968,7 +1968,7 @@ Applications based on MyCoRe use a common core, which provides the functionality org.mycore selenium-utils - 0.11 + 0.12-SNAPSHOT test