Merge pull request #168 from lewismc/ANY23-461

[ANY23-461] Upgrade Any23 to JDK11
diff --git a/.github/workflows/master-build.yml b/.github/workflows/master-build.yml
index 132edfb..7ed477b 100644
--- a/.github/workflows/master-build.yml
+++ b/.github/workflows/master-build.yml
@@ -29,7 +29,7 @@
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        java: [ '1.8' ]
+        java: [ '11' ]
 
     steps:
       - uses: actions/checkout@v2
diff --git a/core/src/main/java/org/apache/any23/extractor/rdf/JSONLDExtractor.java b/core/src/main/java/org/apache/any23/extractor/rdf/JSONLDExtractor.java
index bc44334..585aac2 100644
--- a/core/src/main/java/org/apache/any23/extractor/rdf/JSONLDExtractor.java
+++ b/core/src/main/java/org/apache/any23/extractor/rdf/JSONLDExtractor.java
@@ -17,11 +17,12 @@
 
 package org.apache.any23.extractor.rdf;
 
-import com.fasterxml.jackson.core.JsonFactory;
 import com.fasterxml.jackson.core.JsonLocation;
-import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.StreamReadFeature;
+import com.fasterxml.jackson.core.json.JsonReadFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.json.JsonMapper;
 import com.github.jsonldjava.core.JsonLdOptions;
 import com.github.jsonldjava.core.JsonLdProcessor;
 import com.github.jsonldjava.utils.JsonUtils;
@@ -45,23 +46,14 @@
  */
 public class JSONLDExtractor extends BaseRDFExtractor {
 
-    private static final JsonFactory JSON_FACTORY = new JsonFactory(new ObjectMapper());
-
-    static {
-        JSON_FACTORY.enable(JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER);
-        JSON_FACTORY.disable(JsonParser.Feature.ALLOW_COMMENTS); // handled by JsonCleaningInputStream
-        JSON_FACTORY.disable(JsonParser.Feature.ALLOW_MISSING_VALUES); // handled by JsonCleaningInputStream
-        JSON_FACTORY.enable(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS);
-        JSON_FACTORY.enable(JsonParser.Feature.ALLOW_NUMERIC_LEADING_ZEROS);
-        JSON_FACTORY.disable(JsonParser.Feature.ALLOW_SINGLE_QUOTES); // handled by JsonCleaningInputStream
-        JSON_FACTORY.disable(JsonParser.Feature.ALLOW_TRAILING_COMMA); // handled by JsonCleaningInputStream
-        JSON_FACTORY.enable(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS);
-        JSON_FACTORY.enable(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES);
-        JSON_FACTORY.disable(JsonParser.Feature.ALLOW_YAML_COMMENTS); // handled by JsonCleaningInputStream
-        JSON_FACTORY.enable(JsonParser.Feature.IGNORE_UNDEFINED);
-        JSON_FACTORY.enable(JsonParser.Feature.INCLUDE_SOURCE_IN_LOCATION);
-        JSON_FACTORY.disable(JsonParser.Feature.STRICT_DUPLICATE_DETECTION);
-    }
+    private static final ObjectMapper OBJECT_MAPPER = JsonMapper.builder()
+            .enable(JsonReadFeature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER).disable(JsonReadFeature.ALLOW_JAVA_COMMENTS)
+            .disable(JsonReadFeature.ALLOW_MISSING_VALUES).enable(JsonReadFeature.ALLOW_NON_NUMERIC_NUMBERS)
+            .enable(JsonReadFeature.ALLOW_LEADING_ZEROS_FOR_NUMBERS).disable(JsonReadFeature.ALLOW_SINGLE_QUOTES)
+            .disable(JsonReadFeature.ALLOW_TRAILING_COMMA).enable(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS)
+            .enable(JsonReadFeature.ALLOW_UNQUOTED_FIELD_NAMES).disable(JsonReadFeature.ALLOW_YAML_COMMENTS)
+            .enable(StreamReadFeature.IGNORE_UNDEFINED).enable(StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION)
+            .disable(StreamReadFeature.STRICT_DUPLICATE_DETECTION).build();
 
     /**
      * @deprecated since 2.4. This extractor has never supported these settings. Use {@link #JSONLDExtractor()} instead.
@@ -95,7 +87,8 @@
         options.useNamespaces = true;
 
         try {
-            Object json = JsonUtils.fromJsonParser(JSON_FACTORY.createParser(new JsonCleaningInputStream(in)));
+            Object json = JsonUtils
+                    .fromJsonParser(OBJECT_MAPPER.getFactory().createParser(new JsonCleaningInputStream(in)));
             JsonLdProcessor.toRDF(json, handler, options);
         } catch (JsonProcessingException e) {
             JsonLocation loc = e.getLocation();
diff --git a/core/src/test/java/org/apache/any23/Any23Test.java b/core/src/test/java/org/apache/any23/Any23Test.java
index 9360593..b3a6602 100644
--- a/core/src/test/java/org/apache/any23/Any23Test.java
+++ b/core/src/test/java/org/apache/any23/Any23Test.java
@@ -198,18 +198,18 @@
     public void testDemoCodeSnippet2() throws Exception {
         assumeOnlineAllowed();
 
-        /* 1 */Any23 runner = new Any23();
-        /* 2 */runner.setHTTPUserAgent("apache-any23-test-user-agent");
-        /* 3 */HTTPClient httpClient = runner.getHTTPClient();
-        /* 4 */DocumentSource source = new HTTPDocumentSource(httpClient, "http://dbpedia.org/resource/Trento");
-        /* 5 */ByteArrayOutputStream out = new ByteArrayOutputStream();
-        /* 6 */TripleHandler handler = new NTriplesWriter(out);
+        Any23 runner = new Any23();
+        runner.setHTTPUserAgent("apache-any23-test-user-agent");
+        HTTPClient httpClient = runner.getHTTPClient();
+        DocumentSource source = new HTTPDocumentSource(httpClient, "http://dbpedia.org/resource/Trento");
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        TripleHandler handler = new NTriplesWriter(out);
         try {
-            /* 7 */runner.extract(source, handler);
+            runner.extract(source, handler);
         } finally {
-            /* 8 */handler.close();
+            handler.close();
         }
-        /* 9 */String n3 = out.toString("UTF-8");
+        String n3 = out.toString("UTF-8");
 
         /*
          * <http://dbpedia.org/resource/Trent> <http://dbpedia.org/ontology/wikiPageDisambiguates>
@@ -222,7 +222,7 @@
         Assert.assertTrue(n3.length() > 0);
 
         Assert.assertTrue(n3.contains(
-                "<http://dbpedia.org/resource/Trento> <http://dbpedia.org/property/mayor> \"Alessandro Andreatta\" ."));
+                "<http://dbpedia.org/resource/Trento> <http://dbpedia.org/property/mayor> \"Franco Ianeselli, elected 2020\"@en ."));
     }
 
     /**
diff --git a/pom.xml b/pom.xml
index ef45d7b..eff30d3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -257,8 +257,8 @@
     <project.build.resourceEncoding>UTF-8</project.build.resourceEncoding>
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
-    <javac.src.version>1.8</javac.src.version>
-    <javac.target.version>1.8</javac.target.version>
+    <javac.src.version>11</javac.src.version>
+    <javac.target.version>11</javac.target.version>
 
     <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ssZ</maven.build.timestamp.format>
     <implementation.build>${scmBranch}@r${buildNumber}</implementation.build>
@@ -274,7 +274,7 @@
     <tika.version>1.24</tika.version>
     <openie_2.11.version>4.2.6</openie_2.11.version>
     <openregex.version>1.1.1</openregex.version>
-    <jackson.version>2.10.3</jackson.version>
+    <jackson.version>2.12.2</jackson.version>
     <commons-io.version>2.6</commons-io.version>
 
     <!-- Overridden in profiles to add JDK specific arguments to surefire -->
@@ -288,7 +288,7 @@
     <form.tracker.id>UA-59636188-1</form.tracker.id>
 
     <!-- Maven Plugin Versions -->
-    <maven-javadoc-plugin.version>3.1.1</maven-javadoc-plugin.version>
+    <maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
     <maven-clean-plugin.version>3.1.0</maven-clean-plugin.version>
     <maven-deploy-plugin.version>3.0.0-M1</maven-deploy-plugin.version>
     <maven-install-plugin.version>3.0.0-M1</maven-install-plugin.version>
@@ -298,7 +298,7 @@
     <maven-release-plugin.version>2.5.3</maven-release-plugin.version>
     <buildnumber-maven-plugin.version>1.4</buildnumber-maven-plugin.version>
     <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
-    <maven-jar-plugin.version>3.1.2</maven-jar-plugin.version>
+    <maven-jar-plugin.version>3.2.0</maven-jar-plugin.version>
     <maven-surefire-plugin.version>3.0.0-M3</maven-surefire-plugin.version>
     <jacoco-maven-plugin.version>0.8.4</jacoco-maven-plugin.version>
     <maven-site-plugin.version>3.7.1</maven-site-plugin.version>
@@ -307,7 +307,7 @@
     <maven-jxr-plugin.version>3.0.0</maven-jxr-plugin.version>
     <maven-checkstyle-plugin.version>3.1.1</maven-checkstyle-plugin.version>
     <apache-rat-plugin.version>0.13</apache-rat-plugin.version>
-    <maven-source-plugin.version>3.0.1</maven-source-plugin.version>
+    <maven-source-plugin.version>3.2.1</maven-source-plugin.version>
     <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
     <maven-war-plugin.version>3.2.3</maven-war-plugin.version>
     <maven-invoker-plugin.version>3.2.1</maven-invoker-plugin.version>
@@ -510,7 +510,7 @@
       <dependency>
         <groupId>com.github.jsonld-java</groupId>
         <artifactId>jsonld-java</artifactId>
-        <version>0.13.1</version>
+        <version>0.13.2</version>
       </dependency>
       <dependency>
         <groupId>org.semarglproject</groupId>
@@ -747,8 +747,7 @@
             <bundledSignature>jdk-unsafe-${javac.src.version}</bundledSignature>
             <bundledSignature>jdk-deprecated-${javac.src.version}</bundledSignature>
             <bundledSignature>jdk-non-portable</bundledSignature>
-            <!-- comment out until we upgrade past Java 8 -->
-            <!--bundledSignature>jdk-reflection</bundledSignature-->
+            <bundledSignature>jdk-reflection</bundledSignature>
             <bundledSignature>jdk-internal-${javac.src.version}</bundledSignature>
             <bundledSignature>jdk-system-out</bundledSignature>
             <bundledSignature>commons-io-unsafe-${commons-io.version}</bundledSignature>
@@ -758,7 +757,7 @@
           <execution>
             <goals>
               <goal>check</goal>
-              <!--goal>testCheck</goal-->
+              <goal>testCheck</goal>
             </goals>
           </execution>
         </executions>
@@ -769,13 +768,6 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-javadoc-plugin</artifactId>
         <version>${maven-javadoc-plugin.version}</version>
-        <configuration>
-          <!--
-           | Apple's JVM sometimes requires more memory
-          -->
-          <additionalJOption>-J-Xmx1024m</additionalJOption>
-          <source>8</source>
-        </configuration>
       </plugin>
 
       <!-- Drop inherited behavior (i.e. don't put any more default LICENSE and NOTICE files in all artifacts) -->
@@ -946,13 +938,6 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-javadoc-plugin</artifactId>
         <version>${maven-javadoc-plugin.version}</version>
-        <configuration>
-          <!--
-           | Apple's JVM sometimes requires more memory
-          -->
-          <additionalJOption>-J-Xmx1024m</additionalJOption>
-          <source>8</source>
-        </configuration>
       </plugin>
 
       <!-- Browsable documentation. -->
@@ -1091,7 +1076,6 @@
                   <goal>jar</goal>
                 </goals>
                 <configuration>
-                  <source>8</source>
                   <quiet>true</quiet>
                   <archive>
                     <manifest>
@@ -1185,9 +1169,6 @@
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-javadoc-plugin</artifactId>
                   <version>${maven-javadoc-plugin.version}</version>
-                  <configuration>
-                    <source>8</source>
-                  </configuration>
                   <reportSets>
                     <reportSet>
                       <reports>