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?");
}