From 3ec6e01cdc51660bed19c05895ced95e52c2db2d Mon Sep 17 00:00:00 2001
From: Shai Almog <67850168+shai-almog@users.noreply.github.com>
Date: Fri, 6 Feb 2026 20:01:39 +0200
Subject: [PATCH 1/8] Revert BUILDING.md Javadoc note
---
maven/pom.xml | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/maven/pom.xml b/maven/pom.xml
index 98dc96f004..3000b6090b 100644
--- a/maven/pom.xml
+++ b/maven/pom.xml
@@ -407,6 +407,19 @@
none
false
+
+
+
+ ]]>
--allow-script-in-comments
@@ -574,4 +587,4 @@
-
\ No newline at end of file
+
From b68d0391c4669190eac053b662348b87a52afd6d Mon Sep 17 00:00:00 2001
From: Shai Almog <67850168+shai-almog@users.noreply.github.com>
Date: Fri, 6 Feb 2026 20:47:51 +0200
Subject: [PATCH 2/8] Bundle JavaDoc syntax highlighting assets
---
maven/javadoc-resources/highlight.css | 17 ++++++
maven/javadoc-resources/highlight.min.js | 59 +++++++++++++++++++
.../javadoc-highlight-init.js | 10 ++++
maven/pom.xml | 20 ++-----
4 files changed, 92 insertions(+), 14 deletions(-)
create mode 100644 maven/javadoc-resources/highlight.css
create mode 100644 maven/javadoc-resources/highlight.min.js
create mode 100644 maven/javadoc-resources/javadoc-highlight-init.js
diff --git a/maven/javadoc-resources/highlight.css b/maven/javadoc-resources/highlight.css
new file mode 100644
index 0000000000..34dfb61e21
--- /dev/null
+++ b/maven/javadoc-resources/highlight.css
@@ -0,0 +1,17 @@
+pre code {
+ color: #24292e;
+}
+
+.javadoc-keyword {
+ color: #d73a49;
+ font-weight: 600;
+}
+
+.javadoc-string {
+ color: #032f62;
+}
+
+.javadoc-comment {
+ color: #6a737d;
+ font-style: italic;
+}
diff --git a/maven/javadoc-resources/highlight.min.js b/maven/javadoc-resources/highlight.min.js
new file mode 100644
index 0000000000..46c06fc498
--- /dev/null
+++ b/maven/javadoc-resources/highlight.min.js
@@ -0,0 +1,59 @@
+(function(){
+ const KEYWORDS = [
+ 'abstract','assert','boolean','break','byte','case','catch','char','class','const','continue',
+ 'default','do','double','else','enum','extends','final','finally','float','for','goto',
+ 'if','implements','import','instanceof','int','interface','long','native','new','package',
+ 'private','protected','public','return','short','static','strictfp','super','switch',
+ 'synchronized','this','throw','throws','transient','try','void','volatile','while',
+ 'true','false','null'
+ ];
+
+ function escapeHtml(text) {
+ return text
+ .replace(/&/g, '&')
+ .replace(//g, '>')
+ .replace(/"/g, '"')
+ .replace(/'/g, ''');
+ }
+
+ function classifyToken(token) {
+ if (token.startsWith('/*') || token.startsWith('//')) {
+ return 'javadoc-comment';
+ }
+ if (token.startsWith('"') || token.startsWith("'")) {
+ return 'javadoc-string';
+ }
+ return 'javadoc-keyword';
+ }
+
+ function highlightJava(text) {
+ const keywordPattern = KEYWORDS.join('|');
+ const tokenPattern = new RegExp(
+ '(\\/\\*[\\s\\S]*?\\*\\/|\\/\\/[^\\n]*|"(?:\\\\.|[^"\\\\])*"|\'(?:\\\\.|[^\'\\\\])*\'|\\b(?:' + keywordPattern + ')\\b)',
+ 'g'
+ );
+
+ let result = '';
+ let lastIndex = 0;
+ let match;
+ while ((match = tokenPattern.exec(text)) !== null) {
+ const token = match[0];
+ result += escapeHtml(text.slice(lastIndex, match.index));
+ const tokenClass = classifyToken(token);
+ result += '' + escapeHtml(token) + '';
+ lastIndex = match.index + token.length;
+ }
+ result += escapeHtml(text.slice(lastIndex));
+ return result;
+ }
+
+ function highlightElement(element) {
+ const text = element.textContent || '';
+ element.innerHTML = highlightJava(text);
+ }
+
+ window.Cn1JavaDocHighlight = {
+ highlightElement
+ };
+})();
diff --git a/maven/javadoc-resources/javadoc-highlight-init.js b/maven/javadoc-resources/javadoc-highlight-init.js
new file mode 100644
index 0000000000..854be8980c
--- /dev/null
+++ b/maven/javadoc-resources/javadoc-highlight-init.js
@@ -0,0 +1,10 @@
+document.addEventListener('DOMContentLoaded', () => {
+ document.querySelectorAll('pre code').forEach((block) => {
+ const className = block.className || '';
+ if (className.includes('language-java') || className.includes('lang-java')) {
+ if (window.Cn1JavaDocHighlight) {
+ window.Cn1JavaDocHighlight.highlightElement(block);
+ }
+ }
+ });
+});
diff --git a/maven/pom.xml b/maven/pom.xml
index 3000b6090b..60260b498c 100644
--- a/maven/pom.xml
+++ b/maven/pom.xml
@@ -407,21 +407,13 @@
none
false
-
-
-
- ]]>
- --allow-script-in-comments
+ --add-stylesheet
+ ${project.basedir}/javadoc-resources/highlight.css
+ --add-script
+ ${project.basedir}/javadoc-resources/highlight.min.js
+ --add-script
+ ${project.basedir}/javadoc-resources/javadoc-highlight-init.js
From dd3894c289d1c1d934c4b94e2d125e8fd2bf44b1 Mon Sep 17 00:00:00 2001
From: Shai Almog <67850168+shai-almog@users.noreply.github.com>
Date: Fri, 6 Feb 2026 20:57:44 +0200
Subject: [PATCH 3/8] Fix javadoc asset paths and initialization
---
maven/javadoc-resources/javadoc-highlight-init.js | 11 +++++++----
maven/pom.xml | 6 +++---
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/maven/javadoc-resources/javadoc-highlight-init.js b/maven/javadoc-resources/javadoc-highlight-init.js
index 854be8980c..50d1e80241 100644
--- a/maven/javadoc-resources/javadoc-highlight-init.js
+++ b/maven/javadoc-resources/javadoc-highlight-init.js
@@ -1,10 +1,13 @@
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('pre code').forEach((block) => {
const className = block.className || '';
- if (className.includes('language-java') || className.includes('lang-java')) {
- if (window.Cn1JavaDocHighlight) {
- window.Cn1JavaDocHighlight.highlightElement(block);
- }
+ const shouldHighlight =
+ className === '' ||
+ className.includes('language-') ||
+ className.includes('lang-');
+
+ if (shouldHighlight && window.Cn1JavaDocHighlight) {
+ window.Cn1JavaDocHighlight.highlightElement(block);
}
});
});
diff --git a/maven/pom.xml b/maven/pom.xml
index 60260b498c..896635b759 100644
--- a/maven/pom.xml
+++ b/maven/pom.xml
@@ -409,11 +409,11 @@
false
--add-stylesheet
- ${project.basedir}/javadoc-resources/highlight.css
+ ${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.css
--add-script
- ${project.basedir}/javadoc-resources/highlight.min.js
+ ${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.min.js
--add-script
- ${project.basedir}/javadoc-resources/javadoc-highlight-init.js
+ ${maven.multiModuleProjectDirectory}/javadoc-resources/javadoc-highlight-init.js
From 4b18b16526b65f3f64af33e32ff9e60139ddfd35 Mon Sep 17 00:00:00 2001
From: Shai Almog <67850168+shai-almog@users.noreply.github.com>
Date: Fri, 6 Feb 2026 21:12:58 +0200
Subject: [PATCH 4/8] Broaden Javadoc highlight targeting
---
.../javadoc-highlight-init.js | 29 ++++++++++++++-----
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/maven/javadoc-resources/javadoc-highlight-init.js b/maven/javadoc-resources/javadoc-highlight-init.js
index 50d1e80241..ec09b5ebc6 100644
--- a/maven/javadoc-resources/javadoc-highlight-init.js
+++ b/maven/javadoc-resources/javadoc-highlight-init.js
@@ -1,13 +1,26 @@
document.addEventListener('DOMContentLoaded', () => {
- document.querySelectorAll('pre code').forEach((block) => {
- const className = block.className || '';
- const shouldHighlight =
- className === '' ||
- className.includes('language-') ||
- className.includes('lang-');
+ const highlighter = window.Cn1JavaDocHighlight;
+ if (!highlighter) {
+ return;
+ }
- if (shouldHighlight && window.Cn1JavaDocHighlight) {
- window.Cn1JavaDocHighlight.highlightElement(block);
+ const shouldHighlight = (className) =>
+ className === '' || className.includes('language-') || className.includes('lang-');
+
+ document.querySelectorAll('pre').forEach((pre) => {
+ const code = pre.querySelector('code');
+ const target = code || pre;
+ if (shouldHighlight(target.className || '')) {
+ highlighter.highlightElement(target);
+ }
+ });
+
+ document.querySelectorAll('code').forEach((code) => {
+ if (code.closest('pre')) {
+ return;
+ }
+ if (shouldHighlight(code.className || '')) {
+ highlighter.highlightElement(code);
}
});
});
From 732ae00456d5d597d1ab102800975be00be08be0 Mon Sep 17 00:00:00 2001
From: Shai Almog <67850168+shai-almog@users.noreply.github.com>
Date: Fri, 6 Feb 2026 21:26:57 +0200
Subject: [PATCH 5/8] Inject highlight scripts into Javadoc head
---
maven/pom.xml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/maven/pom.xml b/maven/pom.xml
index 896635b759..55ac6bd224 100644
--- a/maven/pom.xml
+++ b/maven/pom.xml
@@ -407,6 +407,10 @@
none
false
+
+
+ ]]>
--add-stylesheet
${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.css
From 5961cd908fe285a2b38f4f14eed1a2fa7937d300 Mon Sep 17 00:00:00 2001
From: Shai Almog <67850168+shai-almog@users.noreply.github.com>
Date: Fri, 6 Feb 2026 21:35:50 +0200
Subject: [PATCH 6/8] Apply highlight options to javadoc execution
---
maven/pom.xml | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/maven/pom.xml b/maven/pom.xml
index 55ac6bd224..09bafc39a1 100644
--- a/maven/pom.xml
+++ b/maven/pom.xml
@@ -339,6 +339,18 @@
protected
false
none
+
+
+ ]]>
+
+ --add-stylesheet
+ ${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.css
+ --add-script
+ ${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.min.js
+ --add-script
+ ${maven.multiModuleProjectDirectory}/javadoc-resources/javadoc-highlight-init.js
+
From 21b07e51e492533f95abbffe001a6e5323c5b026 Mon Sep 17 00:00:00 2001
From: Shai Almog <67850168+shai-almog@users.noreply.github.com>
Date: Fri, 6 Feb 2026 21:43:50 +0200
Subject: [PATCH 7/8] Allow Javadoc script injection
---
maven/pom.xml | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/maven/pom.xml b/maven/pom.xml
index 09bafc39a1..4f43ccaa6a 100644
--- a/maven/pom.xml
+++ b/maven/pom.xml
@@ -340,10 +340,11 @@
false
none
-
+
+
]]>
+ --allow-script-in-comments
--add-stylesheet
${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.css
--add-script
@@ -420,10 +421,11 @@
none
false
-
+
+
]]>
+ --allow-script-in-comments
--add-stylesheet
${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.css
--add-script
From ed34f7202b82644f9839f57c33b9a6283297ec75 Mon Sep 17 00:00:00 2001
From: Shai Almog <67850168+shai-almog@users.noreply.github.com>
Date: Fri, 6 Feb 2026 21:51:54 +0200
Subject: [PATCH 8/8] Add highlight assets to javadoc build script
---
.github/scripts/build_javadocs.sh | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/.github/scripts/build_javadocs.sh b/.github/scripts/build_javadocs.sh
index 91be8dc6c8..0d5404e62f 100755
--- a/.github/scripts/build_javadocs.sh
+++ b/.github/scripts/build_javadocs.sh
@@ -36,7 +36,18 @@ public class ImplementationFactory {
EOF
find "$CN1_DIR/build/tempJavaSources" "$ROOT_DIR/Ports/CLDC11/src" -name "*.java" -not -path "$ROOT_DIR/Ports/CLDC11/src/java/*" \
- | /usr/bin/xargs "$JAVADOC_CMD" --allow-script-in-comments --release 8 -exclude com.codename1.impl -Xdoclint:none -quiet -protected -d "$CN1_DIR/dist/javadoc" -windowtitle "Codename One API" || true
+ | /usr/bin/xargs "$JAVADOC_CMD" \
+ --allow-script-in-comments \
+ --add-stylesheet "$ROOT_DIR/maven/javadoc-resources/highlight.css" \
+ --add-script "$ROOT_DIR/maven/javadoc-resources/highlight.min.js" \
+ --add-script "$ROOT_DIR/maven/javadoc-resources/javadoc-highlight-init.js" \
+ --release 8 \
+ -exclude com.codename1.impl \
+ -Xdoclint:none \
+ -quiet \
+ -protected \
+ -d "$CN1_DIR/dist/javadoc" \
+ -windowtitle "Codename One API" || true
(
cd "$CN1_DIR/dist/javadoc"