This is an automated email from the ASF dual-hosted git repository.

skygo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new 9258af50f3 apidoc check and improvement
     new 67393d2c6d Merge pull request #4969 from ebarboni/apidocbuild
9258af50f3 is described below

commit 9258af50f3e8b03e066e4e2e6a5ee90a9684cb71
Author: Eric Barboni <[email protected]>
AuthorDate: Tue Nov 15 14:23:19 2022 +0100

    apidoc check and improvement
---
 .../org/netbeans/nbbuild/Arch-api-questions.xml    |  12 +-
 nbbuild/antsrc/org/netbeans/nbbuild/Arch.xsl       |  18 +-
 .../antsrc/org/netbeans/nbbuild/CheckLinks.java    |  38 +++-
 .../antsrc/org/netbeans/nbbuild/JavadocIndex.java  | 104 +++++----
 nbbuild/build.properties                           |  65 ++++--
 nbbuild/build.xml                                  |   2 +
 nbbuild/external/binaries-list                     |   1 +
 nbbuild/external/jsoup-1.15.3-license.txt          |  27 +++
 nbbuild/javadoctools/apichanges.xsl                |   2 +-
 nbbuild/javadoctools/build.xml                     |  63 +++---
 nbbuild/javadoctools/disallowed-links.xml          | 235 ++++++++++++++++-----
 nbbuild/javadoctools/export2color.xsl              |  10 +-
 nbbuild/javadoctools/export2html.xsl               |  34 ++-
 nbbuild/javadoctools/export2index.xsl              |  34 ++-
 nbbuild/javadoctools/exportOverview.xsl            |  22 +-
 nbbuild/javadoctools/links.xml                     |   2 +
 nbbuild/javadoctools/properties.xml                |   2 +
 nbbuild/javadoctools/replaces.xml                  |  12 +-
 nbbuild/javadoctools/template.xml                  |  88 +++++---
 nbbuild/licenses/MIT-jsoup22                       |  21 ++
 nbbuild/nbproject/project.xml                      |   2 +-
 .../org/netbeans/nbbuild/ArchQuestionsTest.java    |   4 +-
 .../src/org/netbeans/nbbuild/arch-profiler.xml     |  10 +-
 23 files changed, 563 insertions(+), 245 deletions(-)

diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml 
b/nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml
index 91970b514f..9f1493504f 100644
--- a/nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml
@@ -53,12 +53,12 @@ and commits any changes to 
openide/www/tutorial/questions.html.
             Describe the overall architecture. 
             <hint>
             What will be API for 
-            <a 
href="http://wiki.netbeans.org/API_Design#Separate_API_for_clients_from_support_API";>
+            <a 
href="https://netbeans.apache.org/wiki/API_Design#Separate_API_for_clients_from_support_API";>
                 clients and what support API</a>? 
             What parts will be pluggable?
             How will plug-ins be registered? Please use <code>&lt;api 
type="export"/&gt;</code>
             to describe your general APIs and specify their
-            <a href="http://wiki.netbeans.org/API_Stability#Private";>
+            <a href="https://netbeans.apache.org/wiki/API_Stability#private";>
             stability categories</a>.
             If possible please provide simple diagrams.
             </hint>
@@ -73,7 +73,7 @@ and commits any changes to 
openide/www/tutorial/questions.html.
                 at the root of your javadoc
             </hint>
         
-            Describe the main <a 
href="http://wiki.netbeans.org/API_Design#The_Importance_of_Being_Use_Case_Oriented";>
+            Describe the main <a 
href="https://netbeans.apache.org/wiki/API_Design#The_Importance_of_Being_Use_Case_Oriented";>
             use cases</a> of the new API. Who will use it under
             what circumstances? What kind of code would typically need to be 
written
             to use the module?
@@ -90,7 +90,7 @@ and commits any changes to 
openide/www/tutorial/questions.html.
         </question>
         
         <question id="arch-quality" when="init">
-            How will the <a 
href="http://www.netbeans.org/community/guidelines/q-evangelism.html";>quality</a>
+            How will the <a 
href="https://netbeans.apache.org/participate/qualityevangelism.html";>quality</a>
             of your code be tested and 
             how are future regressions going to be prevented?
             <hint>
@@ -316,7 +316,7 @@ and commits any changes to 
openide/www/tutorial/questions.html.
             <hint>
             As this is some kind of intermodule dependency, it is a kind of 
API.
             Please describe it and classify according to 
-            <a href="http://wiki.netbeans.org/API_Design#What_is_an_API.3F";>
+            <a 
href="https://netbeans.apache.org/wiki/API_Design#What_is_an_API";>
             common stability categories</a>.
             </hint>
         </question>
@@ -406,7 +406,7 @@ and commits any changes to 
openide/www/tutorial/questions.html.
             <hint>
             If there is a property that can change the behavior of your 
             code, somebody will likely use it. You should describe what it 
does 
-            and the <a href="http://wiki.netbeans.org/API_Stability";>stability 
category</a>
+            and the <a 
href="https://netbeans.apache.org/wiki/API_Stability";>stability category</a>
             of this API. You may use
             <pre>
                 &lt;api type="export" group="property" name="id" 
category="private" url="http://..."&gt;
diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/Arch.xsl 
b/nbbuild/antsrc/org/netbeans/nbbuild/Arch.xsl
index 6b3b959dc1..131ba44863 100644
--- a/nbbuild/antsrc/org/netbeans/nbbuild/Arch.xsl
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/Arch.xsl
@@ -354,16 +354,16 @@
             <td> <!-- stability category -->
                 <a>
                     <xsl:attribute name="href">
-                        
<xsl:text>http://wiki.netbeans.org/API_Stability#</xsl:text>
+                        
<xsl:text>https://netbeans.apache.org/wiki/API_Stability#</xsl:text>
                         <xsl:choose>
-                            <xsl:when 
test="$category='official'">Official</xsl:when>
-                            <xsl:when 
test="$category='stable'">Stable</xsl:when>
-                            <xsl:when test="$category='devel'">Devel</xsl:when>
-                            <xsl:when 
test="$category='third'">Third_Party</xsl:when>
-                            <xsl:when 
test="$category='standard'">Standard</xsl:when>
-                            <xsl:when 
test="$category='friend'">Friend</xsl:when>
-                            <xsl:when 
test="$category='private'">Private</xsl:when>
-                            <xsl:when 
test="$category='deprecated'">Deprecated</xsl:when>
+                            <xsl:when 
test="$category='official'">official</xsl:when>
+                            <xsl:when 
test="$category='stable'">stable</xsl:when>
+                            <xsl:when test="$category='devel'">devel</xsl:when>
+                            <xsl:when 
test="$category='third'">third_party</xsl:when>
+                            <xsl:when 
test="$category='standard'">standard</xsl:when>
+                            <xsl:when 
test="$category='friend'">friend</xsl:when>
+                            <xsl:when 
test="$category='private'">private</xsl:when>
+                            <xsl:when 
test="$category='deprecated'">deprecated</xsl:when>
                             <xsl:otherwise>
                                 <xsl:message>
                                     WARNING: <xsl:value-of select="$category"/>
diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/CheckLinks.java 
b/nbbuild/antsrc/org/netbeans/nbbuild/CheckLinks.java
index d0bbc40c39..5b7c766511 100644
--- a/nbbuild/antsrc/org/netbeans/nbbuild/CheckLinks.java
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/CheckLinks.java
@@ -21,8 +21,13 @@ package org.netbeans.nbbuild;
 
 import java.io.*;
 import java.net.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
 import java.util.*;
 import java.util.Map.Entry;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import java.util.regex.*;
 
 import org.apache.tools.ant.BuildException;
@@ -50,6 +55,7 @@ public class CheckLinks extends MatchingTask {
     private List<Mapper> mappers = new LinkedList<>();
     private List<Filter> filters = new ArrayList<>();
     private File report;
+    private File externallinksdump;
 
     /** Set whether to check external links (absolute URLs).
      * Local relative links are always checked.
@@ -90,6 +96,12 @@ public class CheckLinks extends MatchingTask {
         this.report = report;
     }
 
+    /**
+     * Folder where we collect all external links for further inspection
+     */
+    public void setExternallinkslist(File externallinksdump) {
+        this.externallinksdump = externallinksdump;
+    }
     /**
      * Add a mapper to translate file names to the "originals".
      */
@@ -132,7 +144,7 @@ public class CheckLinks extends MatchingTask {
         JUnitReportWriter.writeReport(this, null, report, 
Collections.singletonMap("testBrokenLinks", testMessage));
     }
     
-    private static Pattern hrefOrAnchor = 
Pattern.compile("<(a|img|link)(\\s+shape=\"rect\")?(?:\\s+rel=\"stylesheet\")?\\s+(href|name|src)=\"([^\"#]*)(#[^\"]+)?\"(\\s+shape=\"rect\")?(?:\\s+type=\"text/css\")?\\s*/?>",
 Pattern.CASE_INSENSITIVE);
+    private static Pattern hrefOrAnchor = 
Pattern.compile("<(a|img|link|h3)(\\s+shape=\"rect\")?(?:\\s+rel=\"stylesheet\")?\\s+(href|name|id|src)=\"([^\"#]*)(#[^\"$]+)?\"(\\s+shape=\"rect\")?(?:\\s+type=\"text/css\")?\\s*/?>",
 Pattern.CASE_INSENSITIVE);
     private static Pattern lineBreak = Pattern.compile("^", Pattern.MULTILINE);
     
     /**
@@ -459,7 +471,7 @@ public class CheckLinks extends MatchingTask {
             while (m.find()) {
                 // Get the stuff involved:
                 String type = m.group(3);
-                if (type.equalsIgnoreCase("name")) {
+                if (type.equalsIgnoreCase("name") || 
(type.equalsIgnoreCase("id") && !unescape(m.group(4)).startsWith("#"))) {
                     // We have an anchor, therefore refs to it are valid.
                     String name = unescape(m.group(4));
                     if (names.add(name)) {
@@ -633,8 +645,26 @@ public class CheckLinks extends MatchingTask {
                 throw new BuildException ("Each filter must have pattern 
attribute");
             }
             
-            if (pattern.matcher (u.toString ()).matches ()) {
-                log ("Matched " + u + " accepted: " + accept, 
org.apache.tools.ant.Project.MSG_VERBOSE);
+            if (pattern.matcher(u.toString()).matches()) {
+                log("Matched " + u + " accepted: " + accept, 
org.apache.tools.ant.Project.MSG_VERBOSE);
+                if (externallinksdump != null) {
+                    try {
+                        // triage result to file for later processing.
+                        String dumpFileName = accept ? "acceptednetbeans.txt" 
: "rejectednetbeans.txt";
+
+                        Path dumppath = 
externallinksdump.toPath().resolve(dumpFileName);
+                        if (Files.notExists(dumppath)) {
+                            Files.createDirectories(dumppath.getParent());
+                            Files.createFile(dumppath);
+                        }
+                        Set<String> sortedEntries = new 
TreeSet<>(Files.readAllLines(externallinksdump.toPath().resolve(dumpFileName)));
+                        sortedEntries.add(u.toString());
+                        // ordered and unique per Set usage
+                        Files.write(dumppath, sortedEntries, 
StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING);
+                    } catch (IOException ex) {
+                        
Logger.getLogger(CheckLinks.class.getName()).log(Level.SEVERE, null, ex);
+                    }
+                }
                 return accept;
             }
             return null;
diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/JavadocIndex.java 
b/nbbuild/antsrc/org/netbeans/nbbuild/JavadocIndex.java
index ae63357fec..924c6ce172 100644
--- a/nbbuild/antsrc/org/netbeans/nbbuild/JavadocIndex.java
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/JavadocIndex.java
@@ -24,7 +24,6 @@ import java.io.File;
 import java.util.*;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.regex.*;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.DirectoryScanner;
@@ -32,6 +31,12 @@ import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.types.FileSet;
 
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
+
+
 /** Generates a file with index of all files.
  *
  * @author Jaroslav Tulach
@@ -40,7 +45,7 @@ public class JavadocIndex extends Task {
     private File target;
     private FileSet set;
     private Map<String,List<Clazz>> classes = new HashMap<>(101);
-    
+
     /** The file to generate the index to.
      */
     public void setTarget (File f) {
@@ -49,13 +54,14 @@ public class JavadocIndex extends Task {
 
     /** List of indexes to search in.
      */
-    public void addPackagesList(FileSet set) throws BuildException {        
+    public void addPackagesList(FileSet set) throws BuildException {
         if (this.set != null) {
             throw new BuildException ("Package list can be associated only 
once");
         }
         this.set = set;
     }
-    
+
+    @Override
     public void execute() throws BuildException {
         if (target == null) {
             throw new BuildException ("Target must be set"); // NOI18N
@@ -63,7 +69,7 @@ public class JavadocIndex extends Task {
         if (set == null) {
             throw new BuildException ("Set of files must be provided: " + 
set); // NOI18N
         }
-        
+
         DirectoryScanner scan =  set.getDirectoryScanner(this.getProject());
         File bdir = scan.getBasedir();
         for (String n : scan.getIncludedFiles()) {
@@ -85,90 +91,72 @@ public class JavadocIndex extends Task {
         } catch (IOException ex) {
             throw new BuildException (ex);
         }
-    }    
+    }
+
+
 
-    
-    
     /** Stores parsed info in classes variable */
     private void parseForClasses (File f) throws BuildException {
         log ("Parsing file: " + f, Project.MSG_DEBUG);
         try {
-            BufferedReader is = new BufferedReader (new FileReader (f));
-            
-            
             String urlPrefix;
             try {
                 String fullDir = f.getParentFile ().getCanonicalPath ();
                 String fullTgz = target.getParentFile ().getCanonicalPath ();
-                
+
                 if (!fullDir.startsWith (fullTgz)) {
                     throw new BuildException ("The directory of target file 
must be above all parsed files. Directory: " + fullTgz + " the file dir: " + 
fullDir);
                 }
-                
+
                 urlPrefix = fullDir.substring (fullTgz.length () + 1);
             } catch (IOException ex) {
                 throw new BuildException (ex);
             }
-            
-            // parse following string
-            // <A HREF="org/openide/xml/XMLUtil.html" title="class in 
org.openide.xml">XMLUtil</A
-            String mask = ".*<A HREF=\"([^\"]*)\" 
title=\"(class|interface|annotation) in 
([^\"]*)\"[><I]*>([\\p{Alnum}\\.]*)</.*A>.*";
-            Pattern p = Pattern.compile (mask, Pattern.CASE_INSENSITIVE);
-            // group 1: relative URL to a class or interface
-            // group 2: interface, class or annotation string
-            // group 3: name of package
-            // group 4: name of class
-            
+
+            Document doc = Jsoup.parse(f, "UTF-8", "");
+            Elements ul = doc.getElementsByTag("ul");
+            // should be only one list
+            if (ul.size() != 1) {
+                throw new BuildException("File is not valid for parsing 
classes : " + f);
+            }
             int matches = 0;
-            for (;;) {
-                String line = is.readLine ();
-                if (line == null) break;
-                
-                Matcher m = p.matcher (line);
-                if (m.matches ()) {
+            for (Element li : ul.first().getElementsByTag("li")) {
+                // class Name is the only text in all the tag
+                String className = li.text();
+                // we need anchor to get the inforation
+                Element anchor = li.getElementsByTag("a").first();
+                // left of title is type of element 
(interface,annotation,class,enum ....)
+                // right of title is package of element
+                String[] title = anchor.attr("title").split(" in ");
+                if (title.length == 2) {
                     matches++;
-                    log ("Accepted line: " + line, Project.MSG_DEBUG);
-                    
-                    if (m.groupCount () != 4) {
-                        StringBuffer sb = new StringBuffer ();
-                        sb.append ("Line " + line + " has " + m.groupCount () 
+ " groups and not four");
-                        for (int i = 0; i <= m.groupCount (); i++) {
-                            sb.append ("\n  " + i + " grp: " + m.group (i));
-                        }
-                        throw new BuildException (sb.toString ());
-                    }
-                   
-                    Clazz c = new Clazz (
-                        m.group (3),
-                        m.group (4),
-                        "interface".equals (m.group (2)),
-                        urlPrefix + "/" + m.group (1)
+                    Clazz c = new Clazz(
+                            title[1].trim(),
+                            className,
+                            "interface".equals(title[0].trim()),
+                            urlPrefix + "/" + anchor.attr("href")
                     );
-                    if (c.name == null) throw new NullPointerException ("Null 
name for " + line + "\nclass: " + c);
-                    if (c.name.length () == 0) throw new IllegalStateException 
("Empty name for " + line + "\nclass: " + c);
-                    
-                    log ("Adding class: " + c, Project.MSG_DEBUG);
-                    
+                    if (c.name.isEmpty()) {
+                        throw new IllegalStateException("Empty name for " + 
li.html() + "\nclass: " + c);
+                    }
+                    log("Adding class: " + c, Project.MSG_DEBUG);
                     List<Clazz> l = classes.get(c.pkg);
                     if (l == null) {
                         l = new ArrayList<>();
                         classes.put (c.pkg, l);
                     }
                     l.add (c);
-                } else {
-                    log ("Refused line: " + line, Project.MSG_DEBUG);
                 }
             }
-            
             if (matches == 0) {
                 throw new BuildException ("No classes defined in file: " + f);
             }
-            
+
         } catch (java.io.IOException ex) {
             throw new BuildException (ex);
         }
     }
-    
+
     private void printClassesAsHtml (PrintStream ps) {
         ps.println ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 
Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\";>");
         ps.println ("<HTML>\n<HEAD><TITLE>List of All Classes</TITLE></HEAD>");
@@ -212,7 +200,7 @@ public class JavadocIndex extends Task {
         }
         ps.println ("</classes>");
     }
-    
+
     /** An information about one class in api */
     private static final class Clazz extends Object implements 
Comparable<Clazz> {
         public final String pkg;
@@ -225,12 +213,14 @@ public class JavadocIndex extends Task {
             this.isInterface = isInterface;
             this.url = url;
         }
-        
+
         /** Compares based on class names */
+        @Override
         public int compareTo(Clazz o) {
             return name.compareTo(o.name);
         }
 
+        @Override
         public String toString () {
             return "PKG: " + pkg + " NAME: " + name + " INTERFACE: " + 
isInterface + " url: " + url;
         }
diff --git a/nbbuild/build.properties b/nbbuild/build.properties
index 08dab861c9..743fc7e3f5 100644
--- a/nbbuild/build.properties
+++ b/nbbuild/build.properties
@@ -73,6 +73,7 @@ javadoc.packages=\
 
 # List of modules that provide stable javadoc
 config.javadoc.stable=\
+    ${config.javadoc.forwarded.all},\
     api.annotations.common,\
     api.htmlui,\
     api.intent,\
@@ -87,7 +88,6 @@ config.javadoc.stable=\
     autoupdate.ui,\
     core.ide,\
     core.multiview,\
-    openide.util,\
     openide.util.lookup,\
     openide.util.ui,\
     openide.actions,\
@@ -143,7 +143,6 @@ config.javadoc.stable=\
     java.platform.ui,\
     java.project,\
     java.project.ui,\
-    java.source,\
     java.source.base,\
     java.sourceui,\
     editor.fold,\
@@ -152,30 +151,38 @@ config.javadoc.stable=\
     api.xml,\
     o.apache.tools.ant.module,\
     db,\
-    db.core,\
     spi.quicksearch,\
     print,\
     extexecution,\
-    lib.uihandler,\
-    uihandler
+    extexecution.base
 
 #FIXME: changes for retouche merge:
 #   editor/codetemplates,\
 
+config.javadoc.forwarded.all=\
+    ${config.javadoc.forwarded.devel},\
+    ${config.javadoc.forwarded.friend},\
+    ${config.javadoc.forwarded.deprecated}
+
+# List of javadocs under development quoted on stable javadoc
+config.javadoc.forwarded.devel=\
+    openide.util,\
+    editor.indent,\
+    editor.bracesmatching,\
+    editor.lib,\
+    editor,\
+    lib.uihandler,\
+    uihandler,\
+    spi.editor.hints
+
 # List of javadocs under development
 config.javadoc.devel=\
-    nbjunit,\
-    jellytools.platform,\
-    jellytools.ide,\
+    junit,\
     core.multitabs,\
     core.netigso,\
     gradle,\
     gradle.java,\
     o.n.swing.outline,\
-    o.n.swing.tabcontrol,\
-    editor.indent,\
-    editor.indent.support,\
-    editor.bracesmatching,\
     j2ee.metadata,\
     jumpto,\
     libs.git,\
@@ -186,15 +193,26 @@ config.javadoc.devel=\
     versioning,\
     bugtracking,\
     sampler,\
-    spi.editor.hints,\
     spi.java.hints,\
     java.hints.test,\
     api.web.webmodule,\
     xml.xam,\
     xml.xdm
 
+# List of javadocs dedicated just for friend usage quoted on stable javadoc
+config.javadoc.forwarded.friend=\
+    editor.util,\
+    editor.indent.support,\
+    db.core,\
+    java.source,\
+    maven
+
 # List of javadocs dedicated just for friend usage
 config.javadoc.friend=\
+    nbjunit,\
+    jellytools.platform,\
+    jellytools.ide,\
+    jellytools.java,\
     o.n.bootstrap,\
     o.n.core,\
     core.network,\
@@ -202,28 +220,31 @@ config.javadoc.friend=\
     core.startup,\
     classfile,\
     o.n.swing.plaf,\
-    editor.util,\
     editor.settings.storage,\
-    editor.lib,\
-    editor,\
     j2ee.dd,\
     j2eeserver,\
     java.api.common,\
     java.j2seproject,\
-    junit,\
     lib.v8debug,\
     nativeimage.api,\
     versioning.core,\
     masterfs,\
     masterfs.ui,\
-    projectui
+    projectui,\
+    o.n.swing.tabcontrol,\
+    xml.wsdl.model
+    
 
-# List of old and deprecated APIs for building complete javadoc
+# List of javadocs dedicated just for deprecated usage quoted on stable javadoc
+config.javadoc.forwarded.deprecated=\
+   o.openidex.util
 
+# List of old and deprecated APIs for building complete javadoc
 config.javadoc.deprecated=\
-    openide.compat,\
-    openide.options,\
-    o.openidex.util
+    openide.options
+
+#deprecated not linked
+# openide.compat,\
 
 # List of all javadocs for development version
 # is composed from the javadocs split by stability
diff --git a/nbbuild/build.xml b/nbbuild/build.xml
index 54472009e6..c24d970e9c 100644
--- a/nbbuild/build.xml
+++ b/nbbuild/build.xml
@@ -95,6 +95,8 @@
         <include name="platform/javahelp/external/jhall*.jar"/>
         <!-- For json parsing -->
         <include name="nbbuild/external/json-simple*.jar"/>
+        <!-- For parsing some web : -->
+        <include name="nbbuild/external/jsoup*.jar"/>
       </fileset>
     </path>
     <javac srcdir="antsrc" destdir="${build.ant.classes.dir}" 
deprecation="true" debug="${build.compiler.debug}" source="1.8" target="1.8">
diff --git a/nbbuild/external/binaries-list b/nbbuild/external/binaries-list
index 175b394c18..b4d662a945 100644
--- a/nbbuild/external/binaries-list
+++ b/nbbuild/external/binaries-list
@@ -19,3 +19,4 @@ A8E7C929F046F3890F4A986F3D7EE8E4C4253C6B 
org.apidesign.javadoc:codesnippet-docle
 B8A142EBDE0CDC071A347B2E93C8548C2A5D09B0 
org.netbeans.tools:sigtest-maven-plugin:1.4
 C9AD4A0850AB676C5C64461A05CA524CDFFF59F1 
com.googlecode.json-simple:json-simple:1.1.1
 3A4E4ECCF553036BB0DDBA675486D574B62A01D8 
org.apache.netbeans.modules.jackpot30:tool:12.3
+F6E1D8A8819F854B681C8EAA57FD59A42329E10C org.jsoup:jsoup:1.15.3
diff --git a/nbbuild/external/jsoup-1.15.3-license.txt 
b/nbbuild/external/jsoup-1.15.3-license.txt
new file mode 100644
index 0000000000..9a232b6975
--- /dev/null
+++ b/nbbuild/external/jsoup-1.15.3-license.txt
@@ -0,0 +1,27 @@
+Name: jsoup
+Version: 1.15.3
+License: MIT-jsoup22
+Description: jsoup library
+Origin: https://github.com/jhy/jsoup
+
+The MIT License
+
+Copyright (c) 2009-2022 Jonathan Hedley <[email protected]>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/nbbuild/javadoctools/apichanges.xsl 
b/nbbuild/javadoctools/apichanges.xsl
index 4c6be16c90..e12c520f3e 100644
--- a/nbbuild/javadoctools/apichanges.xsl
+++ b/nbbuild/javadoctools/apichanges.xsl
@@ -304,7 +304,7 @@ committed to the repository for legal reasons. You need to 
download it:
             <br/><strong>Compatibility: </strong> <xsl:apply-templates 
select="compatibility/node()"/>
         </xsl:if>
         <xsl:if test="compatibility/@source = 'incompatible' and 
compatibility/@binary = 'compatible'">
-            <br/><em><a 
href="http://wiki.netbeans.org/VersioningPolicy#Compatible_change_on_the_trunk";>Binary-compatible</a></em>
+            <br/><em><a 
href="https://netbeans.apache.org/wiki/VersioningPolicy#Compatible_change_on_the_trunk";>Binary-compatible</a></em>
         </xsl:if>
     </xsl:template>
 
diff --git a/nbbuild/javadoctools/build.xml b/nbbuild/javadoctools/build.xml
index fe678a739e..3397691d55 100644
--- a/nbbuild/javadoctools/build.xml
+++ b/nbbuild/javadoctools/build.xml
@@ -33,12 +33,12 @@
     <target name="build-javadoc" 
depends="-jdk-init,-load-build-properties,init-tasks,set-buildnumber" 
description="Builds Javadoc documentation for modules; on branches pass e.g. 
-Djavadoc.web.root=http://bits.netbeans.org/6.7/javadoc";>
         <resolvelist name="allmodules" path="modules.fullpath" dir="${nb_all}" 
list="${nb.clusters.list}" modules="${config.javadoc.all}"/>
         <sortsuitemodules unsortedmodules="${modules.fullpath}" 
sortedmodulesproperty="modules.sorted"/>
-        
+
         <property name="export.interfaces" 
location="${netbeans.javadoc.dir}/../ModulesExportedInterfaces"/>
         <property name="export.apichanges" 
location="${netbeans.javadoc.dir}/../APIChanges"/>
         <mkdir dir="${export.interfaces}"/>
         <mkdir dir="${export.apichanges}"/>
-        
+
         <property name="javadoc.fail.on.error" value="true"/>
         <subant-junit target="javadoc" failonerror="${javadoc.fail.on.error}" 
report="${nb_all}/nbbuild/build/build-all-javadoc.xml">
             <buildpath path="${modules.sorted}"/>
@@ -80,43 +80,50 @@
             </zipfileset>
         </zip>
     </target>
-    
+
     <target name="generate-xml" depends="init">
         <echo file="${export.apichanges}/header.gen">&lt;?xml version="1.0" 
encoding="UTF-8"?&gt;
             &lt;changes&gt;
         </echo>
-        
+
         <echo file="${export.apichanges}/footer.gen">
             &lt;/changes&gt;
         </echo>
-        
+
         <concat destfile="${netbeans.javadoc.dir}/apichanges.xml">
             <fileset dir="${export.apichanges}" includes="header.gen"/>
             <fileset dir="${export.apichanges}" includes="*" excludes="*.gen"/>
             <fileset dir="${export.apichanges}" includes="footer.gen"/>
         </concat>
-        
+
         <echo file="${export.interfaces}/header.gen">&lt;?xml version="1.0" 
encoding="UTF-8"?&gt;
             &lt;apis&gt;
         </echo>
-        
+
         <echo file="${export.interfaces}/footer.gen">
             &lt;/apis&gt;
         </echo>
-        
+
         <concat destfile="${netbeans.javadoc.dir}/modules.xml">
             <fileset dir="${export.interfaces}" includes="header.gen"/>
             <fileset dir="${export.interfaces}" includes="*" excludes="*.gen"/>
             <fileset dir="${export.interfaces}" includes="footer.gen"/>
         </concat>
-        
-        <taskdef name="javadoc-index" 
classname="org.netbeans.nbbuild.JavadocIndex" classpath="${nbantext.jar}"/>
+
+        <taskdef name="javadoc-index" 
classname="org.netbeans.nbbuild.JavadocIndex">
+            <classpath>
+                <pathelement location="${nbantext.jar}"/>
+                <fileset dir="${nb_all}/nbbuild/external">
+                    <include name="jsoup*.jar"/>
+                </fileset>
+            </classpath>
+        </taskdef>
         <javadoc-index target="${netbeans.javadoc.dir}/allclasses.xml">
             <packageslist dir="${netbeans.javadoc.dir}">
                 <include name="**/allclasses-noframe.html"/>
             </packageslist>
         </javadoc-index>
-        
+
         <!-- we concat all xml into one big xml file alldatas.xml -->
         <echo file="${export.interfaces}/header.gen">&lt;?xml version="1.0" 
encoding="UTF-8"?&gt;
             &lt;alldata&gt;
@@ -135,10 +142,10 @@
                 <linecontainsregexp negate="true">
                     <regexp pattern="&lt;\?xml version"/>
                 </linecontainsregexp>
-            </filterchain>  
+            </filterchain>
         </concat>
     </target>
-    
+
     <target name="generate-html" depends="init">
         <!-- reformulate dev version from json to more human version -->
         <condition property="json.uversion" value="${json.version}" 
else="Development Version">
@@ -152,7 +159,7 @@
             <param name="version" expression="${json.uversion}" />
             <param name="releaseinfo" expression="${xmlrelease}" />
         </style>
-        
+
         <style in="${netbeans.javadoc.dir}/alldatas.xml" 
out="${netbeans.javadoc.dir}/apichanges.html" style="export2apichanges.xsl">
             <param name="date" expression="${modules-javadoc-date}"/>
             <param name="changes-since-year" 
expression="${previous.release.year}"/>
@@ -180,7 +187,7 @@
         <condition property="javadoc.style.sheet.exists">
             <available 
file="${netbeans.javadoc.dir}/org-openide-util/javadoc.css"/>
         </condition>
-        
+
         <fail unless="javadoc.style.sheet.exists">
             The org-openide-util/javadoc.css has to exist as we are referring 
to
             it from master module Javadoc pages. If it does not anymore, update
@@ -188,18 +195,18 @@
         </fail>
 <!--
         <style in="${netbeans.javadoc.dir}/allclasses.xml" 
out="${netbeans.javadoc.dir}/allclasses-frame.html" 
style="export2allclasses.xsl"/>
-        
+
         <style in="${netbeans.javadoc.dir}/modules.xml" 
out="${netbeans.javadoc.dir}/overview-frame.html" style="export2allmodules.xsl">
             <param name="date" expression="${modules-javadoc-date}"/>
         </style>
--->        
+-->
         <style in="${netbeans.javadoc.dir}/alldatas.xml" 
out="${netbeans.javadoc.dir}/layers.html" style="export2layer.xsl">
             <param name="date" expression="${modules-javadoc-date}"/>
             <param name="maturity" expression="${json.maturity}" />
             <param name="version" expression="${json.uversion}" />
             <param name="releaseinfo" expression="${xmlrelease}" />
         </style>
-        
+
         <style in="${netbeans.javadoc.dir}/alldatas.xml" 
out="${netbeans.javadoc.dir}/properties.html" style="export2property.xsl">
             <param name="date" expression="${modules-javadoc-date}"/>
              <param name="maturity" expression="${json.maturity}" />
@@ -213,8 +220,8 @@
             <param name="version" expression="${json.uversion}" />
             <param name="releaseinfo" expression="${xmlrelease}" />
         </style>
-        
-        <!-- at the end generate the index.html so people know where to start 
-->      
+
+        <!-- at the end generate the index.html so people know where to start 
-->
         <style in="${netbeans.javadoc.dir}/alldatas.xml" 
out="${netbeans.javadoc.dir}/index.html" style="export2index.xsl">
             <param name="date" expression="${modules-javadoc-date}"/>
             <param name="maturity" expression="${json.maturity}" />
@@ -226,23 +233,29 @@
         <replace dir="${netbeans.javadoc.dir}">
             <include name="*.html"/>
             <replacefilter token="@JDK@" value="${javaapidocurl}"/>
-            &replaces;   
+            &replaces;
             <replacefilter token="http://root/"; value="."/>
             <replacefilter token="$${javadoc.web.root}" value="."/>
         </replace>
-        
+
         <echo message="Javadoc index has been generated to 
${netbeans.javadoc.dir}/index.html"/>
     </target>
-    
+
     <target name="check-broken-links" depends="init" 
unless="javadoc.skip.brokenlinks.check">
         <taskdef name="checklinks" classname="org.netbeans.nbbuild.CheckLinks" 
classpath="${nbantext.jar}"/>
         <property name="javadoc.check.forbidden.links" value="true"/>
-        <checklinks basedir="${netbeans.javadoc.dir}" 
checkexternal="${javadoc.check.external.links}" 
checkforbidden="${javadoc.check.forbidden.links}" checkspaces="false" 
report="${netbeans.javadoc.dir}/checklinks-errors.xml">
+        <!-- -->
+        <property name="javadoc.externallinks" 
location="${nb_all}/nbbuild/build/javadoclinks"/>
+        <mkdir dir="${javadoc.externallinks}"/>
+        <delete file="${javadoc.externallinks}*.txt" failonerror="false"/>
+        <!-- -->
+        <checklinks basedir="${netbeans.javadoc.dir}" 
checkexternal="${javadoc.check.external.links}" 
checkforbidden="${javadoc.check.forbidden.links}" checkspaces="false" 
report="${netbeans.javadoc.dir}/checklinks-errors.xml" 
externallinkslist="${javadoc.externallinks}">
             <include name="*/overview-summary.html"/>
             <include name="*/apichanges.html"/>
             <include name="*/architecture-summary.html"/>
             <include name="*/**/package-summary.html"/>
-            <include name="*/**/doc-files/**/*.html"/>
+           <!-- <include name="*/**/doc-files/**/*.html"/> -->
+            <include name="*/**/*.html"/>
             <include name="*.html"/>
             &disallowed-links;
         </checklinks>
diff --git a/nbbuild/javadoctools/disallowed-links.xml 
b/nbbuild/javadoctools/disallowed-links.xml
index 3d10d0e7b2..3251f3803c 100644
--- a/nbbuild/javadoctools/disallowed-links.xml
+++ b/nbbuild/javadoctools/disallowed-links.xml
@@ -23,52 +23,189 @@
     <!-- if you find a general URL from netbeans.org site that make sence to 
reference, feel free
       to add it here with accept='true'
       -->
-    <!-- link to any API changes are ok -->
-    <filter 
pattern="http://www\.netbeans\.org/download/dev/javadoc/apichanges\.html"; 
accept="true"/>
-    <filter 
pattern="http://www\.netbeans\.org/download/release41/javadoc/apichanges\.html"; 
accept="true"/>
-    <filter 
pattern="http://www\.netbeans\.org/download/[0-9]_[0-9]/javadoc/apichanges\.html";
 accept="true"/>
-    <filter 
pattern="http://bits\.netbeans\.org/[0-9.]+/javadoc/apichanges\.html"; 
accept="true"/>
-    <filter pattern="http://bits\.netbeans\.org/"; accept="true"/>
-    <!-- sources -->
-    <filter pattern="http://www\.netbeans\.org/(unbranded-)?source/browse/.*" 
accept="true"/>
-    <filter pattern="http://hg\.netbeans\.org.*"; accept="true"/>
-    <filter pattern="http://openide\.netbeans\.org/versioning-policy\.html.*"; 
accept="true"/>
-    <filter pattern="http://www\.netbeans\.org/issues/show_bug\.cgi.*"; 
accept="true"/>
-    <filter pattern="http://openide\.netbeans\.org.*tutorial.*api-design.*"; 
accept="true"/>
-    <filter pattern="http://openide\.netbeans\.org.*tutorial.*api.html.*"; 
accept="true"/>
-    <filter pattern="http://platform\.netbeans\.org/"; accept="true"/>
-    <filter pattern="http://www\.netbeans\.org.products.ide.index.html"; 
accept="true"/>
-    <filter pattern="http://mdr\.netbeans\.org/example\.html"; accept="true"/>
-    <filter pattern="http://mdr\.netbeans\.org/uml2mof.*"; accept="true"/>
-    <filter pattern="http://java\.netbeans\.org/models/java/java\.xml"; 
accept="true"/>
-    <filter pattern="http://autoupdate\.netbeans\.org/nbm/nbm_package\.html.*"; 
accept="true"/>
-    <!-- Winsys important documents -->
-    <filter pattern="http://core\.netbeans\.org/windowsystem/.*html.*"; 
accept="true"/>
-    <!-- UI specifications -->
-    <filter pattern="http://ui\.netbeans\.org/docs/hi/javamdr/.*"; 
accept="true"/>
-    <filter pattern="http://ui.netbeans.org/docs/ui/VersioningSpecification.*"; 
accept="true"/>
-    <filter 
pattern="http://ui\.netbeans\.org/docs/ui/code_folding/cf_uispec\.html"; 
accept="true"/>
-    <!-- is used in generated question from arch.xml -->
-    <filter 
pattern="http://www\.netbeans\.org/community/guidelines/q-evangelism\.html"; 
accept="true"/>
-    <!-- direct link to main website is ok as well -->
-    <filter pattern="http://www\.netbeans\.org/"; accept="true"/>
-    <filter pattern="http://www\.netbeans\.org/community/lists/top\.html"; 
accept="true"/>
-    <filter pattern="http://translatedfiles\.netbeans\.org/"; accept="true"/>
-    <!-- dtd are fine they cannot change anyway -->
-    <filter pattern="http://www\.netbeans\.org/dtds/.*"; accept="true"/>
-    <filter pattern="http://www\.netbeans\.org/servlets/.*"; accept="true"/>
-    <filter pattern="http://openide\.netbeans\.org/proposals/.*"; 
accept="true"/>        
-    <!-- logger module uses references to real website pages -->
-    <filter pattern="http://logger\.netbeans\.org/nonav/welcome/.*"; 
accept="true"/>        
-    <!-- allow xsd files -->
-    <filter pattern="http://www\.netbeans\.org/ns/.*"; accept="true"/>
-    <!-- allow Project Design document -->
-    <filter pattern="http://projects\.netbeans\.org/buildsys/.*"; 
accept="true"/>
-    <filter pattern="http://platform\.netbeans\.org/articles/.*"; 
accept="true"/>
-    <filter pattern="http://ui\.netbeans\.org/docs/ui/themes/themes\.html"; 
accept="true"/>
-    <filter pattern="http://wiki.netbeans.org/.*"; accept="true"/>
-    <!-- Useful to point to open layer positions (see e.g. HOWTO-MIME.html): 
-->
-    <filter 
pattern="http://deadlock\.netbeans\.org/hudson/job/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/build/generated/layers\.txt";
 accept="true"/>
-    <filter 
pattern="http://deadlock\.netbeans\.org/job/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/build/generated/layers\.txt";
 accept="true"/>
-    <!-- forbid the rest of NetBeans sites -->
-    <filter pattern="http://.*netbeans\.org/.*"; accept="false"/>
+    <!-- issue tracking system -->
+
+    <filter pattern="https://bz\.apache\.org/netbeans/show_bug\.cgi\?id=.*"; 
accept="true"/>   
+    <filter pattern="https://issues\.apache\.org/jira/browse/NETBEANS-\d+"; 
accept="true"/>
+
+    <!-- some ant issue linked -->
+    <filter pattern="https://bz\.apache\.org/bugzilla/show_bug\.cgi\?id=.*"; 
accept="true"/>
+    <!-- some sun jdk issue linked -->
+    
+    <filter pattern="http://bugs\.sun\.com/bugdatabase/.*"; accept="true"/>
+    
+    
+    <!-- version control ours and others  -->
+    <filter pattern="https://github\.com/apache/netbeans.*"; accept="true" />
+    <filter pattern="https://gitbox\.apache\.org/repos/asf\?p=netbeans\.git"; 
accept="true" />
+    <!-- transition  -->
+    <filter pattern="https://github\.com/emilianbold/netbeans-releases/.*"; 
accept="true" />
+
+    <filter pattern="https://github\.com/graalvm/fastr"; accept="true" />
+    <filter pattern="https://github\.com/graalvm/graalpython"; accept="true" />
+    <filter pattern="https://github\.com/graalvm/truffleruby"; accept="true" />
+    <filter pattern="https://github\.com/twall/jna"; accept="true" />
+    <filter pattern="https://github\.com/openjdk/.*"; accept="true" />
+    <filter pattern="https://github\.com/simpligility/.*"; accept="true" />
+    
+    
+    <!-- project site we use -->
+    <filter pattern="https://bits\.netbeans\.org/html\+java/dev"; accept="true" 
/>
+    <filter pattern="https://graalvm\.org"; accept="true" />
+    <filter pattern="https://freemarker\.apache\.org"; accept="true" />
+    <filter pattern="https://felix\.apache\.org"; accept="true" />
+    <filter pattern="https://ant\.apache\.org"; accept="true" />
+    <filter pattern="https://ant\.apache\.org/manual/running\.html#sysprops"; 
accept="true" />
+    <filter pattern="https://ant\.apache\.org/manual/Types/antlib\.html"; 
accept="true" />
+    
+    <filter pattern="https://river\.apache\.org"; accept="true" /> <!-- jini -->
+    <filter pattern="http://findbugs\.sourceforge\.net"; accept="true" />
+    <filter pattern="http://www\.saxproject\.org"; accept="true" />
+    <filter pattern="https://www\.eclipse\.org/jgit"; accept="true" />
+    <filter pattern="https://knockoutjs\.com"; accept="true" />
+    <filter pattern="https://services\.gradle\.org/versions/all"; accept="true" 
/> 
+    
+    <!-- documentation API -->
+    <filter pattern="https://docs\.oracle\.com/javase.*"; accept="true" />
+    <filter pattern="https://docs\.oracle\.com/javaee.*"; accept="true" />
+    <filter pattern="https://docs\.microsoft\.com/.*"; accept="true" />
+    
+    <filter pattern="https://www\.graalvm\.org/truffle/javadoc/.*"; 
accept="true" />
+    <filter pattern="https://openjfx\.io/javadoc/.*"; accept="true" />
+    <filter 
pattern="https://www\.oracle\.com/technetwork/java/jaf-1-150219\.pdf*"; 
accept="true" />
+    <!-- javahelp documentation -->
+    <filter 
pattern="https://docs\.oracle\.com/cd/E19253-01/819-0913/819-0913\.pdf"; 
accept="true" />
+    <!-- https://docs.oracle.com/javase/specs/ -->
+    <filter 
pattern="https://www\.oracle\.com/java/technologies/jaxp-introduction\.html"; 
accept="true" />
+    <filter pattern="https://docs\.gradle\.org/.*"; accept="true" />
+    <filter pattern="https://search\.maven\.org/search\?q=org\.netbeans\.api"; 
accept="true" />
+    
+    <filter pattern="https://www\.ietf\.org/rfc/rfc3023\.txt"; accept="true" />
+    <filter 
pattern="https://www\.rfc-editor\.org/rfc/rfc4288\.html#section-4\.2"; 
accept="true" />
+    <filter pattern="https://www\.w3\.org/XML"; accept="true" />
+    <filter pattern="https://openjdk\.org/projects/coin"; accept="true" />
+    
+    <filter 
pattern="https://junit\.org/junit4/javadoc/latest/org/junit/Ignore\.html"; 
accept="true" />
+    
+    <!-- wiki apidesing former netbeans sources -->
+    <filter pattern="http://wiki\.apidesign\.org/wiki/CodeInjection"; 
accept="true" />
+    <filter pattern="http://wiki\.apidesign\.org/wiki/Netbinox"; accept="true" 
/>
+    <filter pattern="http://wiki\.apidesign\.org/wiki/Privileged_API"; 
accept="true" />
+    <filter pattern="http://wiki\.apidesign\.org/wiki/Startup#Morning_Launch"; 
accept="true" />
+    <filter 
pattern="http://wiki\.apidesign\.org/wiki/Startup#Multi_User_Initial_Launch"; 
accept="true" />
+    <filter pattern="http://wiki\.apidesign\.org/wiki/Startup"; accept="true" />
+    <filter pattern="http://wiki\.apidesign\.org/wiki/Bck2Brwsr"; accept="true" 
/>
+    <filter pattern="http://wiki\.apidesign\.org/wiki/Netbinox"; accept="true" 
/>
+    <filter pattern="http://wiki\.apidesign\.org/wiki/OrderOfElements"; 
accept="true" />
+    <filter pattern="http://wiki\.apidesign\.org/wiki/ExtendingInterfaces"; 
accept="true" />
+    <filter 
pattern="http://source\.apidesign\.org/hg/netbeans/misc/file/tip/platform/samples/window-system-groups";
 accept="true" />
+    <filter 
pattern="http://source\.apidesign\.org/hg/netbeans/misc/file/tip/platform/samples/window-system-basic";
 accept="true" />
+
+
+    <!-- book -->
+    <filter pattern="https://leanpub\.com/nbp4beginners"; accept="true" />
+    <filter pattern="https://www.martinfowler.com/articles/injection\.html"; 
accept="true" />
+    <filter pattern="https://software\.intel\.com/en-us/multi-os-engine"; 
accept="true" />
+    
+    
+    <!-- dtd and xsl -->
+    <filter pattern="http://www\.netbeans\.org/dtds/annotation-type-1_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/attributes-1_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/connection-1_0\.dtd"; 
accept="true"/>
+    <filter 
pattern="http://www\.netbeans\.org/dtds/editor-palette-item-1_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/filesystem-1_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/filesystem-1_1\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/filesystem-1_2\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/group-properties2_0\.dtd"; 
accept="true"/>
+    <filter 
pattern="http://www\.netbeans\.org/dtds/java-platformdefinition-1_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/jdbc-driver-1_1\.dtd"; 
accept="true"/>
+    <filter 
pattern="http://www\.netbeans\.org/dtds/library-declaration-1_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/mode-properties2_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/module-auto-deps-1_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/module-status-1_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/properties-1_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/sessionsettings-1_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/tc_group2_0\.dtd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/dtds/tc_ref2_0\.dtd"; 
accept="true"/>
+    <filter 
pattern="http://www\.netbeans\.org/dtds/windowmanager-properties2_0\.dtd"; 
accept="true"/>
+    <filter 
pattern="http://www\.netbeans\.org/dtds/EditorFontsColors-1_1\.dtd"; 
accept="true"/>
+    <filter 
pattern="http://www\.netbeans\.org/dtds/EditorKeyBindings-1_1\.dtd"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/dtds/EditorFontsColors-1_2\.dtd"; 
accept="true"/>
+    <!-- xsd used in documentation -->
+    <filter 
pattern="http://www\.netbeans\.org/ns/ant-project-libraries/1\.xsd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/ns/j2se-project/1\.xsd"; 
accept="true"/>
+    <filter pattern="http://www\.netbeans\.org/ns/j2se-project/2\.xsd"; 
accept="true"/>
+    
+    <!-- j2ee dtd-->
+    <filter pattern="http://java\.sun\.com/dtd/.*"; accept="true"/>
+    <filter pattern="http://java\.sun\.com/j2ee/dtds/.*"; accept="true"/>
+    <filter pattern="https://www\.oracle\.com/webfolder/technetwork/.*"; 
accept="true"/>
+    <filter pattern="http://www\.oracle\.com/webfolder/technetwork/.*"; 
accept="true"/>
+    <filter pattern="https://jcp\.org/aboutJava/communityprocess/.*"; 
accept="true"/>
+    
+    
+    <!-- not in website
+    
+    -->
+    <!-- wiki pagess -->
+    <filter pattern="https://netbeans\.apache\.org/wiki/API_Stability#private"; 
accept="true"/>
+    <filter pattern="https://netbeans\.apache\.org/wiki/API_Stability#friend"; 
accept="true"/>
+    <filter pattern="https://netbeans\.apache\.org/wiki/API_Stability#devel"; 
accept="true"/>
+    <filter pattern="https://netbeans\.apache\.org/wiki/API_Stability#stable"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/API_Stability#official"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/API_Stability#third_party"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/API_Stability#standard"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/API_Stability#deprecated"; 
accept="true"/>
+    <filter pattern="https://netbeans\.apache\.org/wiki/API_Stability"; 
accept="true"/>
+
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/API_Design#Separate_API_for_clients_from_support_API";
 accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/API_Design#The_Importance_of_Being_Use_Case_Oriented";
 accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/API_Design#What_is_an_API"; 
accept="true"/>
+    <filter pattern="https://netbeans\.apache\.org/wiki/API_Design"; 
accept="true"/>
+    
+    <filter pattern="https://netbeans\.apache\.org/wiki/APIDevelopment"; 
accept="true"/>
+    <filter pattern="https://netbeans\.apache\.org/wiki/Authenticator"; 
accept="true"/>
+    <filter pattern="https://netbeans\.apache\.org/wiki/FitnessViaPostMortem"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/FitnessViaTimersCounter"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/VersioningPolicy#Compatible_change_on_the_trunk";
 accept="true"/>
+    <filter pattern="https://netbeans\.apache\.org/wiki/SignatureTest"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/DevFaqNetBeansFullHack"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/RunConfigurations49636"; 
accept="true"/> 
+    <filter pattern="https://netbeans\.apache\.org/wiki/ParsingAPI"; 
accept="true"/> 
+    <filter pattern="https://netbeans\.apache\.org/wiki/BugtrackingCookbook"; 
accept="true"/> 
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/TaskManagementUseCases"; 
accept="true"/> 
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/TaskDashboardDesignSpec"; 
accept="true"/> 
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/BugtrackingAPISPIUseCases"; 
accept="true"/> 
+    <filter pattern="https://netbeans\.apache\.org/wiki/Java_DevelopersGuide"; 
accept="true"/> 
+    <filter pattern="https://netbeans\.apache\.org/wiki/FolderOrdering103187"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/DevFaqActionContextSensitive"; 
accept="true"/>
+    <filter pattern="https://netbeans\.apache\.org/wiki/DevFaqLookupDefault"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/DevFaqAddGlobalContext"; 
accept="true"/>
+    <filter 
pattern="https://netbeans\.apache\.org/wiki/BackwardCompatibilityPatches"; 
accept="true"/>
+    <filter pattern="https://netbeans\.apache\.org/wiki/BuildSystemHowTo"; 
accept="true"/>
+    <filter pattern="https://netbeans\.apache\.org/wiki/JavaHT_Modification"; 
accept="true"/>
+    
+    <filter pattern="https://en\.wikipedia\.org/wiki/Proxy_auto-config"; 
accept="true"/> 
+    <filter 
pattern="https://en\.wikipedia\.org/wiki/Web_Proxy_Auto-Discovery_Protocol"; 
accept="true"/> 
+    <filter pattern="https://en\.wikipedia\.org/wiki/ANSI_escape_code"; 
accept="true"/> 
+    
+    <!-- main site links page -->
+    <filter pattern="https://netbeans\.apache\.org/tutorials/.*"; 
accept="true"/> 
+    <filter pattern="https://netbeans\.apache\.org/kb/.*"; accept="true"/> 
+    <filter 
pattern="https://netbeans\.apache\.org/participate/qualityevangelism\.html*"; 
accept="true"/> 
+    <filter pattern="https://netbeans\.apache\.org"; accept="true"/> 
+    <filter pattern="https://netbeans\.apache\.org/download/index\.html"; 
accept="true"/>
+    
+    <!-- old blog entry -->
+    <filter pattern="https://netbeans\.apache\.org/blogs/.*"; accept="true"/>
+    <!-- old projects entry -->
+    <filter pattern="https://netbeans\.apache\.org/projects/.*"; accept="true"/>
+    
+    <!-- jenkins page -->
+    <filter 
pattern="https://ci-builds\.apache\.org/job/Netbeans/job/netbeans-linux/lastSuccessfulBuild/artifact/nbbuild/build/generated/layers\.txt";
 accept="true"/>
+    
+     <!-- ui gesture -->
+    <filter pattern="http://www\.netbeans\.org/servlets/Join"; accept="false"/>
+    <!-- all other links are disallowed -->
+    <filter pattern="https://.*"; accept="false"/>
+    <filter pattern="http://.*"; accept="false"/>
diff --git a/nbbuild/javadoctools/export2color.xsl 
b/nbbuild/javadoctools/export2color.xsl
index d43d1ebd8f..90dcc9447b 100644
--- a/nbbuild/javadoctools/export2color.xsl
+++ b/nbbuild/javadoctools/export2color.xsl
@@ -27,30 +27,30 @@
             <xsl:when test="descendant::api[@category='stable' and 
@group='java' and @type='export']"><![CDATA[
 stability.color=#ffffff
 stability.title=Stable
-stability.definition.url=http://wiki.netbeans.org/API_Stability#Stable
+stability.definition.url=https://netbeans.apache.org/wiki/API_Stability#stable
 ]]></xsl:when>
             <xsl:when test="descendant::api[@category='official' and 
@group='java' and @type='export']"><![CDATA[
 stability.color=#ffffff
 stability.title=Official
-stability.definition.url=http://wiki.netbeans.org/API_Stability#Official
+stability.definition.url=https://netbeans.apache.org/wiki/API_Stability#official
 ]]></xsl:when>
             <xsl:when test="descendant::api[@category='devel' and 
@group='java' and @type='export']"><![CDATA[
 stability.color=#ddcc80
 stability.image=resources/stability-devel.png
 stability.title=Under Development
-stability.definition.url=http://wiki.netbeans.org/API_Stability#Devel
+stability.definition.url=https://netbeans.apache.org/wiki/API_Stability#devel
 ]]></xsl:when>
             <xsl:when test="descendant::api[@category='deprecated' and 
@group='java' and @type='export']"><![CDATA[
 stability.color=#afafaf
 stability.image=resources/stability-deprecated.png
 stability.title=Deprecated
-stability.definition.url=http://wiki.netbeans.org/API_Stability#Deprecated
+stability.definition.url=https://netbeans.apache.org/wiki/API_Stability#deprecated
 ]]></xsl:when>
             <xsl:otherwise><![CDATA[
 stability.color=#e0a0a0
 stability.image=resources/stability-friend.png
 stability.title=Friend, Private or Third Party
-stability.definition.url=http://wiki.netbeans.org/API_Stability#Friend
+stability.definition.url=https://netbeans.apache.org/wiki/API_Stability#friend
 ]]></xsl:otherwise>
         </xsl:choose>
     </xsl:template>
diff --git a/nbbuild/javadoctools/export2html.xsl 
b/nbbuild/javadoctools/export2html.xsl
index e27054cba1..99617fca11 100644
--- a/nbbuild/javadoctools/export2html.xsl
+++ b/nbbuild/javadoctools/export2html.xsl
@@ -82,24 +82,24 @@
 
                 This document provides a list of <em>NetBeans APIs</em> with a 
short description
                 of what they are used for, and a table describing different 
types of interfaces
-                (see <a href="http://wiki.netbeans.org/API_Design";>What is
+                (see <a 
href="https://netbeans.apache.org/wiki/API_Design";>What is
                     an API?</a> to understand why we list DTDs, file formats, 
etc.) and with
                 a stability category (<span style="background:#ffffff">stable 
and official</span>,
                 <span style="background:#ddcc80">under development</span>,
                 <span 
style="background:#afafaf;text-decoration:line-through">deprecated</span>,
                 <span style="background:#e0c0c0">friend or private</span>;
-                see <a href="http://wiki.netbeans.org/API_Stability";>API
+                see <a 
href="https://netbeans.apache.org/wiki/API_Stability";>API
                     stability</a> for more info).
                 The aim is to provide as detailed a definition of NetBeans 
module 
                 external interfaces as possible and give other developers a 
chance to decide
                 whether they want to depend on a particular API or not.
                 <p/>
                 Some of these APIs are part of the 
-                <a href="http://platform.netbeans.org/";>NetBeans Platform</a>
+                <a 
href="https://netbeans.apache.org/kb/docs/platform/";>NetBeans Platform</a>
                 (for example lookup,
                 loaders, utilities, nodes, explorer, window systems, 
multiview, etc.), some of them
                 are specific to 
-                <a 
href="http://www.netbeans.org/products/ide/index.html";>NetBeans IDE</a> 
+                <a href="https://netbeans.apache.org";>NetBeans IDE</a> 
                 (projects, javacore, diff, etc.) and some
                 are not included in the release at all and are just provided 
for download
                 (usually via autoupdate). Basically when building an 
application based on
@@ -213,7 +213,7 @@
                 <p/>
                 To get the API of your module listed here, see the 
documentation for the 
                 Javadoc building
-                <a 
href="http://wiki.netbeans.org/APIDevelopment";>infrastructure</a>.
+                <a 
href="https://netbeans.apache.org/wiki/APIDevelopment";>infrastructure</a>.
         
                 <h4>Additional Sources of Information</h4>
         
@@ -310,7 +310,7 @@
                                 </a>
                             </b>
                             - no API description provided
-                            (see <a 
href="http://wiki.netbeans.org/APIDevelopment";>how to do it</a>)
+                            (see <a 
href="https://netbeans.apache.org/wiki/APIDevelopment";>how to do it</a>)
                         </li>
                     </xsl:otherwise>
                 </xsl:choose>
@@ -469,14 +469,28 @@
             <td> <!-- stability category -->
                 <a>
                     <xsl:attribute name="href">
-                        
<xsl:text>http://wiki.netbeans.org/API_Stability#</xsl:text>
-                        <xsl:value-of select="$category" />
+                        
<xsl:text>https://netbeans.apache.org/wiki/API_Stability#</xsl:text>
+                        <xsl:choose>
+                            <xsl:when 
test="$category='official'">official</xsl:when>
+                            <xsl:when 
test="$category='stable'">stable</xsl:when>
+                            <xsl:when test="$category='devel'">devel</xsl:when>
+                            <xsl:when 
test="$category='third'">third_party</xsl:when>
+                            <xsl:when 
test="$category='standard'">standard</xsl:when>
+                            <xsl:when 
test="$category='friend'">friend</xsl:when>
+                            <xsl:when 
test="$category='private'">private</xsl:when>
+                            <xsl:when 
test="$category='deprecated'">deprecated</xsl:when>
+                            <xsl:otherwise>
+                                <xsl:message>
+                                    WARNING: <xsl:value-of select="$category"/>
+                                </xsl:message>
+                            </xsl:otherwise>
+                        </xsl:choose>
                     </xsl:attribute>
                     <xsl:choose>
                         <xsl:when 
test="$category='official'">Official</xsl:when>
                         <xsl:when test="$category='stable'">Stable</xsl:when>
-                        <xsl:when test="$category='devel'">Devel</xsl:when>
-                        <xsl:when 
test="$category='third'">Third_Party</xsl:when>
+                        <xsl:when test="$category='devel'">Under 
Development</xsl:when>
+                        <xsl:when test="$category='third'">Third 
party</xsl:when>
                         <xsl:when 
test="$category='standard'">Standard</xsl:when>
                         <xsl:when test="$category='friend'">Friend</xsl:when>
                         <xsl:when test="$category='private'">Private</xsl:when>
diff --git a/nbbuild/javadoctools/export2index.xsl 
b/nbbuild/javadoctools/export2index.xsl
index 3633bb3067..9e8292d67d 100644
--- a/nbbuild/javadoctools/export2index.xsl
+++ b/nbbuild/javadoctools/export2index.xsl
@@ -74,23 +74,23 @@
                         <div class="abstract">
                             This document provides a list of <em>NetBeans 
APIs</em> with a short description
                             of what they are used for, and a table describing 
different types of interfaces
-                            (see <a 
href="http://wiki.netbeans.org/API_Design";>What is
+                            (see <a 
href="https://netbeans.apache.org/wiki/API_Design";>What is
                                 an API?</a> to understand why we list DTDs, 
file formats, etc.) and with
                             a stability category (<span 
style="background:#ffffff">stable and official</span>,
                             <span style="background:#ddcc80">under 
development</span>,
                             <span 
style="background:#afafaf;text-decoration:line-through">deprecated</span>,
                             <span style="background:#e0c0c0">friend or 
private</span>;
-                            see <a 
href="http://wiki.netbeans.org/API_Stability";>API stability</a> for more info).
+                            see <a 
href="https://netbeans.apache.org/wiki/API_Stability";>API stability</a> for 
more info).
                             The aim is to provide as detailed a definition of 
NetBeans module 
                             external interfaces as possible and give other 
developers a chance to decide
                             whether they want to depend on a particular API or 
not.
                             <p/>
                             Some of these APIs are part of the 
-                            <a href="http://platform.netbeans.org/";>NetBeans 
Platform</a>
+                            <a 
href="https://netbeans.apache.org/kb/docs/platform/";>NetBeans Platform</a>
                             (for example lookup,
                             loaders, utilities, nodes, explorer, window 
systems, multiview, etc.), some of them
                             are specific to 
-                            <a 
href="http://www.netbeans.org/products/ide/index.html";>NetBeans IDE</a> 
+                            <a href="https://netbeans.apache.org";>NetBeans 
IDE</a> 
                             (projects, javacore, diff, etc.) and some
                             are not included in the release at all and are 
just provided for download
                             (usually via autoupdate). Basically when building 
an application based on
@@ -107,7 +107,7 @@
                                     </xsl:with-param>
                                 </xsl:call-template>
                             </p>-->
-                            <p>To get the API of your module listed here, see 
the documentation for the Javadoc building <a 
href="http://wiki.netbeans.org/APIDevelopment";>infrastructure</a>.</p>
+                            <p>To get the API of your module listed here, see 
the documentation for the Javadoc building <a 
href="https://netbeans.apache.org/wiki/APIDevelopment";>infrastructure</a>.</p>
                         
                             <p>Can't find what you're looking for? Try the <a 
href="https://netbeans.apache.org"; target="_top">Apache NetBeans 
website</a>.</p>
                         </div>
@@ -182,7 +182,7 @@
                                 </a>
                             </b>
                             - no API description provided
-                            (see <a 
href="http://wiki.netbeans.org/APIDevelopment";>how to do it</a>)
+                            (see <a 
href="https://netbeans.apache.org/wiki/APIDevelopment";>how to do it</a>)
                         </li>
                     </xsl:otherwise>
                 </xsl:choose>
@@ -341,14 +341,28 @@
             <td> <!-- stability category -->
                 <a>
                     <xsl:attribute name="href">
-                        
<xsl:text>http://wiki.netbeans.org/API_Stability#</xsl:text>
-                        <xsl:value-of select="$category" />
+                        
<xsl:text>https://netbeans.apache.org/wiki/API_Stability#</xsl:text>
+                        <xsl:choose>
+                            <xsl:when 
test="$category='official'">official</xsl:when>
+                            <xsl:when 
test="$category='stable'">stable</xsl:when>
+                            <xsl:when test="$category='devel'">devel</xsl:when>
+                            <xsl:when 
test="$category='third'">third_party</xsl:when>
+                            <xsl:when 
test="$category='standard'">standard</xsl:when>
+                            <xsl:when 
test="$category='friend'">friend</xsl:when>
+                            <xsl:when 
test="$category='private'">private</xsl:when>
+                            <xsl:when 
test="$category='deprecated'">deprecated</xsl:when>
+                            <xsl:otherwise>
+                                <xsl:message>
+                                    WARNING: <xsl:value-of select="$category"/>
+                                </xsl:message>
+                            </xsl:otherwise>
+                        </xsl:choose>
                     </xsl:attribute>
                     <xsl:choose>
                         <xsl:when 
test="$category='official'">Official</xsl:when>
                         <xsl:when test="$category='stable'">Stable</xsl:when>
-                        <xsl:when test="$category='devel'">Devel</xsl:when>
-                        <xsl:when 
test="$category='third'">Third_Party</xsl:when>
+                        <xsl:when test="$category='devel'">Under 
Development</xsl:when>
+                        <xsl:when test="$category='third'">Third 
party</xsl:when>
                         <xsl:when 
test="$category='standard'">Standard</xsl:when>
                         <xsl:when test="$category='friend'">Friend</xsl:when>
                         <xsl:when test="$category='private'">Private</xsl:when>
diff --git a/nbbuild/javadoctools/exportOverview.xsl 
b/nbbuild/javadoctools/exportOverview.xsl
index 2dca49598c..101127c88e 100644
--- a/nbbuild/javadoctools/exportOverview.xsl
+++ b/nbbuild/javadoctools/exportOverview.xsl
@@ -198,14 +198,28 @@
             <td> <!-- stability category -->
                 <a>
                     <xsl:attribute name="href">
-                        
<xsl:text>http://wiki.netbeans.org/API_Stability#</xsl:text>
-                        <xsl:value-of select="$category" />
+                        
<xsl:text>https://netbeans.apache.org/wiki/API_Stability#</xsl:text>
+                        <xsl:choose>
+                            <xsl:when 
test="$category='official'">official</xsl:when>
+                            <xsl:when 
test="$category='stable'">stable</xsl:when>
+                            <xsl:when test="$category='devel'">devel</xsl:when>
+                            <xsl:when 
test="$category='third'">third_party</xsl:when>
+                            <xsl:when 
test="$category='standard'">standard</xsl:when>
+                            <xsl:when 
test="$category='friend'">friend</xsl:when>
+                            <xsl:when 
test="$category='private'">private</xsl:when>
+                            <xsl:when 
test="$category='deprecated'">deprecated</xsl:when>
+                            <xsl:otherwise>
+                                <xsl:message>
+                                    WARNING: <xsl:value-of select="$category"/>
+                                </xsl:message>
+                            </xsl:otherwise>
+                        </xsl:choose>
                     </xsl:attribute>
                     <xsl:choose>
                         <xsl:when 
test="$category='official'">Official</xsl:when>
                         <xsl:when test="$category='stable'">Stable</xsl:when>
-                        <xsl:when test="$category='devel'">Devel</xsl:when>
-                        <xsl:when 
test="$category='third'">Third_Party</xsl:when>
+                        <xsl:when test="$category='devel'">Under 
Development</xsl:when>
+                        <xsl:when test="$category='third'">Third 
party</xsl:when>
                         <xsl:when 
test="$category='standard'">Standard</xsl:when>
                         <xsl:when test="$category='friend'">Friend</xsl:when>
                         <xsl:when test="$category='private'">Private</xsl:when>
diff --git a/nbbuild/javadoctools/links.xml b/nbbuild/javadoctools/links.xml
index 96e4fe059e..0a93906acb 100644
--- a/nbbuild/javadoctools/links.xml
+++ b/nbbuild/javadoctools/links.xml
@@ -241,3 +241,5 @@
 <link href="${javadoc.docs.org-netbeans-modules-db-core}" offline="true" 
packagelistloc="${netbeans.javadoc.dir}/org-netbeans-modules-db-core"/>
 <link href="${javadoc.docs.org-netbeans-modules-nativeimage-api}" 
offline="true" 
packagelistloc="${netbeans.javadoc.dir}/org-netbeans-modules-nativeimage-api"/>
 <link href="${javadoc.docs.org-netbeans-api-lsp}" offline="true" 
packagelistloc="${netbeans.javadoc.dir}/org-netbeans-api-lsp"/>
+<link href="${javadoc.docs.org-netbeans-modules-java-j2seplatform}" 
offline="true" 
packagelistloc="${netbeans.javadoc.dir}/org-netbeans-modules-java-j2seplatform"/>
+<link href="${javadoc.docs.org-netbeans-modules-xml-wsdl-model}" 
offline="true" 
packagelistloc="${netbeans.javadoc.dir}/org-netbeans-modules-xml-wsdl-model"/>
diff --git a/nbbuild/javadoctools/properties.xml 
b/nbbuild/javadoctools/properties.xml
index 65a0f95efe..850e5c87b2 100644
--- a/nbbuild/javadoctools/properties.xml
+++ b/nbbuild/javadoctools/properties.xml
@@ -238,3 +238,5 @@
 <property name="javadoc.docs.org-netbeans-modules-db-core" 
value="${javadoc.web.root}/org-netbeans-modules-db-core"/>
 <property name="javadoc.docs.org-netbeans-modules-nativeimage-api" 
value="${javadoc.web.root}/org-netbeans-modules-nativeimage-api"/>
 <property name="javadoc.docs.org-netbeans-api-lsp" 
value="${javadoc.web.root}/org-netbeans-api-lsp"/>
+<property name="javadoc.docs.org-netbeans-modules-java-j2seplatform" 
value="${javadoc.web.root}/org-netbeans-modules-java-j2seplatform"/>
+<property name="javadoc.docs.org-netbeans-modules-xml-wsdl-model" 
value="${javadoc.web.root}/org-netbeans-modules-xml-wsdl-model"/>
diff --git a/nbbuild/javadoctools/replaces.xml 
b/nbbuild/javadoctools/replaces.xml
index e91145494c..c6471a423b 100644
--- a/nbbuild/javadoctools/replaces.xml
+++ b/nbbuild/javadoctools/replaces.xml
@@ -27,12 +27,11 @@
    to decide whether such change shall be commited to the repository
    or not
 -->
-<replacefilter token="@org-openide-compat@" 
value="${javadoc.docs.org-openide-compat}"/>
+
 <replacefilter token="@org-openide-util@" 
value="${javadoc.docs.org-openide-util}"/>
 <replacefilter token="@org-openide-nodes@" 
value="${javadoc.docs.org-openide-nodes}"/>
 <replacefilter token="@org-netbeans-modules-nbjunit@" 
value="${javadoc.docs.org-netbeans-modules-nbjunit}"/>
 <replacefilter token="@org-openide-actions@" 
value="${javadoc.docs.org-openide-actions}"/>
-<replacefilter token="@org-openide-options@" 
value="${javadoc.docs.org-openide-options}"/>
 <replacefilter token="@org-openide-awt@" 
value="${javadoc.docs.org-openide-awt}"/>
 <replacefilter token="@org-openide-dialogs@" 
value="${javadoc.docs.org-openide-dialogs}"/>
 <replacefilter token="@org-openide-explorer@" 
value="${javadoc.docs.org-openide-explorer}"/>
@@ -42,7 +41,6 @@
 <replacefilter token="@org-openide-loaders@" 
value="${javadoc.docs.org-openide-loaders}"/>
 <replacefilter token="@org-openide-io@" 
value="${javadoc.docs.org-openide-io}"/>
 <replacefilter token="@org-openide-execution@" 
value="${javadoc.docs.org-openide-execution}"/>
-<replacefilter token="@org-openidex-util@" 
value="${javadoc.docs.org-openidex-util}"/>
 <replacefilter token="@org-apache-tools-ant-module@" 
value="${javadoc.docs.org-apache-tools-ant-module}"/>
 <replacefilter token="@org-netbeans-modules-javahelp@" 
value="${javadoc.docs.org-netbeans-modules-javahelp}"/>
 <replacefilter token="@org-netbeans-modules-settings@" 
value="${javadoc.docs.org-netbeans-modules-settings}"/>
@@ -238,3 +236,11 @@
 <replacefilter token="@org-netbeans-modules-db-core@" 
value="${javadoc.docs.org-netbeans-modules-db-core}"/>
 <replacefilter token="@org-netbeans-modules-nativeimage-api@" 
value="${javadoc.docs.org-netbeans-modules-nativeimage-api}"/>
 <replacefilter token="@org-netbeans-api-lsp@" 
value="${javadoc.docs.org-netbeans-api-lsp}"/>
+<replacefilter token="@org-netbeans-modules-java-j2seplatform@" 
value="${javadoc.docs.org-netbeans-modules-java-j2seplatform}"/>
+<replacefilter token="@org-netbeans-modules-xml-wsdl-model@" 
value="${javadoc.docs.org-netbeans-modules-xml-wsdl-model}"/>
+<!-- deprecated -->
+<replacefilter token="@org-openidex-util@" 
value="${javadoc.docs.org-openidex-util}"/>
+<!-- deprecated not linked-->
+<!-- replacefilter token="@org-openide-compat@" 
value="${javadoc.docs.org-openide-compat}"/ -->
+<!-- replacefilter token="@org-openide-options@" 
value="${javadoc.docs.org-openide-options}"/ -->
+<!-- unsorted filter -->
\ No newline at end of file
diff --git a/nbbuild/javadoctools/template.xml 
b/nbbuild/javadoctools/template.xml
index f23003fd01..24f82886b0 100644
--- a/nbbuild/javadoctools/template.xml
+++ b/nbbuild/javadoctools/template.xml
@@ -62,9 +62,9 @@ cause it to fail.
     </target>
 
     <!-- javadoc -->
-    
+
     <target name="javadoc-init" >
-    
+
         <!-- Output dir (will create ${javadoc.name}/ and ${javadoc.name}.zip 
beneath this): -->
         <property name="javadoc.out" location="${netbeans.javadoc.dir}"/>
         <property name="javadoc.out.dir" 
location="${javadoc.out}/${javadoc.name}"/>
@@ -82,11 +82,10 @@ cause it to fail.
         <mkdir dir="${javadoc.overview}/../" />
         <property name="javadoc.apichanges" location="apichanges-empty.xml"/>
         <property name="javadoc.arch" location="arch-empty.xml"/>
-        
-        
+
         <!-- Docs to link to: -->
         <property name="javadoc.web.root" value="http://root/"/>
-        <property name="javadoc.docs.jdk" 
value="http://download.oracle.com/javase/8/docs/api"/>
+        <property name="javadoc.docs.jdk" 
value="https://docs.oracle.com/javase/8/docs/api"/>
         &properties;
         <!-- add more here as needed... -->
         <property name="javadoc.css.dir" location="."/>
@@ -117,19 +116,19 @@ cause it to fail.
                 <isset property="stability.image"/>
             </not>
         </condition>
-        
+
         <mkdir dir="${javadoc.out.dir}"/>
-        
+
         <condition property="javadoc.files.provided">
                <isset property="javadoc.files" />
         </condition>
-        
+
         <!-- default value for javadoc-files -->
         <selector id="all-java-files" >
             <filename name="**/*.java" />
         </selector>
         <property name="javadoc.files" value="all-java-files" />
-        
+
         <property file="../build.properties" />
 
         <condition property="javadoc.reference.generated" >
@@ -147,21 +146,21 @@ cause it to fail.
 </concat>
 
         <replace
-            token="${netbeans.javadoc.dir}" 
-            value="$${netbeans.javadoc.dir}" 
+            token="${netbeans.javadoc.dir}"
+            value="$${netbeans.javadoc.dir}"
             file="links.xml"
         />
-        
+
         <!-- set the property for use in this script -->
         <property name="javadoc.docs.${javadoc.name}" 
value="${javadoc.web.root}/${javadoc.name}" />
     </target>
-    
+
     <target name="javadoc-generate-overview" 
depends="javadoc-init,javadoc-check-timestamps" 
unless="javadoc.overview.should.not.be.generated" >
         <delete file="${javadoc.overview}" />
 
         <property file="${export.interfaces}/properties/all.properties" />
         <arch xsl="exportOverview.xsl" answers="${javadoc.arch}" 
output="${javadoc.overview}" stylesheet="prose.css"
-            apichanges="${javadoc.apichanges}" project="${javadoc.project}" 
+            apichanges="${javadoc.apichanges}" project="${javadoc.project}"
         >
             <!--
             <param name="changes-since-year" 
expression="${previous.release.year}"/>
@@ -243,7 +242,7 @@ cause it to fail.
         <!-- if no packages are specified, this is used to generate index.html 
from the overview page -->
         <copy file="${javadoc.overview}" 
tofile="${javadoc.out.dir}/index.html" />
     </target>
-    
+
     <target name="javadoc-stage-main" 
depends="javadoc-init,javadoc-check-timestamps,javadoc-exec-files,javadoc-exec-packages"
 unless="javadoc.should.not.be.generated" >
         <tstamp>
             <format property="YEAR" pattern="yyyy"/>
@@ -263,7 +262,7 @@ cause it to fail.
             <fileset refid="javadoc.resources.files"/>
         </copy>
     </target>
-    
+
     <target name="javadoc-exec-condition" depends="javadoc-check-timestamps" >
         <condition property="javadoc.exec.packages">
             <or>
@@ -280,12 +279,19 @@ cause it to fail.
         <!-- Timestamp is handled in javadoc.css to avoid too many commits on 
generated HTML files. -->
         <property name="javadoc.footer" value='&lt;span 
class="footnote"&gt;&lt;/span&gt;&lt;!-- See javadoc.css for timestamp 
information --&gt;'/>
     </target>
+
+    <condition property="apidoc.check" value="true" else="false">
+        <isset property="apidocfullcheck"/>
+        <!-- CI parameter -->
+        <!-- fail on error and warning as error means no javadoc content and 
missing page on bits.netbeans.org -->        
+    </condition>
     
     <target name="javadoc-exec-packages" 
depends="javadoc-init,javadoc-generate-references,javadoc-generate-overview,javadoc-exec-condition,javadoc-check-timestamps,javadoc-make-plain-title,javadoc-make-hyperlinked-title,javadoc-exec-condition,-javadoc-set-footer"
 unless="javadoc.exec.packages">
-        <javadoc source="${javac.source}" author="false" 
destdir="${javadoc.out.dir}" packagenames="${javadoc.packages}" 
stylesheetfile="${javadoc.css.main}" windowtitle="${javadoc.title}" 
overview="${javadoc.overview}" splitindex="true" use="true" version="false" 
useexternalfile="true" encoding="UTF-8">
+        <javadoc source="${javac.source}" failonerror="${apidoc.check}" 
failonwarning="${apidoc.check}" author="false" destdir="${javadoc.out.dir}" 
packagenames="${javadoc.packages}" stylesheetfile="${javadoc.css.main}" 
windowtitle="${javadoc.title}" overview="${javadoc.overview}" splitindex="true" 
use="true" version="false" useexternalfile="true" encoding="UTF-8">
             <sourcepath>
                 <pathelement location="${javadoc.docfiles}"/>
                 <pathelement location="${javadoc.src}"/>
+                <pathelement 
location="${javadoc.src}/../build/classes-generated"/>
             </sourcepath>
             <doclet
                 name="org.apidesign.javadoc.codesnippet.Doclet"
@@ -293,7 +299,7 @@ cause it to fail.
             >
                 <param name="-snippetpath" value="${javadoc.base}/src"/>
                 <param name="-snippetpath" 
value="${javadoc.base}/test/unit/src"/>
-                <param name="-maxLineLength" value="120"/>
+                <param name="-maxLineLength" value="240"/> <!-- 120 was too 
short -->
                 <param name="-snippetmode" value="jep413"/>
             </doclet>
             <classpath path="${javadoc.classpath}"/>
@@ -308,7 +314,6 @@ cause it to fail.
             <bottom>${javadoc.footer}</bottom>
             <!-- Avoid timestamp comments in _all_ html generated files, to 
reduce unnecessary git commits -->
             <arg value="-notimestamp" />
-            <arg value="--allow-script-in-comments" />
         </javadoc>
     </target>
     
@@ -369,12 +374,12 @@ cause it to fail.
         </taskdef>
         <!-- Warn about incorrect question version, but do not make build 
fail: -->
         <property name="arch.warn" value="true"/>
-        <arch answers="${javadoc.arch}" 
-            output="${javadoc.out.dir}/architecture-summary.html" 
-            stylesheet="prose.css" 
-            overviewlink="overview-summary.html" 
-            footer="@FOOTER@" 
-            project="${javadoc.project}" 
+        <arch answers="${javadoc.arch}"
+            output="${javadoc.out.dir}/architecture-summary.html"
+            stylesheet="prose.css"
+            overviewlink="overview-summary.html"
+            footer="@FOOTER@"
+            project="${javadoc.project}"
         />
     </target>
 
@@ -401,9 +406,9 @@ cause it to fail.
             </fileset>
         </concat>
     </target>
-    
+
     <target name="javadoc-stage-replace-apichanges" 
depends="javadoc-stage-main,javadoc-generate-references,javadoc-stage-alternative,javadoc-stage-apichanges,javadoc-stage-arch,javadoc-stage-export-interfaces"
 unless="javadoc.up.to.date" if="export.apichanges" >
-        <replace dir="${export.apichanges}" >        
+        <replace dir="${export.apichanges}" >
             <include name="${javadoc.name}"/>
             <replacefilter token="@JDK@" value="${javadoc.docs.jdk}"/>
             <replacefilter token="@FOOTER@" value="${javadoc.footer}"/>
@@ -422,7 +427,7 @@ cause it to fail.
             &replaces;
         </replace>
     </target>
-    
+
     <target name="javadoc-stage-replace" 
depends="javadoc-stage-main,javadoc-generate-references,javadoc-stage-alternative,javadoc-stage-apichanges,javadoc-stage-arch,javadoc-stage-export-interfaces,javadoc-stage-replace-interfaces,javadoc-stage-replace-apichanges"
 unless="javadoc.up.to.date">
         <replace dir="${javadoc.out.dir}">
             <include name="**/*.html"/>
@@ -430,7 +435,7 @@ cause it to fail.
             &replaces;
             <replacefilter token="@FOOTER@" value="${javadoc.footer}"/>
         </replace>
-        
+
         <replace dir="${javadoc.out.dir}">
             <include name="**/*.html"/>
             <replacefilter token="http://root/"; value="@TOP@.." />
@@ -442,6 +447,17 @@ cause it to fail.
         <replace dir="${javadoc.out.dir}" token="@TOP@/" value="@TOP@">
             <include name="**/*.html"/>
         </replace>
+        <replaceregexp match="href=&quot;.*\@TOP\@" 
replace="href=&quot;\@TOP\@" flags="g" >
+            <fileset dir="${javadoc.out.dir}" 
includes="index-files/**/*.html"/>
+        </replaceregexp>
+        <replaceregexp match="href=&quot;.*\@TOP\@" 
replace="href=&quot;\@TOP\@" flags="g" >
+            <fileset dir="${javadoc.out.dir}" 
includes="**/**/deprecated-list.html"/>
+        </replaceregexp>
+        <replaceregexp match="href=&quot;.*\@TOP\@" 
replace="href=&quot;\@TOP\@" flags="g" >
+            <fileset dir="${javadoc.out.dir}" 
includes="**/**/class-use/*.html"/>
+        </replaceregexp>
+
+
         <replace dir="${javadoc.out.dir}">
             <replacetoken><![CDATA[<ul class="navList" 
title="Navigation">]]></replacetoken>
             <replacevalue><![CDATA[<ul class="navList" 
title="Navigation"><li><a href="@[email protected]">API 
Changes</a></li><li><a href="@[email protected]">Architecture 
Summary</a></li>]]></replacevalue>
@@ -475,8 +491,14 @@ cause it to fail.
         <replace dir="${javadoc.out.dir}" token="@TOP@" 
value="../../../../../../../../">
             <include name="*/*/*/*/*/*/*/*/*.html"/>
         </replace>
+        <replace dir="${javadoc.out.dir}" token="@TOP@" 
value="../../../../../../../../../">
+            <include name="*/*/*/*/*/*/*/*/*/*.html"/>
+        </replace>
+        <replace dir="${javadoc.out.dir}" token="@TOP@" 
value="../../../../../../../../../../">
+            <include name="*/*/*/*/*/*/*/*/*/*/*.html"/>
+        </replace>
     </target>
-    
+
     <target name="javadoc-stage-check" depends="javadoc-stage-replace" 
unless="javadoc.up.to.date">
         <taskdef name="checklinks" classname="org.netbeans.nbbuild.CheckLinks">
             <classpath>
@@ -489,10 +511,12 @@ cause it to fail.
             <include name="apichanges.html"/>
             <include name="architecture-summary.html"/>
             <include name="**/package-summary.html"/>
-            <include name="**/doc-files/**/*.html"/>
+            <!--<include name="**/doc-files/**/*.html"/>-->
+            <include name="**/*.html"/>
             <!-- XXX why are not all **/*.html checked? Would then need to 
allow e.g. http://blogs.sun.com/geertjan/entry/swing_outline_component from 
OutlineView.html -->
             <!-- Make hyperlinks point to the source files, not the copied 
files: -->
             <!-- XXX but line numbers are wrong in several cases! -->
+            <!-- checking all html file for now on -->
             <mapper type="glob" 
from="${javadoc.out.dir}/overview-summary.html" to="${javadoc.arch}"/>
             <mapper type="glob" 
from="${javadoc.out.dir}/*/package-summary.html" 
to="${javadoc.docfiles}/*/package.html"/>
             <mapper type="glob" 
from="${javadoc.out.dir}/*/package-summary.html" 
to="${javadoc.src}/*/package.html"/>
@@ -501,7 +525,7 @@ cause it to fail.
             <mapper type="glob" from="${javadoc.out.dir}/*.html" 
to="${javadoc.docfiles}/*.html"/>
             <mapper type="glob" from="${javadoc.out.dir}/*.html" 
to="${javadoc.src}/*.html"/>
 
-                                               &disallowed-links;    
+                                               &disallowed-links;
         </checklinks>
         <!-- XXX run doctorj (doctorj.sf.net) if it is installed? -->
     </target>
diff --git a/nbbuild/licenses/MIT-jsoup22 b/nbbuild/licenses/MIT-jsoup22
new file mode 100644
index 0000000000..71023ffb20
--- /dev/null
+++ b/nbbuild/licenses/MIT-jsoup22
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2009-2022 Jonathan Hedley <[email protected]>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/nbbuild/nbproject/project.xml b/nbbuild/nbproject/project.xml
index fba343c8dd..b275928a62 100644
--- a/nbbuild/nbproject/project.xml
+++ b/nbbuild/nbproject/project.xml
@@ -208,7 +208,7 @@
         <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/4";>
             <compilation-unit>
                 <package-root>antsrc</package-root>
-                <classpath 
mode="compile">${ant.core.lib}:${nb_all}/platform/javahelp/external/jhall-2.0_05.jar:${nb_all}/nbbuild/external/json-simple-1.1.1.jar</classpath>
+                <classpath 
mode="compile">${ant.core.lib}:${nb_all}/platform/javahelp/external/jhall-2.0_05.jar:${nb_all}/nbbuild/external/json-simple-1.1.1.jar:${nb_all}/nbbuild/external/external/jsoup-1.15.3.jar</classpath>
                 <built-to>${nb.build.dir}/antclasses</built-to>
                 <built-to>${nbantext.jar}</built-to>
                 <source-level>1.8</source-level>
diff --git a/nbbuild/test/unit/src/org/netbeans/nbbuild/ArchQuestionsTest.java 
b/nbbuild/test/unit/src/org/netbeans/nbbuild/ArchQuestionsTest.java
index e4fd32f8e1..8886f578ce 100644
--- a/nbbuild/test/unit/src/org/netbeans/nbbuild/ArchQuestionsTest.java
+++ b/nbbuild/test/unit/src/org/netbeans/nbbuild/ArchQuestionsTest.java
@@ -189,7 +189,7 @@ public class ArchQuestionsTest extends TestBase implements 
EntityResolver {
             "Describe the overall architecture. \n" +
             "<hint>\n" +
             "What will be API for \n" +
-            "<a 
href='http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi'>\n"
 +
+            "<a 
href='https://netbeans.apache.org/wiki/API_Design#Separate_API_for_clients_from_support_API'>\n"
 +
                 "clients and what support API</a>? \n" +
             "What parts will be pluggable?\n" +
             "How will plug-ins be registered? Please use <code>&lt;api 
type='export'/&gt;</code>\n" +
@@ -286,7 +286,7 @@ public class ArchQuestionsTest extends TestBase implements 
EntityResolver {
             "Describe the overall architecture. \n" +
             "<hint>\n" +
             "What will be API for \n" +
-            "<a 
href='http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi'>\n"
 +
+            "<a 
href='https://netbeans.apache.org/wiki/API_Design#Separate_API_for_clients_from_support_API'>\n"
 +
                 "clients and what support API</a>? \n" +
             "What parts will be pluggable?\n" +
             "How will plug-ins be registered? Please use <code>&lt;api 
type='export'/&gt;</code>\n" +
diff --git a/nbbuild/test/unit/src/org/netbeans/nbbuild/arch-profiler.xml 
b/nbbuild/test/unit/src/org/netbeans/nbbuild/arch-profiler.xml
index 9cf34b5088..df86dc83d3 100644
--- a/nbbuild/test/unit/src/org/netbeans/nbbuild/arch-profiler.xml
+++ b/nbbuild/test/unit/src/org/netbeans/nbbuild/arch-profiler.xml
@@ -36,7 +36,7 @@
             Describe the overall architecture.
             <hint>
             What will be API for
-            <a 
href="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi";>
+            <a 
href="https://netbeans.apache.org/wiki/API_Design#Separate_API_for_clients_from_support_API";>
                 clients and what support API</a>?
             What parts will be pluggable?
             How will plug-ins be registered? Please use <code>&lt;api 
type="export"/&gt;</code>
@@ -77,7 +77,7 @@
 
 <!--
         <question id="arch-quality" when="init">
-            How will the <a 
href="http://www.netbeans.org/community/guidelines/q-evangelism.html";>quality</a>
+            How will the <a 
href="https://netbeans.apache.org/participate/qualityevangelism.html";>quality</a>
             of your code be tested and
             how are future regressions going to be prevented?
             <hint>
@@ -131,7 +131,7 @@
                 at the root of your javadoc
             </hint>
 
-            Describe the main <a 
href="http://openide.netbeans.org/tutorial/api-design.html#usecase";>
+            Describe the main <a 
href="https://netbeans.apache.org/wiki/API_Design#The_Importance_of_Being_Use_Case_Oriented";>
             use cases</a> of the new API. Who will use it under
             what circumstances? What kind of code would typically need to be 
written
             to use the module?
@@ -499,7 +499,7 @@
             <hint>
             If there is a property that can change the behavior of your
             code, somebody will likely use it. You should describe what it does
-            and the <a 
href="http://openide.netbeans.org/tutorial/api-design.html#life";>stability 
category</a>
+            and the <a 
href="https://netbeans.apache.org/wiki/API_Design#Life-cycle_of_an_API";>stability
 category</a>
             of this API. You may use
             <pre>
                 &lt;api type="export" group="property" name="id" 
category="private" url="http://..."&gt;
@@ -871,7 +871,7 @@
             <hint>
             As this is some kind of intermodule dependency, it is a kind of 
API.
             Please describe it and classify according to
-            <a 
href="http://openide.netbeans.org/tutorial/api-design.html#categories";>
+            <a href="https://netbeans.apache.org/wiki/API_Design#categories";>
             common stability categories</a>.
             </hint>
         </question>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


Reply via email to