From 278896dafb2496ae4b0d65b59030bdf3ad683032 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Fri, 23 Oct 2026 10:42:24 +1100 Subject: [PATCH 1/7] Update Android build tools and gradle --- commonmark-android-test/README.md | 4 +- commonmark-android-test/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 43462 -> 48749 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- commonmark-android-test/gradlew | 19 ++-- commonmark-android-test/gradlew.bat | 88 +++++++++++------- 6 files changed, 69 insertions(+), 48 deletions(-) diff --git a/commonmark-android-test/README.md b/commonmark-android-test/README.md index 0fb792ae3..9b737a98d 100644 --- a/commonmark-android-test/README.md +++ b/commonmark-android-test/README.md @@ -6,8 +6,8 @@ Current `minSdk` is 19 Requirements: -* Java 11 or above -* Android SDK 30 +* Java 17 or above (supported by the Gradle wrapper version) +* Android SDK Platform 30 and SDK Build Tools 36.0.0 Configuration ----- diff --git a/commonmark-android-test/build.gradle b/commonmark-android-test/build.gradle index f359e8154..812dc8e40 100644 --- a/commonmark-android-test/build.gradle +++ b/commonmark-android-test/build.gradle @@ -4,7 +4,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' + classpath 'com.android.tools.build:gradle:9.4.1' } } diff --git a/commonmark-android-test/gradle/wrapper/gradle-wrapper.jar b/commonmark-android-test/gradle/wrapper/gradle-wrapper.jar index d64cd4917707c1f8861d8cb53dd15194d4248596..9fa7f288283f81eec4952784c271abd7e0938dee 100644 GIT binary patch delta 40602 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

kezPSkNI*^jrKaaP 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 delta 35519 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

>tlXPw3B1(!0DZ;($eyTe%fjLusD`k(W@5AJ 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

On-&t5#5MRRW?$1o_RvHIHF^*tDSUu)OsF( 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 RH8>-S1N@>exq;64^e;_()VTlv diff --git a/commonmark-android-test/gradle/wrapper/gradle-wrapper.properties b/commonmark-android-test/gradle/wrapper/gradle-wrapper.properties index a80b22ce5..91c4fc64a 100644 --- a/commonmark-android-test/gradle/wrapper/gradle-wrapper.properties +++ b/commonmark-android-test/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,9 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.2-bin.zip networkTimeout=10000 +retries=0 +retryBackOffMs=500 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/commonmark-android-test/gradlew b/commonmark-android-test/gradlew index 1aa94a426..249efbb03 100755 --- a/commonmark-android-test/gradlew +++ b/commonmark-android-test/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,10 +15,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # -# Gradle start up script for POSIX generated by Gradle. +# gradlew start up script for POSIX generated by Gradle. # # Important for running: # @@ -27,7 +29,7 @@ # bash, then to run this script, type that shell name before the whole # command line, like: # -# ksh Gradle +# ksh gradlew # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -84,7 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -112,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -170,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -203,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/commonmark-android-test/gradlew.bat b/commonmark-android-test/gradlew.bat index 7101f8e46..03754c4c3 100644 --- a/commonmark-android-test/gradlew.bat +++ b/commonmark-android-test/gradlew.bat @@ -13,16 +13,45 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem -@rem Gradle startup script for Windows +@rem gradlew startup script for Windows @rem @rem ########################################################################## -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions + +@rem Catch executions from older scripts and ensure they exit cleanly. +@rem This can be removed once we can be reasonably confident that few people +@rem will be migrating directly to this new wrapper. +goto afterSafetyNet +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +goto exitWithErrorLevel +:afterSafetyNet set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -43,13 +72,14 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +1>&2 echo. +1>&2 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +1>&2 echo. +1>&2 echo Please set the JAVA_HOME variable in your environment to match the +1>&2 echo location of your Java installation. -goto fail +"%COMSPEC%" /c exit 1 +goto exitWithErrorLevel :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -57,36 +87,26 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +1>&2 echo. +1>&2 echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +1>&2 echo. +1>&2 echo Please set the JAVA_HOME variable in your environment to match the +1>&2 echo location of your Java installation. -goto fail +"%COMSPEC%" /c exit 1 +goto exitWithErrorLevel :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% -:mainEnd -if "%OS%"=="Windows_NT" endlocal +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel & goto exitWithErrorLevel -:omega +@rem This label must not be changed. We rely on old scripts being able to jump to this point. +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% From 31701ae1810ef34d36578e20164d9849b4040494 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Fri, 23 Oct 2026 10:47:08 +1100 Subject: [PATCH 2/7] Add Animal Sniffer plugin --- commonmark-android-test/app/build.gradle | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/commonmark-android-test/app/build.gradle b/commonmark-android-test/app/build.gradle index fd8ae34cb..a6f68b835 100644 --- a/commonmark-android-test/app/build.gradle +++ b/commonmark-android-test/app/build.gradle @@ -1,3 +1,8 @@ +// Check Java API usage +plugins { + id 'ru.vyarus.animalsniffer' version '2.0.1' +} + apply plugin: 'com.android.application' android { From fbc0c438ff6d2cce59d9079f0fcd7f552afb4372 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Fri, 23 Oct 2026 10:58:59 +1100 Subject: [PATCH 3/7] printAnimalsnifferTasks --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6326e147a..5ec3e1949 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -58,4 +58,4 @@ jobs: distribution: 'zulu' - name: Android Lint checks - run: cd commonmark-android-test && ./gradlew :app:lint + run: cd commonmark-android-test && ./gradlew :app:lint && ./gradlew :app:printAnimalsnifferTasks From 1247b923d2a7238bc3bfb292607242e4e8458675 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Fri, 23 Oct 2026 11:36:41 +1100 Subject: [PATCH 4/7] Use animalsnifferDebug --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5ec3e1949..7dead2ee7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -58,4 +58,4 @@ jobs: distribution: 'zulu' - name: Android Lint checks - run: cd commonmark-android-test && ./gradlew :app:lint && ./gradlew :app:printAnimalsnifferTasks + run: cd commonmark-android-test && ./gradlew :app:lint && ./gradlew :app:animalsnifferDebug From d2a525659ae39ce0b9480cca5f8aeb1fdde7ecd9 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Fri, 23 Oct 2026 11:42:17 +1100 Subject: [PATCH 5/7] Add signature --- commonmark-android-test/app/build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/commonmark-android-test/app/build.gradle b/commonmark-android-test/app/build.gradle index a6f68b835..f3df05c1b 100644 --- a/commonmark-android-test/app/build.gradle +++ b/commonmark-android-test/app/build.gradle @@ -54,4 +54,6 @@ android { dependencies { implementation('org.nibor.autolink:autolink:0.11.0') + + signature 'net.sf.androidscents.signature:android-api-level-24:7.0_r2@signature' } From 132784cad569f3a179e7635a428aca74fd60653b Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Fri, 23 Oct 2026 11:55:49 +1100 Subject: [PATCH 6/7] Bump Android minSdk to 24 --- README.md | 2 +- commonmark-android-test/app/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9559a6bcb..8e838e582 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ extensible library with the following features: The library is supported on Java 11 and later. It works on Android too, but that is on a best-effort basis, please report problems. For Android the -minimum API level is 19, see the +minimum API level is 24, see the [commonmark-android-test](commonmark-android-test) directory. diff --git a/commonmark-android-test/app/build.gradle b/commonmark-android-test/app/build.gradle index f3df05c1b..30b7cce8b 100644 --- a/commonmark-android-test/app/build.gradle +++ b/commonmark-android-test/app/build.gradle @@ -11,7 +11,7 @@ android { defaultConfig { applicationId "org.commonmark.android.test" - minSdk 19 + minSdk 24 targetSdk 30 versionCode 1 versionName "1.0" From b79bcd3dd6889b321e5a94e504073d3f3dc7eee0 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Fri, 23 Oct 2026 11:56:09 +1100 Subject: [PATCH 7/7] Use older APIs --- .../ext/autolink/AutolinkExtension.java | 8 ++- .../ext/footnotes/FootnotesExtension.java | 3 +- .../internal/FootnoteBlockParser.java | 3 +- .../internal/FootnoteHtmlNodeRenderer.java | 21 +++++--- .../FootnoteMarkdownNodeRenderer.java | 10 +++- .../ext/gfm/alerts/AlertsExtension.java | 3 +- .../gfm/alerts/internal/AlertBlockParser.java | 4 +- .../internal/AlertHtmlNodeRenderer.java | 5 +- .../alerts/internal/AlertNodeRenderer.java | 3 +- .../strikethrough/StrikethroughExtension.java | 3 +- .../StrikethroughHtmlNodeRenderer.java | 4 +- .../internal/StrikethroughNodeRenderer.java | 3 +- .../ext/gfm/tables/TablesExtension.java | 3 +- .../internal/TableHtmlNodeRenderer.java | 9 ++-- .../tables/internal/TableNodeRenderer.java | 17 ++++--- .../ImageAttributesDelimiterProcessor.java | 3 +- .../org/commonmark/ext/ins/InsExtension.java | 3 +- .../ext/ins/internal/InsHtmlNodeRenderer.java | 4 +- .../ext/ins/internal/InsNodeRenderer.java | 3 +- .../list/items/TaskListItemsExtension.java | 3 +- .../internal/TaskListItemNodeRenderer.java | 3 +- .../matter/YamlFrontMatterExtension.java | 3 +- .../internal/YamlFrontMatterNodeRenderer.java | 3 +- .../commonmark/internal/DocumentParser.java | 2 +- .../commonmark/internal/InlineParserImpl.java | 20 +++++--- .../commonmark/internal/ParagraphParser.java | 3 +- .../internal/inline/AutolinkInlineParser.java | 3 +- .../inline/BackslashInlineParser.java | 3 +- .../inline/BackticksInlineParser.java | 3 +- .../internal/inline/EntityInlineParser.java | 3 +- .../internal/inline/HtmlInlineParser.java | 3 +- .../main/java/org/commonmark/node/Node.java | 4 +- .../java/org/commonmark/node/SourceSpans.java | 3 +- .../parser/block/AbstractBlockParser.java | 3 +- .../renderer/html/CoreHtmlNodeRenderer.java | 51 ++++++++++--------- .../renderer/html/DefaultUrlSanitizer.java | 2 +- .../commonmark/renderer/html/HtmlWriter.java | 3 +- .../markdown/CoreMarkdownNodeRenderer.java | 51 ++++++++++--------- .../renderer/markdown/MarkdownRenderer.java | 2 +- .../text/CoreTextContentNodeRenderer.java | 47 +++++++++-------- 40 files changed, 206 insertions(+), 124 deletions(-) diff --git a/commonmark-ext-autolink/src/main/java/org/commonmark/ext/autolink/AutolinkExtension.java b/commonmark-ext-autolink/src/main/java/org/commonmark/ext/autolink/AutolinkExtension.java index 14222121c..8d24b5769 100644 --- a/commonmark-ext-autolink/src/main/java/org/commonmark/ext/autolink/AutolinkExtension.java +++ b/commonmark-ext-autolink/src/main/java/org/commonmark/ext/autolink/AutolinkExtension.java @@ -1,5 +1,6 @@ package org.commonmark.ext.autolink; +import java.util.Arrays; import java.util.EnumSet; import java.util.Set; import org.commonmark.Extension; @@ -57,7 +58,12 @@ public Builder linkTypes(AutolinkType... linkTypes) { throw new NullPointerException("linkTypes must not be null"); } - return this.linkTypes(Set.of(linkTypes)); + if (linkTypes.length == 0) { + throw new IllegalArgumentException("linkTypes must not be empty"); + } + + this.linkTypes = EnumSet.copyOf(Arrays.asList(linkTypes)); + return this; } /** diff --git a/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/FootnotesExtension.java b/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/FootnotesExtension.java index 4517d14d6..f1114249b 100644 --- a/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/FootnotesExtension.java +++ b/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/FootnotesExtension.java @@ -1,5 +1,6 @@ package org.commonmark.ext.footnotes; +import java.util.Collections; import java.util.Set; import org.commonmark.Extension; import org.commonmark.ext.footnotes.internal.*; @@ -83,7 +84,7 @@ public NodeRenderer create(MarkdownNodeRendererContext context) { @Override public Set getSpecialCharacters() { - return Set.of(); + return Collections.emptySet(); } }); } diff --git a/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteBlockParser.java b/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteBlockParser.java index db11b906a..2bda7ad0a 100644 --- a/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteBlockParser.java +++ b/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteBlockParser.java @@ -1,5 +1,6 @@ package org.commonmark.ext.footnotes.internal; +import java.util.Collections; import java.util.List; import org.commonmark.ext.footnotes.FootnoteDefinition; import org.commonmark.node.Block; @@ -54,7 +55,7 @@ public BlockContinue tryContinue(ParserState parserState) { public List> getDefinitions() { var map = new DefinitionMap<>(FootnoteDefinition.class); map.putIfAbsent(block.getLabel(), block); - return List.of(map); + return Collections.singletonList(map); } public static class Factory implements BlockParserFactory { diff --git a/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteHtmlNodeRenderer.java b/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteHtmlNodeRenderer.java index db88a8269..2c2d42513 100644 --- a/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteHtmlNodeRenderer.java +++ b/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteHtmlNodeRenderer.java @@ -82,7 +82,12 @@ public FootnoteHtmlNodeRenderer(HtmlNodeRendererContext context) { @Override public Set> getNodeTypes() { - return Set.of(FootnoteReference.class, InlineFootnote.class, FootnoteDefinition.class); + return Collections.unmodifiableSet( + new HashSet<>( + Arrays.asList( + FootnoteReference.class, + InlineFootnote.class, + FootnoteDefinition.class))); } @Override @@ -203,7 +208,10 @@ private ReferenceInfo registerReference(Node node, String label) { } private void renderReference(Node node, ReferenceInfo referenceInfo) { - html.tag("sup", context.extendAttributes(node, "sup", Map.of("class", "footnote-ref"))); + html.tag( + "sup", + context.extendAttributes( + node, "sup", Collections.singletonMap("class", "footnote-ref"))); var href = "#" + referenceInfo.definitionId; var attrs = new LinkedHashMap(); @@ -231,7 +239,7 @@ private void renderDefinition(Node def, ReferencedDefinition referencedDefinitio // Because we're manually rendering the

for the last paragraph, do the same // for all other paragraphs for consistency (Paragraph rendering might be // overwritten by a custom renderer). - html.tag("p", context.extendAttributes(node, "p", Map.of())); + html.tag("p", context.extendAttributes(node, "p", Collections.emptyMap())); renderChildren(node); html.tag("/p"); html.line(); @@ -241,14 +249,14 @@ private void renderDefinition(Node def, ReferencedDefinition referencedDefinitio node = node.getNext(); } - html.tag("p", context.extendAttributes(lastParagraph, "p", Map.of())); + html.tag("p", context.extendAttributes(lastParagraph, "p", Collections.emptyMap())); renderChildren(lastParagraph); html.raw(" "); renderBackrefs(def, referencedDefinition); html.tag("/p"); html.line(); } else if (def instanceof InlineFootnote) { - html.tag("p", context.extendAttributes(def, "p", Map.of())); + html.tag("p", context.extendAttributes(def, "p", Collections.emptyMap())); renderChildren(def); html.raw(" "); renderBackrefs(def, referencedDefinition); @@ -283,7 +291,8 @@ private void renderBackrefs(Node def, ReferencedDefinition referencedDefinition) if (refNumber > 1) { html.tag( "sup", - context.extendAttributes(def, "sup", Map.of("class", "footnote-ref"))); + context.extendAttributes( + def, "sup", Collections.singletonMap("class", "footnote-ref"))); html.raw(String.valueOf(refNumber)); html.tag("/sup"); } diff --git a/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteMarkdownNodeRenderer.java b/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteMarkdownNodeRenderer.java index 0e654cf5e..a812a822d 100644 --- a/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteMarkdownNodeRenderer.java +++ b/commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteMarkdownNodeRenderer.java @@ -1,5 +1,8 @@ package org.commonmark.ext.footnotes.internal; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; import java.util.Set; import org.commonmark.ext.footnotes.FootnoteDefinition; import org.commonmark.ext.footnotes.FootnoteReference; @@ -21,7 +24,12 @@ public FootnoteMarkdownNodeRenderer(MarkdownNodeRendererContext context) { @Override public Set> getNodeTypes() { - return Set.of(FootnoteReference.class, InlineFootnote.class, FootnoteDefinition.class); + return Collections.unmodifiableSet( + new HashSet<>( + Arrays.asList( + FootnoteReference.class, + InlineFootnote.class, + FootnoteDefinition.class))); } @Override diff --git a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java index 3035c9952..9c4515855 100644 --- a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java +++ b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java @@ -1,5 +1,6 @@ package org.commonmark.ext.gfm.alerts; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Locale; @@ -121,7 +122,7 @@ public NodeRenderer create(MarkdownNodeRendererContext context) { @Override public Set getSpecialCharacters() { - return Set.of(); + return Collections.emptySet(); } }); } diff --git a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertBlockParser.java b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertBlockParser.java index 67acbe475..b5ecd23e2 100644 --- a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertBlockParser.java +++ b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertBlockParser.java @@ -1,6 +1,6 @@ package org.commonmark.ext.gfm.alerts.internal; -import java.util.List; +import java.util.Collections; import java.util.Locale; import java.util.Set; import java.util.regex.Pattern; @@ -91,7 +91,7 @@ public void parseInlines(InlineParser inlineParser) { // Set source spans on the title node from the source line var sourceSpan = titleLine.getSourceSpan(); if (sourceSpan != null) { - titleNode.setSourceSpans(List.of(sourceSpan)); + titleNode.setSourceSpans(Collections.singletonList(sourceSpan)); } // Body blocks were attached as children during block parsing. Prepend the title. diff --git a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertHtmlNodeRenderer.java b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertHtmlNodeRenderer.java index 30aea6f04..5f5fe78f8 100644 --- a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertHtmlNodeRenderer.java +++ b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertHtmlNodeRenderer.java @@ -1,5 +1,6 @@ package org.commonmark.ext.gfm.alerts.internal; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; import org.commonmark.ext.gfm.alerts.Alert; @@ -40,7 +41,9 @@ protected void renderAlert(Alert alert) { // Render alert title htmlWriter.tag( - "p", context.extendAttributes(alert, "p", Map.of("class", "markdown-alert-title"))); + "p", + context.extendAttributes( + alert, "p", Collections.singletonMap("class", "markdown-alert-title"))); var first = alert.getFirstChild(); if (first instanceof AlertTitle) { renderChildren(first); diff --git a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertNodeRenderer.java b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertNodeRenderer.java index ff4bdf6ad..23926bf91 100644 --- a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertNodeRenderer.java +++ b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/internal/AlertNodeRenderer.java @@ -1,5 +1,6 @@ package org.commonmark.ext.gfm.alerts.internal; +import java.util.Collections; import java.util.Set; import org.commonmark.ext.gfm.alerts.Alert; import org.commonmark.ext.gfm.alerts.AlertTitle; @@ -10,7 +11,7 @@ public abstract class AlertNodeRenderer implements NodeRenderer { @Override public Set> getNodeTypes() { - return Set.of(Alert.class); + return Collections.singleton(Alert.class); } @Override diff --git a/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java b/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java index 4b18b7d66..f3b01fee3 100644 --- a/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java +++ b/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java @@ -1,5 +1,6 @@ package org.commonmark.ext.gfm.strikethrough; +import java.util.Collections; import java.util.Set; import org.commonmark.Extension; import org.commonmark.ext.gfm.strikethrough.internal.StrikethroughDelimiterProcessor; @@ -96,7 +97,7 @@ public NodeRenderer create(MarkdownNodeRendererContext context) { @Override public Set getSpecialCharacters() { - return Set.of('~'); + return Collections.singleton('~'); } }); } diff --git a/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/internal/StrikethroughHtmlNodeRenderer.java b/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/internal/StrikethroughHtmlNodeRenderer.java index e5ee31f4e..033258d7c 100644 --- a/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/internal/StrikethroughHtmlNodeRenderer.java +++ b/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/internal/StrikethroughHtmlNodeRenderer.java @@ -1,5 +1,6 @@ package org.commonmark.ext.gfm.strikethrough.internal; +import java.util.Collections; import java.util.Map; import org.commonmark.node.Node; import org.commonmark.renderer.html.HtmlNodeRendererContext; @@ -17,7 +18,8 @@ public StrikethroughHtmlNodeRenderer(HtmlNodeRendererContext context) { @Override public void render(Node node) { - Map attributes = context.extendAttributes(node, "del", Map.of()); + Map attributes = + context.extendAttributes(node, "del", Collections.emptyMap()); html.tag("del", attributes); renderChildren(node); html.tag("/del"); diff --git a/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/internal/StrikethroughNodeRenderer.java b/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/internal/StrikethroughNodeRenderer.java index 56d94d300..1c4254671 100644 --- a/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/internal/StrikethroughNodeRenderer.java +++ b/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/internal/StrikethroughNodeRenderer.java @@ -1,5 +1,6 @@ package org.commonmark.ext.gfm.strikethrough.internal; +import java.util.Collections; import java.util.Set; import org.commonmark.ext.gfm.strikethrough.Strikethrough; import org.commonmark.node.Node; @@ -9,6 +10,6 @@ abstract class StrikethroughNodeRenderer implements NodeRenderer { @Override public Set> getNodeTypes() { - return Set.of(Strikethrough.class); + return Collections.singleton(Strikethrough.class); } } diff --git a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java index 0db0ea513..4646c18dd 100644 --- a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java +++ b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java @@ -1,5 +1,6 @@ package org.commonmark.ext.gfm.tables; +import java.util.Collections; import java.util.Set; import org.commonmark.Extension; import org.commonmark.ext.gfm.tables.internal.TableBlockParser; @@ -78,7 +79,7 @@ public NodeRenderer create(MarkdownNodeRendererContext context) { @Override public Set getSpecialCharacters() { - return Set.of('|'); + return Collections.singleton('|'); } }); } diff --git a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableHtmlNodeRenderer.java b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableHtmlNodeRenderer.java index 81e584c9d..d0039d41d 100644 --- a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableHtmlNodeRenderer.java +++ b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableHtmlNodeRenderer.java @@ -1,5 +1,6 @@ package org.commonmark.ext.gfm.tables.internal; +import java.util.Collections; import java.util.Map; import org.commonmark.ext.gfm.tables.*; import org.commonmark.node.Node; @@ -63,15 +64,17 @@ protected void renderCell(TableCell tableCell) { } private Map getAttributes(Node node, String tagName) { - return context.extendAttributes(node, tagName, Map.of()); + return context.extendAttributes(node, tagName, Collections.emptyMap()); } private Map getCellAttributes(TableCell tableCell, String tagName) { if (tableCell.getAlignment() != null) { return context.extendAttributes( - tableCell, tagName, Map.of("align", getAlignValue(tableCell.getAlignment()))); + tableCell, + tagName, + Collections.singletonMap("align", getAlignValue(tableCell.getAlignment()))); } else { - return context.extendAttributes(tableCell, tagName, Map.of()); + return context.extendAttributes(tableCell, tagName, Collections.emptyMap()); } } diff --git a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableNodeRenderer.java b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableNodeRenderer.java index 4e3a00815..3cfe17441 100644 --- a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableNodeRenderer.java +++ b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableNodeRenderer.java @@ -1,5 +1,8 @@ package org.commonmark.ext.gfm.tables.internal; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; import java.util.Set; import org.commonmark.ext.gfm.tables.*; import org.commonmark.node.Node; @@ -9,12 +12,14 @@ abstract class TableNodeRenderer implements NodeRenderer { @Override public Set> getNodeTypes() { - return Set.of( - TableBlock.class, - TableHead.class, - TableBody.class, - TableRow.class, - TableCell.class); + return Collections.unmodifiableSet( + new HashSet<>( + Arrays.asList( + TableBlock.class, + TableHead.class, + TableBody.class, + TableRow.class, + TableCell.class))); } @Override diff --git a/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesDelimiterProcessor.java b/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesDelimiterProcessor.java index 53ba882c9..e7a3062e4 100644 --- a/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesDelimiterProcessor.java +++ b/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesDelimiterProcessor.java @@ -12,7 +12,8 @@ public class ImageAttributesDelimiterProcessor implements DelimiterProcessor { // Only allow a defined set of attributes to be used. - private static final Set SUPPORTED_ATTRIBUTES = Set.of("width", "height"); + private static final Set SUPPORTED_ATTRIBUTES = + Collections.unmodifiableSet(new HashSet<>(Arrays.asList("width", "height"))); @Override public char getOpeningCharacter() { diff --git a/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java b/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java index a39b77af8..b180e5db5 100644 --- a/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java +++ b/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java @@ -1,5 +1,6 @@ package org.commonmark.ext.ins; +import java.util.Collections; import java.util.Set; import org.commonmark.Extension; import org.commonmark.ext.ins.internal.InsDelimiterProcessor; @@ -64,7 +65,7 @@ public Set getSpecialCharacters() { // We technically don't need to escape single occurrences of +, but that's // all the extension API // exposes currently. - return Set.of('+'); + return Collections.singleton('+'); } }); } diff --git a/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/internal/InsHtmlNodeRenderer.java b/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/internal/InsHtmlNodeRenderer.java index d4defcbdc..c4e55dd9f 100644 --- a/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/internal/InsHtmlNodeRenderer.java +++ b/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/internal/InsHtmlNodeRenderer.java @@ -1,5 +1,6 @@ package org.commonmark.ext.ins.internal; +import java.util.Collections; import java.util.Map; import org.commonmark.node.Node; import org.commonmark.renderer.html.HtmlNodeRendererContext; @@ -17,7 +18,8 @@ public InsHtmlNodeRenderer(HtmlNodeRendererContext context) { @Override public void render(Node node) { - Map attributes = context.extendAttributes(node, "ins", Map.of()); + Map attributes = + context.extendAttributes(node, "ins", Collections.emptyMap()); html.tag("ins", attributes); renderChildren(node); html.tag("/ins"); diff --git a/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/internal/InsNodeRenderer.java b/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/internal/InsNodeRenderer.java index 4e8e0283e..a31102f91 100644 --- a/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/internal/InsNodeRenderer.java +++ b/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/internal/InsNodeRenderer.java @@ -1,5 +1,6 @@ package org.commonmark.ext.ins.internal; +import java.util.Collections; import java.util.Set; import org.commonmark.ext.ins.Ins; import org.commonmark.node.Node; @@ -9,6 +10,6 @@ abstract class InsNodeRenderer implements NodeRenderer { @Override public Set> getNodeTypes() { - return Set.of(Ins.class); + return Collections.singleton(Ins.class); } } diff --git a/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java b/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java index abddc519a..efbee4f15 100644 --- a/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java +++ b/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java @@ -1,5 +1,6 @@ package org.commonmark.ext.task.list.items; +import java.util.Collections; import java.util.Set; import org.commonmark.Extension; import org.commonmark.ext.task.list.items.internal.TaskListItemHtmlNodeRenderer; @@ -53,7 +54,7 @@ public NodeRenderer create(MarkdownNodeRendererContext context) { @Override public Set getSpecialCharacters() { - return Set.of(); + return Collections.emptySet(); } }); } diff --git a/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/internal/TaskListItemNodeRenderer.java b/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/internal/TaskListItemNodeRenderer.java index 24efd4e7d..087ab9d27 100644 --- a/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/internal/TaskListItemNodeRenderer.java +++ b/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/internal/TaskListItemNodeRenderer.java @@ -1,5 +1,6 @@ package org.commonmark.ext.task.list.items.internal; +import java.util.Collections; import java.util.Set; import org.commonmark.ext.task.list.items.TaskListItemMarker; import org.commonmark.node.Node; @@ -8,6 +9,6 @@ public abstract class TaskListItemNodeRenderer implements NodeRenderer { @Override public Set> getNodeTypes() { - return Set.of(TaskListItemMarker.class); + return Collections.singleton(TaskListItemMarker.class); } } diff --git a/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/YamlFrontMatterExtension.java b/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/YamlFrontMatterExtension.java index 0617c8270..55234819d 100644 --- a/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/YamlFrontMatterExtension.java +++ b/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/YamlFrontMatterExtension.java @@ -1,5 +1,6 @@ package org.commonmark.ext.front.matter; +import java.util.Collections; import java.util.Objects; import java.util.Set; import org.commonmark.Extension; @@ -69,7 +70,7 @@ public NodeRenderer create(MarkdownNodeRendererContext context) { @Override public Set getSpecialCharacters() { - return Set.of(); + return Collections.emptySet(); } }); } diff --git a/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/internal/YamlFrontMatterNodeRenderer.java b/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/internal/YamlFrontMatterNodeRenderer.java index 607b621ec..53486d0c3 100644 --- a/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/internal/YamlFrontMatterNodeRenderer.java +++ b/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/internal/YamlFrontMatterNodeRenderer.java @@ -1,5 +1,6 @@ package org.commonmark.ext.front.matter.internal; +import java.util.Collections; import java.util.Set; import org.commonmark.ext.front.matter.YamlFrontMatterBlock; import org.commonmark.node.Node; @@ -8,6 +9,6 @@ abstract class YamlFrontMatterNodeRenderer implements NodeRenderer { @Override public Set> getNodeTypes() { - return Set.of(YamlFrontMatterBlock.class); + return Collections.singleton(YamlFrontMatterBlock.class); } } diff --git a/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java b/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java index 62b392b88..3724a8cf6 100644 --- a/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java @@ -20,7 +20,7 @@ public class DocumentParser implements ParserState { private static final Set> CORE_FACTORY_TYPES = new LinkedHashSet<>( - List.of( + Arrays.asList( BlockQuote.class, Heading.class, FencedCodeBlock.class, diff --git a/commonmark/src/main/java/org/commonmark/internal/InlineParserImpl.java b/commonmark/src/main/java/org/commonmark/internal/InlineParserImpl.java index e11e493f3..ffa2b51b4 100644 --- a/commonmark/src/main/java/org/commonmark/internal/InlineParserImpl.java +++ b/commonmark/src/main/java/org/commonmark/internal/InlineParserImpl.java @@ -90,7 +90,11 @@ private static Map calculateDelimiterProcessors( List delimiterProcessors) { var map = new HashMap(); addDelimiterProcessors( - List.of(new AsteriskDelimiterProcessor(), new UnderscoreDelimiterProcessor()), map); + Collections.unmodifiableList( + Arrays.asList( + new AsteriskDelimiterProcessor(), + new UnderscoreDelimiterProcessor())), + map); addDelimiterProcessors(delimiterProcessors, map); return map; } @@ -223,11 +227,11 @@ private List parseInline() { switch (c) { case '[': - return List.of(parseOpenBracket()); + return Collections.singletonList(parseOpenBracket()); case ']': - return List.of(parseCloseBracket()); + return Collections.singletonList(parseCloseBracket()); case '\n': - return List.of(parseLineBreak()); + return Collections.singletonList(parseLineBreak()); case Scanner.END: return null; } @@ -244,7 +248,7 @@ private List parseInline() { // No inline parser, delimiter or other special handling. if (!specialCharacters.get(c)) { - return List.of(parseText()); + return Collections.singletonList(parseText()); } List inlineParsers = this.inlineParsers.get(c); @@ -260,7 +264,7 @@ private List parseInline() { node.setSourceSpans( scanner.getSource(position, scanner.position()).getSourceSpans()); } - return List.of(node); + return Collections.singletonList(node); } else { // Reset position scanner.setPosition(position); @@ -277,7 +281,7 @@ private List parseInline() { } // If we get here, even for a special/delimiter character, we will just treat it as text. - return List.of(parseText()); + return Collections.singletonList(parseText()); } /** Attempt to parse delimiters like emphasis, strong emphasis or custom delimiters. */ @@ -334,7 +338,7 @@ private List parseLinkMarker() { contentPosition, lastBracket, lastDelimiter)); - return List.of(bangNode, bracketNode); + return Collections.unmodifiableList(Arrays.asList(bangNode, bracketNode)); } else { return null; } diff --git a/commonmark/src/main/java/org/commonmark/internal/ParagraphParser.java b/commonmark/src/main/java/org/commonmark/internal/ParagraphParser.java index 47f69b34a..9a1e5ec1a 100644 --- a/commonmark/src/main/java/org/commonmark/internal/ParagraphParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/ParagraphParser.java @@ -1,5 +1,6 @@ package org.commonmark.internal; +import java.util.Collections; import java.util.List; import org.commonmark.node.*; import org.commonmark.parser.InlineParser; @@ -52,7 +53,7 @@ public List> getDefinitions() { for (var def : linkReferenceDefinitionParser.getDefinitions()) { map.putIfAbsent(def.getLabel(), def); } - return List.of(map); + return Collections.singletonList(map); } @Override diff --git a/commonmark/src/main/java/org/commonmark/internal/inline/AutolinkInlineParser.java b/commonmark/src/main/java/org/commonmark/internal/inline/AutolinkInlineParser.java index f84a62210..1bd631469 100644 --- a/commonmark/src/main/java/org/commonmark/internal/inline/AutolinkInlineParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/inline/AutolinkInlineParser.java @@ -1,5 +1,6 @@ package org.commonmark.internal.inline; +import java.util.Collections; import java.util.Set; import java.util.regex.Pattern; import org.commonmark.node.Link; @@ -56,7 +57,7 @@ public ParsedInline tryParse(InlineParserState inlineParserState) { public static class Factory implements InlineContentParserFactory { @Override public Set getTriggerCharacters() { - return Set.of('<'); + return Collections.singleton('<'); } @Override diff --git a/commonmark/src/main/java/org/commonmark/internal/inline/BackslashInlineParser.java b/commonmark/src/main/java/org/commonmark/internal/inline/BackslashInlineParser.java index c4e8f3aff..c639606a0 100644 --- a/commonmark/src/main/java/org/commonmark/internal/inline/BackslashInlineParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/inline/BackslashInlineParser.java @@ -1,5 +1,6 @@ package org.commonmark.internal.inline; +import java.util.Collections; import java.util.Set; import java.util.regex.Pattern; import org.commonmark.internal.util.Escaping; @@ -37,7 +38,7 @@ public ParsedInline tryParse(InlineParserState inlineParserState) { public static class Factory implements InlineContentParserFactory { @Override public Set getTriggerCharacters() { - return Set.of('\\'); + return Collections.singleton('\\'); } @Override diff --git a/commonmark/src/main/java/org/commonmark/internal/inline/BackticksInlineParser.java b/commonmark/src/main/java/org/commonmark/internal/inline/BackticksInlineParser.java index 73e5398bf..89b862571 100644 --- a/commonmark/src/main/java/org/commonmark/internal/inline/BackticksInlineParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/inline/BackticksInlineParser.java @@ -1,5 +1,6 @@ package org.commonmark.internal.inline; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -77,7 +78,7 @@ public ParsedInline tryParse(InlineParserState inlineParserState) { public static class Factory implements InlineContentParserFactory { @Override public Set getTriggerCharacters() { - return Set.of('`'); + return Collections.singleton('`'); } @Override diff --git a/commonmark/src/main/java/org/commonmark/internal/inline/EntityInlineParser.java b/commonmark/src/main/java/org/commonmark/internal/inline/EntityInlineParser.java index e3ed0c08b..a639fc832 100644 --- a/commonmark/src/main/java/org/commonmark/internal/inline/EntityInlineParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/inline/EntityInlineParser.java @@ -1,5 +1,6 @@ package org.commonmark.internal.inline; +import java.util.Collections; import java.util.Set; import org.commonmark.internal.util.Html5Entities; import org.commonmark.node.Text; @@ -58,7 +59,7 @@ public static class Factory implements InlineContentParserFactory { @Override public Set getTriggerCharacters() { - return Set.of('&'); + return Collections.singleton('&'); } @Override diff --git a/commonmark/src/main/java/org/commonmark/internal/inline/HtmlInlineParser.java b/commonmark/src/main/java/org/commonmark/internal/inline/HtmlInlineParser.java index a34346da0..babcb90fb 100644 --- a/commonmark/src/main/java/org/commonmark/internal/inline/HtmlInlineParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/inline/HtmlInlineParser.java @@ -1,5 +1,6 @@ package org.commonmark.internal.inline; +import java.util.Collections; import java.util.Set; import org.commonmark.node.HtmlInline; import org.commonmark.parser.beta.*; @@ -260,7 +261,7 @@ public static class Factory implements InlineContentParserFactory { @Override public Set getTriggerCharacters() { - return Set.of('<'); + return Collections.singleton('<'); } @Override diff --git a/commonmark/src/main/java/org/commonmark/node/Node.java b/commonmark/src/main/java/org/commonmark/node/Node.java index adc64838c..06804bc3e 100644 --- a/commonmark/src/main/java/org/commonmark/node/Node.java +++ b/commonmark/src/main/java/org/commonmark/node/Node.java @@ -120,7 +120,9 @@ public void insertBefore(Node sibling) { * @since 0.16.0 */ public List getSourceSpans() { - return sourceSpans != null ? Collections.unmodifiableList(sourceSpans) : List.of(); + return sourceSpans != null + ? Collections.unmodifiableList(sourceSpans) + : Collections.emptyList(); } /** diff --git a/commonmark/src/main/java/org/commonmark/node/SourceSpans.java b/commonmark/src/main/java/org/commonmark/node/SourceSpans.java index 945f1c19a..a13053606 100644 --- a/commonmark/src/main/java/org/commonmark/node/SourceSpans.java +++ b/commonmark/src/main/java/org/commonmark/node/SourceSpans.java @@ -1,6 +1,7 @@ package org.commonmark.node; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -17,7 +18,7 @@ public static SourceSpans empty() { } public List getSourceSpans() { - return sourceSpans != null ? sourceSpans : List.of(); + return sourceSpans != null ? sourceSpans : Collections.emptyList(); } public void addAllFrom(Iterable nodes) { diff --git a/commonmark/src/main/java/org/commonmark/parser/block/AbstractBlockParser.java b/commonmark/src/main/java/org/commonmark/parser/block/AbstractBlockParser.java index 69610a664..9e6861dee 100644 --- a/commonmark/src/main/java/org/commonmark/parser/block/AbstractBlockParser.java +++ b/commonmark/src/main/java/org/commonmark/parser/block/AbstractBlockParser.java @@ -1,5 +1,6 @@ package org.commonmark.parser.block; +import java.util.Collections; import java.util.List; import org.commonmark.node.Block; import org.commonmark.node.DefinitionMap; @@ -34,7 +35,7 @@ public void addSourceSpan(SourceSpan sourceSpan) { @Override public List> getDefinitions() { - return List.of(); + return Collections.emptyList(); } @Override diff --git a/commonmark/src/main/java/org/commonmark/renderer/html/CoreHtmlNodeRenderer.java b/commonmark/src/main/java/org/commonmark/renderer/html/CoreHtmlNodeRenderer.java index d5e0d8afc..418bf606d 100644 --- a/commonmark/src/main/java/org/commonmark/renderer/html/CoreHtmlNodeRenderer.java +++ b/commonmark/src/main/java/org/commonmark/renderer/html/CoreHtmlNodeRenderer.java @@ -1,5 +1,8 @@ package org.commonmark.renderer.html; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; @@ -21,27 +24,29 @@ public CoreHtmlNodeRenderer(HtmlNodeRendererContext context) { @Override public Set> getNodeTypes() { - return Set.of( - Document.class, - Heading.class, - Paragraph.class, - BlockQuote.class, - BulletList.class, - FencedCodeBlock.class, - HtmlBlock.class, - ThematicBreak.class, - IndentedCodeBlock.class, - Link.class, - ListItem.class, - OrderedList.class, - Image.class, - Emphasis.class, - StrongEmphasis.class, - Text.class, - Code.class, - HtmlInline.class, - SoftLineBreak.class, - HardLineBreak.class); + return Collections.unmodifiableSet( + new HashSet<>( + Arrays.asList( + Document.class, + Heading.class, + Paragraph.class, + BlockQuote.class, + BulletList.class, + FencedCodeBlock.class, + HtmlBlock.class, + ThematicBreak.class, + IndentedCodeBlock.class, + Link.class, + ListItem.class, + OrderedList.class, + Image.class, + Emphasis.class, + StrongEmphasis.class, + Text.class, + Code.class, + HtmlInline.class, + SoftLineBreak.class, + HardLineBreak.class))); } @Override @@ -140,7 +145,7 @@ public void visit(ThematicBreak thematicBreak) { @Override public void visit(IndentedCodeBlock indentedCodeBlock) { - renderCodeBlock(indentedCodeBlock.getLiteral(), indentedCodeBlock, Map.of()); + renderCodeBlock(indentedCodeBlock.getLiteral(), indentedCodeBlock, Collections.emptyMap()); } @Override @@ -294,7 +299,7 @@ private boolean isInTightList(Paragraph paragraph) { } private Map getAttrs(Node node, String tagName) { - return getAttrs(node, tagName, Map.of()); + return getAttrs(node, tagName, Collections.emptyMap()); } private Map getAttrs( diff --git a/commonmark/src/main/java/org/commonmark/renderer/html/DefaultUrlSanitizer.java b/commonmark/src/main/java/org/commonmark/renderer/html/DefaultUrlSanitizer.java index bdf59e809..a0a439b63 100644 --- a/commonmark/src/main/java/org/commonmark/renderer/html/DefaultUrlSanitizer.java +++ b/commonmark/src/main/java/org/commonmark/renderer/html/DefaultUrlSanitizer.java @@ -11,7 +11,7 @@ public class DefaultUrlSanitizer implements UrlSanitizer { private Set protocols; public DefaultUrlSanitizer() { - this(List.of("http", "https", "mailto", "data")); + this(Collections.unmodifiableList(Arrays.asList("http", "https", "mailto", "data"))); } public DefaultUrlSanitizer(Collection protocols) { diff --git a/commonmark/src/main/java/org/commonmark/renderer/html/HtmlWriter.java b/commonmark/src/main/java/org/commonmark/renderer/html/HtmlWriter.java index ebe638dc3..0b3255c9c 100644 --- a/commonmark/src/main/java/org/commonmark/renderer/html/HtmlWriter.java +++ b/commonmark/src/main/java/org/commonmark/renderer/html/HtmlWriter.java @@ -1,13 +1,14 @@ package org.commonmark.renderer.html; import java.io.IOException; +import java.util.Collections; import java.util.Map; import java.util.Objects; import org.commonmark.internal.util.Escaping; public class HtmlWriter { - private static final Map NO_ATTRIBUTES = Map.of(); + private static final Map NO_ATTRIBUTES = Collections.emptyMap(); private final Appendable buffer; private char lastChar = 0; diff --git a/commonmark/src/main/java/org/commonmark/renderer/markdown/CoreMarkdownNodeRenderer.java b/commonmark/src/main/java/org/commonmark/renderer/markdown/CoreMarkdownNodeRenderer.java index d4025128b..1c6ee2572 100644 --- a/commonmark/src/main/java/org/commonmark/renderer/markdown/CoreMarkdownNodeRenderer.java +++ b/commonmark/src/main/java/org/commonmark/renderer/markdown/CoreMarkdownNodeRenderer.java @@ -1,5 +1,8 @@ package org.commonmark.renderer.markdown; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.regex.Matcher; @@ -54,27 +57,29 @@ public CoreMarkdownNodeRenderer(MarkdownNodeRendererContext context) { @Override public Set> getNodeTypes() { - return Set.of( - BlockQuote.class, - BulletList.class, - Code.class, - Document.class, - Emphasis.class, - FencedCodeBlock.class, - HardLineBreak.class, - Heading.class, - HtmlBlock.class, - HtmlInline.class, - Image.class, - IndentedCodeBlock.class, - Link.class, - ListItem.class, - OrderedList.class, - Paragraph.class, - SoftLineBreak.class, - StrongEmphasis.class, - Text.class, - ThematicBreak.class); + return Collections.unmodifiableSet( + new HashSet<>( + Arrays.asList( + BlockQuote.class, + BulletList.class, + Code.class, + Document.class, + Emphasis.class, + FencedCodeBlock.class, + HardLineBreak.class, + Heading.class, + HtmlBlock.class, + HtmlInline.class, + Image.class, + IndentedCodeBlock.class, + Link.class, + ListItem.class, + OrderedList.class, + Paragraph.class, + SoftLineBreak.class, + StrongEmphasis.class, + Text.class, + ThematicBreak.class))); } @Override @@ -505,9 +510,9 @@ private static List getLines(String literal) { if (parts[parts.length - 1].isEmpty()) { // But we don't want the last empty string, as "\n" is used as a line terminator (not a // separator), so return without the last element. - return List.of(parts).subList(0, parts.length - 1); + return Collections.unmodifiableList(Arrays.asList(parts)).subList(0, parts.length - 1); } else { - return List.of(parts); + return Collections.unmodifiableList(Arrays.asList(parts)); } } diff --git a/commonmark/src/main/java/org/commonmark/renderer/markdown/MarkdownRenderer.java b/commonmark/src/main/java/org/commonmark/renderer/markdown/MarkdownRenderer.java index edef645a4..d31a261da 100644 --- a/commonmark/src/main/java/org/commonmark/renderer/markdown/MarkdownRenderer.java +++ b/commonmark/src/main/java/org/commonmark/renderer/markdown/MarkdownRenderer.java @@ -44,7 +44,7 @@ public NodeRenderer create(MarkdownNodeRendererContext context) { @Override public Set getSpecialCharacters() { - return Set.of(); + return Collections.emptySet(); } }); } diff --git a/commonmark/src/main/java/org/commonmark/renderer/text/CoreTextContentNodeRenderer.java b/commonmark/src/main/java/org/commonmark/renderer/text/CoreTextContentNodeRenderer.java index 22718d088..a20eac7c1 100644 --- a/commonmark/src/main/java/org/commonmark/renderer/text/CoreTextContentNodeRenderer.java +++ b/commonmark/src/main/java/org/commonmark/renderer/text/CoreTextContentNodeRenderer.java @@ -1,5 +1,8 @@ package org.commonmark.renderer.text; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; import java.util.Set; import org.commonmark.node.*; import org.commonmark.renderer.NodeRenderer; @@ -21,27 +24,29 @@ public CoreTextContentNodeRenderer(TextContentNodeRendererContext context) { @Override public Set> getNodeTypes() { - return Set.of( - Document.class, - Heading.class, - Paragraph.class, - BlockQuote.class, - BulletList.class, - FencedCodeBlock.class, - HtmlBlock.class, - ThematicBreak.class, - IndentedCodeBlock.class, - Link.class, - ListItem.class, - OrderedList.class, - Image.class, - Emphasis.class, - StrongEmphasis.class, - Text.class, - Code.class, - HtmlInline.class, - SoftLineBreak.class, - HardLineBreak.class); + return Collections.unmodifiableSet( + new HashSet<>( + Arrays.asList( + Document.class, + Heading.class, + Paragraph.class, + BlockQuote.class, + BulletList.class, + FencedCodeBlock.class, + HtmlBlock.class, + ThematicBreak.class, + IndentedCodeBlock.class, + Link.class, + ListItem.class, + OrderedList.class, + Image.class, + Emphasis.class, + StrongEmphasis.class, + Text.class, + Code.class, + HtmlInline.class, + SoftLineBreak.class, + HardLineBreak.class))); } @Override