From db84692cd7d8e44678fb8a588b6992b6e1847d34 Mon Sep 17 00:00:00 2001
From: jm041977 <john.marquez@broadcom.com>
Date: Mon, 4 Apr 2022 14:47:13 -0700
Subject: [PATCH 1/4] added docletenvironment as a parameter to DocProcessor
 functions

---
 .../jersey/wadl/doclet/DocProcessor.java          | 10 +++++++---
 .../jersey/wadl/doclet/DocProcessorWrapper.java   | 15 +++++++++------
 .../jersey/wadl/doclet/ResourceDoclet.java        |  6 +++---
 3 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
index 3f10dc8cb1..f68e581bfa 100644
--- a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
+++ b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
@@ -16,6 +16,7 @@
 
 package org.glassfish.jersey.wadl.doclet;
 
+import jdk.javadoc.doclet.DocletEnvironment;
 import org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.ClassDocType;
 import org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.MethodDocType;
 import org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.ParamDocType;
@@ -59,8 +60,9 @@ public interface DocProcessor {
      * @param classDoc     the class javadoc
      * @param classDocType the {@link ClassDocType} to extend. This will later be processed by the
      *                     {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
+     * @param docEnv       the doclet environment used to process the classDoc
      */
-    void processClassDoc(TypeElement classDoc, ClassDocType classDocType);
+    void processClassDoc(TypeElement classDoc, ClassDocType classDocType, DocletEnvironment docEnv);
 
     /**
      * Process the provided methodDoc and add your custom information to the methodDocType.<br>
@@ -68,8 +70,9 @@ public interface DocProcessor {
      * @param methodDoc     the {@link ExecutableElement} representing the docs of your method.
      * @param methodDocType the related {@link MethodDocType} that will later be processed by the
      *                      {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
+     * @param docEnv       the doclet environment used to process the classDoc
      */
-    void processMethodDoc(ExecutableElement methodDoc, MethodDocType methodDocType);
+    void processMethodDoc(ExecutableElement methodDoc, MethodDocType methodDocType, DocletEnvironment docEnv);
 
     /**
      * Use this method to extend the provided {@link ParamDocType} with the information from the
@@ -78,7 +81,8 @@ public interface DocProcessor {
      * @param parameter    the parameter (that is documented or not)
      * @param paramDocType the {@link ParamDocType} to extend. This will later be processed by the
      *                     {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
+     * @param docEnv       the doclet environment used to process the classDoc
      */
-    void processParamTag(VariableElement parameter, ParamDocType paramDocType);
+    void processParamTag(VariableElement parameter, ParamDocType paramDocType, DocletEnvironment docEnv);
 
 }
diff --git a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java
index aa3e28dfdb..bfa3ee7064 100644
--- a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java
+++ b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java
@@ -20,6 +20,7 @@
 import java.util.Arrays;
 import java.util.List;
 
+import jdk.javadoc.doclet.DocletEnvironment;
 import org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.ClassDocType;
 import org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.MethodDocType;
 import org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.ParamDocType;
@@ -74,25 +75,27 @@ public String[] getCDataElements() {
     }
 
     @Override
-    public void processClassDoc(TypeElement classDoc, ClassDocType classDocType) {
+    public void processClassDoc(TypeElement classDoc, ClassDocType classDocType, DocletEnvironment docEnv) {
         for (DocProcessor docProcessor : _docProcessors) {
-            docProcessor.processClassDoc(classDoc, classDocType);
+            docProcessor.processClassDoc(classDoc, classDocType, docEnv);
         }
     }
 
     @Override
     public void processMethodDoc(ExecutableElement methodDoc,
-                                 MethodDocType methodDocType) {
+                                 MethodDocType methodDocType,
+                                 DocletEnvironment docEnv) {
         for (DocProcessor docProcessor : _docProcessors) {
-            docProcessor.processMethodDoc(methodDoc, methodDocType);
+            docProcessor.processMethodDoc(methodDoc, methodDocType, docEnv);
         }
     }
 
     @Override
     public void processParamTag(VariableElement parameter,
-                                ParamDocType paramDocType) {
+                                ParamDocType paramDocType,
+                                DocletEnvironment docEnv) {
         for (DocProcessor docProcessor : _docProcessors) {
-            docProcessor.processParamTag(parameter, paramDocType);
+            docProcessor.processParamTag(parameter, paramDocType, docEnv);
         }
     }
 
diff --git a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java
index 944413f53b..bb3c082c42 100644
--- a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java
+++ b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java
@@ -157,7 +157,7 @@ public boolean run(DocletEnvironment docEnv) {
                     ClassDocType classDocType = new ClassDocType();
                     classDocType.setClassName(element.getQualifiedName().toString());
                     classDocType.setCommentText(getComments(docCommentTree));
-                    docProcessor.processClassDoc(element, classDocType);
+                    docProcessor.processClassDoc(element, classDocType, docEnv);
                     for (ExecutableElement method : ElementFilter.methodsIn(element.getEnclosedElements())) {
                         Map<DocTree.Kind, Map<String, String>> tags = getTags(docTrees.getDocCommentTree(method));
                         MethodTree methodTree = docTrees.getTree(method);
@@ -172,7 +172,7 @@ public boolean run(DocletEnvironment docEnv) {
                             arguments.append(parameter.asType()).append(COMA);
                             if (paramDocType != null) {
                                 methodDocType.getParamDocs().add(paramDocType);
-                                docProcessor.processParamTag(parameter, paramDocType);
+                                docProcessor.processParamTag(parameter, paramDocType, docEnv);
                             }
                         }
                         // Remove last comma if there are parameters
@@ -181,7 +181,7 @@ public boolean run(DocletEnvironment docEnv) {
                         }
                         arguments.append(")");
                         methodDocType.setMethodSignature(arguments.toString());
-                        docProcessor.processMethodDoc(method, methodDocType);
+                        docProcessor.processMethodDoc(method, methodDocType, docEnv);
                         methodDocType.setRequestDoc(buildRequestDocType(tags));
                         methodDocType.setResponseDoc(buildResponseDocType(tags));
                         classDocType.getMethodDocs().add(methodDocType);

From 6ede63ba338cb913f0f96cdc8b6fa5e599c09b52 Mon Sep 17 00:00:00 2001
From: jm041977 <john.marquez@broadcom.com>
Date: Mon, 4 Apr 2022 14:48:32 -0700
Subject: [PATCH 2/4] updated copyright

---
 .../java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java   | 2 +-
 .../org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java   | 2 +-
 .../java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
index f68e581bfa..dbc0402edf 100644
--- a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
+++ b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
diff --git a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java
index bfa3ee7064..af3d7f1b33 100644
--- a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java
+++ b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
diff --git a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java
index bb3c082c42..a6ec4a55eb 100644
--- a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java
+++ b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at

From 35760e0e88caa69677fd7b4fc052b2f7e48a108e Mon Sep 17 00:00:00 2001
From: jm041977 <john.marquez@broadcom.com>
Date: Mon, 11 Apr 2022 09:49:49 -0700
Subject: [PATCH 3/4] deprecated old process methods, added new process methods
 with doclet environment

---
 .../jersey/wadl/doclet/DocProcessor.java      | 50 ++++++++++++++++---
 .../wadl/doclet/DocProcessorWrapper.java      | 41 +++++++++++----
 .../jersey/wadl/doclet/ResourceDoclet.java    |  6 +--
 3 files changed, 79 insertions(+), 18 deletions(-)

diff --git a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
index dbc0402edf..36f620cce2 100644
--- a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
+++ b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
@@ -60,9 +60,9 @@ public interface DocProcessor {
      * @param classDoc     the class javadoc
      * @param classDocType the {@link ClassDocType} to extend. This will later be processed by the
      *                     {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
-     * @param docEnv       the doclet environment used to process the classDoc
      */
-    void processClassDoc(TypeElement classDoc, ClassDocType classDocType, DocletEnvironment docEnv);
+    @Deprecated
+    void processClassDoc(TypeElement classDoc, ClassDocType classDocType);
 
     /**
      * Process the provided methodDoc and add your custom information to the methodDocType.<br>
@@ -70,9 +70,9 @@ public interface DocProcessor {
      * @param methodDoc     the {@link ExecutableElement} representing the docs of your method.
      * @param methodDocType the related {@link MethodDocType} that will later be processed by the
      *                      {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
-     * @param docEnv       the doclet environment used to process the classDoc
      */
-    void processMethodDoc(ExecutableElement methodDoc, MethodDocType methodDocType, DocletEnvironment docEnv);
+    @Deprecated
+    void processMethodDoc(ExecutableElement methodDoc, MethodDocType methodDocType);
 
     /**
      * Use this method to extend the provided {@link ParamDocType} with the information from the
@@ -81,8 +81,46 @@ public interface DocProcessor {
      * @param parameter    the parameter (that is documented or not)
      * @param paramDocType the {@link ParamDocType} to extend. This will later be processed by the
      *                     {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
-     * @param docEnv       the doclet environment used to process the classDoc
      */
-    void processParamTag(VariableElement parameter, ParamDocType paramDocType, DocletEnvironment docEnv);
+    @Deprecated
+    void processParamTag(VariableElement parameter, ParamDocType paramDocType);
+
+    /**
+     * Use this method to extend the provided {@link ClassDocType} with the information from
+     * the given {@link TypeElement}.
+     *
+     * @param classDoc     the class javadoc
+     * @param classDocType the {@link ClassDocType} to extend. This will later be processed by the
+     *                     {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
+     * @param docEnv       the doclet environment used to extract info from classDoc
+     */
+    default void processClassDocWithDocEnv(TypeElement classDoc, ClassDocType classDocType, DocletEnvironment docEnv) {
+        processClassDoc(classDoc, classDocType);
+    }
+
+    /**
+     * Process the provided methodDoc and add your custom information to the methodDocType.<br>
+     *
+     * @param methodDoc     the {@link ExecutableElement} representing the docs of your method.
+     * @param methodDocType the related {@link MethodDocType} that will later be processed by the
+     *                      {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
+     * @param docEnv        the doclet environment used to extract info from methodDoc
+     */
+    default void processMethodDocWithDocEnv(ExecutableElement methodDoc, MethodDocType methodDocType, DocletEnvironment docEnv) {
+        processMethodDoc(methodDoc, methodDocType);
+    }
+
+    /**
+     * Use this method to extend the provided {@link ParamDocType} with the information from the
+     * given {@link ParamTag} and {@link Parameter}.
+     *
+     * @param parameter    the parameter (that is documented or not)
+     * @param paramDocType the {@link ParamDocType} to extend. This will later be processed by the
+     *                     {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
+     * @param docEnv       the Doclet Environment used to extract info from parameter
+     */
+    default void processParamTagWithDocEnv(VariableElement parameter, ParamDocType paramDocType, DocletEnvironment docEnv) {
+        processParamTag(parameter, paramDocType);
+    }
 
 }
diff --git a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java
index af3d7f1b33..03407dba02 100644
--- a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java
+++ b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessorWrapper.java
@@ -27,7 +27,6 @@
 
 import javax.lang.model.element.TypeElement;
 import javax.lang.model.element.ExecutableElement;
-import com.sun.source.doctree.ParamTree;
 import javax.lang.model.element.VariableElement;
 
 public class DocProcessorWrapper implements DocProcessor {
@@ -75,28 +74,52 @@ public String[] getCDataElements() {
     }
 
     @Override
-    public void processClassDoc(TypeElement classDoc, ClassDocType classDocType, DocletEnvironment docEnv) {
+    public void processClassDoc(TypeElement classDoc, ClassDocType classDocType) {
         for (DocProcessor docProcessor : _docProcessors) {
-            docProcessor.processClassDoc(classDoc, classDocType, docEnv);
+            docProcessor.processClassDoc(classDoc, classDocType);
         }
     }
 
     @Override
     public void processMethodDoc(ExecutableElement methodDoc,
-                                 MethodDocType methodDocType,
-                                 DocletEnvironment docEnv) {
+                                 MethodDocType methodDocType) {
         for (DocProcessor docProcessor : _docProcessors) {
-            docProcessor.processMethodDoc(methodDoc, methodDocType, docEnv);
+            docProcessor.processMethodDoc(methodDoc, methodDocType);
         }
     }
 
     @Override
     public void processParamTag(VariableElement parameter,
-                                ParamDocType paramDocType,
-                                DocletEnvironment docEnv) {
+                                ParamDocType paramDocType) {
         for (DocProcessor docProcessor : _docProcessors) {
-            docProcessor.processParamTag(parameter, paramDocType, docEnv);
+            docProcessor.processParamTag(parameter, paramDocType);
         }
     }
 
+    @Override
+    public void processClassDocWithDocEnv(TypeElement classDoc,
+                                          ClassDocType classDocType,
+                                          DocletEnvironment docEnv) {
+        for (DocProcessor docProcessor : _docProcessors) {
+            docProcessor.processClassDocWithDocEnv(classDoc, classDocType, docEnv);
+        }
+    }
+
+    @Override
+    public void processMethodDocWithDocEnv(ExecutableElement methodDoc,
+                                           MethodDocType methodDocType,
+                                           DocletEnvironment docEnv) {
+        for (DocProcessor docProcessor : _docProcessors) {
+            docProcessor.processMethodDocWithDocEnv(methodDoc, methodDocType, docEnv);
+        }
+    }
+
+    @Override
+    public void processParamTagWithDocEnv(VariableElement parameter,
+                                          ParamDocType paramDocType,
+                                          DocletEnvironment docEnv) {
+        for (DocProcessor docProcessor : _docProcessors) {
+            docProcessor.processParamTagWithDocEnv(parameter, paramDocType, docEnv);
+        }
+    }
 }
diff --git a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java
index a6ec4a55eb..64e24f42c9 100644
--- a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java
+++ b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/ResourceDoclet.java
@@ -157,7 +157,7 @@ public boolean run(DocletEnvironment docEnv) {
                     ClassDocType classDocType = new ClassDocType();
                     classDocType.setClassName(element.getQualifiedName().toString());
                     classDocType.setCommentText(getComments(docCommentTree));
-                    docProcessor.processClassDoc(element, classDocType, docEnv);
+                    docProcessor.processClassDocWithDocEnv(element, classDocType, docEnv);
                     for (ExecutableElement method : ElementFilter.methodsIn(element.getEnclosedElements())) {
                         Map<DocTree.Kind, Map<String, String>> tags = getTags(docTrees.getDocCommentTree(method));
                         MethodTree methodTree = docTrees.getTree(method);
@@ -172,7 +172,7 @@ public boolean run(DocletEnvironment docEnv) {
                             arguments.append(parameter.asType()).append(COMA);
                             if (paramDocType != null) {
                                 methodDocType.getParamDocs().add(paramDocType);
-                                docProcessor.processParamTag(parameter, paramDocType, docEnv);
+                                docProcessor.processParamTagWithDocEnv(parameter, paramDocType, docEnv);
                             }
                         }
                         // Remove last comma if there are parameters
@@ -181,7 +181,7 @@ public boolean run(DocletEnvironment docEnv) {
                         }
                         arguments.append(")");
                         methodDocType.setMethodSignature(arguments.toString());
-                        docProcessor.processMethodDoc(method, methodDocType, docEnv);
+                        docProcessor.processMethodDocWithDocEnv(method, methodDocType, docEnv);
                         methodDocType.setRequestDoc(buildRequestDocType(tags));
                         methodDocType.setResponseDoc(buildResponseDocType(tags));
                         classDocType.getMethodDocs().add(methodDocType);

From 71872babcbb724e147c723944f33870865f8895b Mon Sep 17 00:00:00 2001
From: jm041977 <john.marquez@broadcom.com>
Date: Mon, 11 Apr 2022 09:52:53 -0700
Subject: [PATCH 4/4] updated javadoc

---
 .../java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
index 36f620cce2..feb1f4331f 100644
--- a/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
+++ b/ext/wadl-doclet/src/main/java12/org/glassfish/jersey/wadl/doclet/DocProcessor.java
@@ -112,7 +112,7 @@ default void processMethodDocWithDocEnv(ExecutableElement methodDoc, MethodDocTy
 
     /**
      * Use this method to extend the provided {@link ParamDocType} with the information from the
-     * given {@link ParamTag} and {@link Parameter}.
+     * given {@link VariableElement}.
      *
      * @param parameter    the parameter (that is documented or not)
      * @param paramDocType the {@link ParamDocType} to extend. This will later be processed by the