diff --git a/.github/workflows/apiary.yml b/.github/workflows/apiary.yml index 16ac153397c..8194980360c 100644 --- a/.github/workflows/apiary.yml +++ b/.github/workflows/apiary.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout master branch - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Install drafter run: npm install drafter - name: Build diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7a2e794f635..5e86d2b9632 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,7 @@ on: jobs: build: - name: ${{ matrix.os }} with Java 11 + name: ${{ matrix.os }} with Java 17 runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -19,21 +19,22 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - name: Checkout master branch - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Set up JDK 11 - uses: actions/setup-java@v1 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: - java-version: 11 + distribution: 'oracle' + java-version: '17' - name: Cache Maven packages - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - name: Checkout Universal ctags - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: repository: universal-ctags/ctags path: ctags diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 0e48d731064..41be348d4f9 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -21,15 +21,19 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 - + uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + distribution: 'oracle' + java-version: '17' - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v2 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 71d85168227..37d83e15b16 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout master branch - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: '3.10' diff --git a/.github/workflows/javadoc.yml b/.github/workflows/javadoc.yml index eb144bbd4e9..c9e6365cd87 100644 --- a/.github/workflows/javadoc.yml +++ b/.github/workflows/javadoc.yml @@ -17,20 +17,21 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout master branch - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v1 + uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: - java-version: 11 + distribution: 'oracle' + java-version: '17' - name: Cache Maven packages - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - name: Checkout gh-pages branch if: github.repository == 'oracle/opengrok' - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: ref: gh-pages path: gh-pages diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 35f3a0e0d77..bab913448c8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout master branch - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Get the tag name id: get_tag env: @@ -25,19 +25,20 @@ jobs: needs: get_tag steps: - name: Checkout master branch - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v1 + uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: - java-version: 11 + distribution: 'oracle' + java-version: '17' - name: Cache Maven packages - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - name: Checkout Universal ctags - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: repository: universal-ctags/ctags path: ctags diff --git a/Dockerfile b/Dockerfile index bfc58b82a82..065c4e68b3d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ FROM ubuntu:jammy as build # hadolint ignore=DL3008 -RUN apt-get update && apt-get install --no-install-recommends -y openjdk-11-jdk python3 python3-venv && \ +RUN apt-get update && apt-get install --no-install-recommends -y openjdk-17-jdk python3 python3-venv && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* @@ -41,7 +41,7 @@ RUN cp `ls -t distribution/target/*.tar.gz | head -1` /opengrok.tar.gz # Store the version in a file so that the tools can report it. RUN /mvn/mvnw help:evaluate -Dexpression=project.version -q -DforceStdout > /mvn/VERSION -FROM tomcat:10.1-jdk11 +FROM tomcat:10.1.13-jdk17 LABEL maintainer="https://github.com/oracle/opengrok" # Add Perforce apt source. @@ -93,6 +93,11 @@ ENV CATALINA_BASE /usr/local/tomcat ENV CATALINA_TMPDIR /usr/local/tomcat/temp ENV PATH $CATALINA_HOME/bin:$PATH ENV CLASSPATH /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar +ENV JAVA_OPTS="--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-exports=java.base/sun.nio.ch=ALL-UNNAMED \ +--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \ +--add-opens=jdk.compiler/com.sun.tools.javac=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED \ +--add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED \ +--add-opens=java.base/java.util=ALL-UNNAMED" # disable all file logging COPY docker/logging.properties /usr/local/tomcat/conf/logging.properties diff --git a/docker/README.md b/docker/README.md index f2945d9fa82..5e4048dfdb1 100644 --- a/docker/README.md +++ b/docker/README.md @@ -26,7 +26,7 @@ image based on the official one. ## Additional info about the image * Tomcat 10 -* JRE 11 +* JRE 17 * Configurable mirroring/reindexing (default every 10 min) The mirroring step works by going through all projects and attempting to diff --git a/opengrok-indexer/pom.xml b/opengrok-indexer/pom.xml index cce12a1b4b0..16ca0534624 100644 --- a/opengrok-indexer/pom.xml +++ b/opengrok-indexer/pom.xml @@ -377,10 +377,14 @@ Portions Copyright (c) 2020-2020, Lubos Kosco . @{surefireArgLine} - --illegal-access=permit + + + org.apache.maven.plugins + maven-compiler-plugin + diff --git a/opengrok-indexer/src/main/java/org/opengrok/indexer/configuration/RuntimeEnvironment.java b/opengrok-indexer/src/main/java/org/opengrok/indexer/configuration/RuntimeEnvironment.java index 8f9d92c9715..3b748388dfd 100644 --- a/opengrok-indexer/src/main/java/org/opengrok/indexer/configuration/RuntimeEnvironment.java +++ b/opengrok-indexer/src/main/java/org/opengrok/indexer/configuration/RuntimeEnvironment.java @@ -1849,7 +1849,7 @@ public void applyConfig(String configuration, boolean reindex, CommandTimeoutTyp * @param reindex is the message result of reindex * @param cmdType command timeout type * @see ConfigurationChangedListener - *

+ * */ public void applyConfig(Configuration config, boolean reindex, CommandTimeoutType cmdType) { setConfiguration(config, cmdType); diff --git a/opengrok-indexer/src/main/java/org/opengrok/indexer/framework/PluginFramework.java b/opengrok-indexer/src/main/java/org/opengrok/indexer/framework/PluginFramework.java index 63e130e1d72..661d3b6a0b8 100644 --- a/opengrok-indexer/src/main/java/org/opengrok/indexer/framework/PluginFramework.java +++ b/opengrok-indexer/src/main/java/org/opengrok/indexer/framework/PluginFramework.java @@ -26,8 +26,6 @@ import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Modifier; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.Arrays; import java.util.Enumeration; import java.util.LinkedList; @@ -382,7 +380,7 @@ public final void reload() { // trashing out the old instance of the loader enables us // to reload the stack at runtime - loader = AccessController.doPrivileged((PrivilegedAction) () -> new PluginClassLoader(pluginDirectory)); + loader = new PluginClassLoader(pluginDirectory); // notify the implementing class that the reload is about to begin beforeReload(); diff --git a/opengrok-indexer/src/main/java/org/opengrok/indexer/index/DefaultIndexChangedListener.java b/opengrok-indexer/src/main/java/org/opengrok/indexer/index/DefaultIndexChangedListener.java index b55f01fa77a..4bb1282decb 100644 --- a/opengrok-indexer/src/main/java/org/opengrok/indexer/index/DefaultIndexChangedListener.java +++ b/opengrok-indexer/src/main/java/org/opengrok/indexer/index/DefaultIndexChangedListener.java @@ -37,7 +37,6 @@ * * @author Trond Norbye */ -@SuppressWarnings("PMD.SystemPrintln") public class DefaultIndexChangedListener implements IndexChangedListener { private static final Logger LOGGER = LoggerFactory.getLogger(DefaultIndexChangedListener.class); diff --git a/opengrok-indexer/src/main/java/org/opengrok/indexer/index/Indexer.java b/opengrok-indexer/src/main/java/org/opengrok/indexer/index/Indexer.java index 3d989cab7da..ab80682049e 100644 --- a/opengrok-indexer/src/main/java/org/opengrok/indexer/index/Indexer.java +++ b/opengrok-indexer/src/main/java/org/opengrok/indexer/index/Indexer.java @@ -96,7 +96,7 @@ * Windows already supports opening {@code /var/opengrok} as {@code C:\var\opengrok} *

*/ -@SuppressWarnings({"PMD.AvoidPrintStackTrace", "PMD.SystemPrintln"}) +@SuppressWarnings({"PMD.AvoidPrintStackTrace", "PMD.SystemPrintln", "java:S106"}) public final class Indexer { private static final Logger LOGGER = LoggerFactory.getLogger(Indexer.class); @@ -162,7 +162,6 @@ public static Indexer getInstance() { @SuppressWarnings("PMD.UseStringBufferForStringAppends") public static void main(String[] argv) { Statistics stats = new Statistics(); //this won't count JVM creation though - boolean update = true; Executor.registerErrorHandler(); List subFiles = RuntimeEnvironment.getInstance().getSubFiles(); diff --git a/opengrok-indexer/src/main/java/org/opengrok/indexer/logger/formatter/LogFormatter.java b/opengrok-indexer/src/main/java/org/opengrok/indexer/logger/formatter/LogFormatter.java index 6b03dbb6468..8e7cfb2cc72 100644 --- a/opengrok-indexer/src/main/java/org/opengrok/indexer/logger/formatter/LogFormatter.java +++ b/opengrok-indexer/src/main/java/org/opengrok/indexer/logger/formatter/LogFormatter.java @@ -61,24 +61,25 @@ public LogFormatter(String format, String version) { } @Override - public String format(LogRecord record) { - Date dat = new Date(record.getMillis()); + @SuppressWarnings("deprecation") + public String format(LogRecord logRecord) { + Date dat = new Date(logRecord.getMillis()); StringBuilder source = new StringBuilder(); - if (record.getSourceClassName() != null) { - source.append(record.getSourceClassName()); - if (record.getSourceMethodName() != null) { - source.append(' ').append(record.getSourceMethodName()); + if (logRecord.getSourceClassName() != null) { + source.append(logRecord.getSourceClassName()); + if (logRecord.getSourceMethodName() != null) { + source.append(' ').append(logRecord.getSourceMethodName()); } } else { - source.append(record.getLoggerName()); + source.append(logRecord.getLoggerName()); } StringBuilder throwable = new StringBuilder(); - if (record.getThrown() != null) { + if (logRecord.getThrown() != null) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); pw.println(); - record.getThrown().printStackTrace(pw); + logRecord.getThrown().printStackTrace(pw); pw.close(); throwable.append(sw.toString()); } @@ -86,15 +87,15 @@ public String format(LogRecord record) { return String.format(format, dat, //%1 source.toString(), //%2 - record.getLoggerName(), //%3 - record.getLevel().getLocalizedName(), //%4 - formatMessage(record), //%5 + logRecord.getLoggerName(), //%3 + logRecord.getLevel().getLocalizedName(), //%4 + formatMessage(logRecord), //%5 throwable, //%6 (till here the same as JDK7's SimpleFormatter) - record.getSourceClassName(), //%7 - record.getSourceMethodName(), //%8 - className(record.getSourceClassName()), //%9 - record.getThreadID(), //%10 - record.getMessage(), //%11 + logRecord.getSourceClassName(), //%7 + logRecord.getSourceMethodName(), //%8 + className(logRecord.getSourceClassName()), //%9 + logRecord.getThreadID(), //%10 + logRecord.getMessage(), //%11 version ); } diff --git a/opengrok-indexer/src/main/java/org/opengrok/indexer/web/messages/Message.java b/opengrok-indexer/src/main/java/org/opengrok/indexer/web/messages/Message.java index ca7a4ce2bbf..440862ce33a 100644 --- a/opengrok-indexer/src/main/java/org/opengrok/indexer/web/messages/Message.java +++ b/opengrok-indexer/src/main/java/org/opengrok/indexer/web/messages/Message.java @@ -80,7 +80,6 @@ public String toString() { return messageLevelString; } - @SuppressWarnings("rawtypes") public static final Comparator VALUE_COMPARATOR = Comparator.comparingInt(Enum::ordinal); } diff --git a/opengrok-indexer/src/test/java/org/opengrok/indexer/history/BazaarHistoryParserTest.java b/opengrok-indexer/src/test/java/org/opengrok/indexer/history/BazaarHistoryParserTest.java index 059011ce316..cfb4174dbf2 100644 --- a/opengrok-indexer/src/test/java/org/opengrok/indexer/history/BazaarHistoryParserTest.java +++ b/opengrok-indexer/src/test/java/org/opengrok/indexer/history/BazaarHistoryParserTest.java @@ -143,7 +143,6 @@ public void parseLogNoFile() throws Exception { } @Test - @SuppressWarnings("unchecked") public void parseLogDirectory() throws Exception { String revId1 = "1234"; String author1 = "username@example.com"; diff --git a/opengrok-web/pom.xml b/opengrok-web/pom.xml index 771e407c0e4..1a10d1ce498 100644 --- a/opengrok-web/pom.xml +++ b/opengrok-web/pom.xml @@ -253,10 +253,15 @@ Portions Copyright (c) 2018, 2020, Chris Fraire . @{surefireArgLine} -Djna.nosys=true - --illegal-access=permit --add-exports java.base/jdk.internal.ref=ALL-UNNAMED - --add-exports java.base/jdk.internal.misc=ALL-UNNAMED --add-exports java.base/sun.nio.ch=ALL-UNNAMED + --add-exports jdk.unsupported/sun.misc=ALL-UNNAMED + --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED + --add-opens jdk.compiler/com.sun.tools.javac=ALL-UNNAMED + --add-opens java.base/java.lang=ALL-UNNAMED + --add-opens java.base/java.lang.reflect=ALL-UNNAMED + --add-opens java.base/java.io=ALL-UNNAMED + --add-opens java.base/java.util=ALL-UNNAMED diff --git a/opengrok-web/src/main/java/org/opengrok/web/api/v1/suggester/query/SuggesterQueryParser.java b/opengrok-web/src/main/java/org/opengrok/web/api/v1/suggester/query/SuggesterQueryParser.java index 718fbeb3b46..ba9c34ea0ce 100644 --- a/opengrok-web/src/main/java/org/opengrok/web/api/v1/suggester/query/SuggesterQueryParser.java +++ b/opengrok-web/src/main/java/org/opengrok/web/api/v1/suggester/query/SuggesterQueryParser.java @@ -237,7 +237,6 @@ protected Query newFuzzyQuery(final Term term, final float minimumSimilarity, fi replaceIdentifier(term.field(), term.text() + "~" + ((int) minimumSimilarity)); } - @SuppressWarnings("deprecation") int numEdits = FuzzyQuery.floatToEdits(minimumSimilarity, newTerm.text().codePointCount(0, newTerm.text().length())); diff --git a/opengrok-web/src/test/java/org/opengrok/web/api/v1/controller/SuggesterControllerTest.java b/opengrok-web/src/test/java/org/opengrok/web/api/v1/controller/SuggesterControllerTest.java index ca893cca5d9..574af6563d8 100644 --- a/opengrok-web/src/test/java/org/opengrok/web/api/v1/controller/SuggesterControllerTest.java +++ b/opengrok-web/src/test/java/org/opengrok/web/api/v1/controller/SuggesterControllerTest.java @@ -596,7 +596,6 @@ void testAllowComplexQueries() { } @Test - @SuppressWarnings("unchecked") // for contains void testGetPopularityDataSimple() { assertTrue(SuggesterServiceImpl.getInstance().increaseSearchCount("rust", new Term(QueryBuilder.FULL, "main"), 10, true)); @@ -611,7 +610,6 @@ void testGetPopularityDataSimple() { } @Test - @SuppressWarnings("unchecked") // for contains void testGetPopularityDataAll() { assertTrue(SuggesterServiceImpl.getInstance().increaseSearchCount("csharp", new Term(QueryBuilder.FULL, "mynamespace"), 10, true)); @@ -630,7 +628,6 @@ void testGetPopularityDataAll() { } @Test - @SuppressWarnings("unchecked") // for contains void testGetPopularityDataDifferentField() { assertTrue(SuggesterServiceImpl.getInstance().increaseSearchCount("swift", new Term(QueryBuilder.FULL, "print"), 10, true)); diff --git a/plugins/pom.xml b/plugins/pom.xml index 5bdbbc1ee82..74703184e5a 100644 --- a/plugins/pom.xml +++ b/plugins/pom.xml @@ -119,7 +119,7 @@ Portions Copyright (c) 2020, Chris Fraire . @{surefireArgLine} - --illegal-access=permit + diff --git a/pom.xml b/pom.xml index 506866120d9..5f2bae474d5 100644 --- a/pom.xml +++ b/pom.xml @@ -61,23 +61,21 @@ Portions Copyright (c) 2018, 2020, Chris Fraire . 9.8.0 - 3.2.0 - - 11 - 11 + 3.6.0 + 11 UTF-8 - 3.1.0 + 3.1.3 - 2.14.1 - 5.7.2 + 2.15.2 + 5.10.0 2.2 3.0.0-M5 - 3.12.0 - 1.8.2 + 3.13.0 + 1.11.4 3.12.4 - 1.3.2 + 2.14.0 @@ -231,7 +229,7 @@ Portions Copyright (c) 2018, 2020, Chris Fraire . 3.0.5 - 11 + ${java.version} @@ -251,8 +249,7 @@ Portions Copyright (c) 2018, 2020, Chris Fraire . org.apache.maven.plugins maven-compiler-plugin - ${compileSource} - ${compileTarget} + ${java.version} ${project.build.sourceEncoding} -Xlint:all @@ -411,22 +408,6 @@ Portions Copyright (c) 2018, 2020, Chris Fraire . - - java12plus-11-release - - [12,20] - - - - - maven-compiler-plugin - - 11 - - - - - dependency-check @@ -504,7 +485,7 @@ Portions Copyright (c) 2018, 2020, Chris Fraire . dev/pmd_ruleset.xml - ${compileTarget} + ${java.version} true diff --git a/suggester/pom.xml b/suggester/pom.xml index 1a94280e1f0..cb9da725167 100644 --- a/suggester/pom.xml +++ b/suggester/pom.xml @@ -37,7 +37,7 @@ Portions Copyright (c) 2020, Chris Fraire . OpenGrok Suggester - + @@ -163,10 +163,15 @@ Portions Copyright (c) 2020, Chris Fraire . @{surefireArgLine} -Djna.nosys=true - --illegal-access=permit --add-exports java.base/jdk.internal.ref=ALL-UNNAMED - --add-exports java.base/jdk.internal.misc=ALL-UNNAMED --add-exports java.base/sun.nio.ch=ALL-UNNAMED + --add-exports jdk.unsupported/sun.misc=ALL-UNNAMED + --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED + --add-opens jdk.compiler/com.sun.tools.javac=ALL-UNNAMED + --add-opens java.base/java.lang=ALL-UNNAMED + --add-opens java.base/java.lang.reflect=ALL-UNNAMED + --add-opens java.base/java.io=ALL-UNNAMED + --add-opens java.base/java.util=ALL-UNNAMED diff --git a/suggester/src/main/java/org/opengrok/suggest/popular/impl/chronicle/BytesRefSizedReader.java b/suggester/src/main/java/org/opengrok/suggest/popular/impl/chronicle/BytesRefSizedReader.java index 01154061281..63baad2404d 100644 --- a/suggester/src/main/java/org/opengrok/suggest/popular/impl/chronicle/BytesRefSizedReader.java +++ b/suggester/src/main/java/org/opengrok/suggest/popular/impl/chronicle/BytesRefSizedReader.java @@ -35,7 +35,7 @@ /** * {@link BytesRef} data serializer for {@link net.openhft.chronicle.map.ChronicleMap}. - * Modified from https://github.com/OpenHFT/Chronicle-Map/blob/master/docs/CM_Tutorial_DataAccess.adoc + * Modified from ... */ public class BytesRefSizedReader implements SizedReader, Marshallable, ReadResolvable { @@ -46,9 +46,9 @@ private BytesRefSizedReader() { @NotNull @Override - @SuppressWarnings("rawtypes") + @SuppressWarnings({"rawtypes"}) public BytesRef read(Bytes in, long size, @Nullable BytesRef using) { - if (size < 0L || size > (long) Integer.MAX_VALUE) { + if (size < 0L || size > Integer.MAX_VALUE) { throw new IORuntimeException("byte[] size should be non-negative int, " + size + " given. Memory corruption?"); }