You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by jl...@apache.org on 2019/04/09 19:49:02 UTC
[incubator-netbeans] branch master updated: Eliminating remaining
usages of old javadoc API and implementation
This is an automated email from the ASF dual-hosted git repository.
jlahoda pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 5f675e8 Eliminating remaining usages of old javadoc API and implementation
5f675e8 is described below
commit 5f675e88a3ae3fee652332f9faf2f1985508c272
Author: Jan Lahoda <la...@gmail.com>
AuthorDate: Tue Apr 9 21:48:57 2019 +0200
Eliminating remaining usages of old javadoc API and implementation
Includes patch by arusinha to update nb-javac in libs.javacapi/libs.javacimpl to nb-javac without the old javadoc API.
---
.../nbproject/project.properties | 2 -
enterprise/web.jsf/nbproject/project.properties | 1 -
.../websvc/design/javamodel/JavadocModel.java | 33 --
.../modules/websvc/design/javamodel/Utils.java | 37 +-
.../netbeans/api/java/source/ElementUtilities.java | 42 --
.../netbeans/modules/java/source/JavadocEnv.java | 438 ---------------------
.../java/source/indexing/VanillaCompileWorker.java | 16 +-
.../modules/java/source/parsing/JavacParser.java | 21 +-
.../nbjavac/parsing/ContextEnhancerImpl.java | 5 +-
.../netbeans/modules/javadoc/hints/Analyzer.java | 92 +++--
.../modules/javadoc/hints/JavadocUtilities.java | 23 +-
.../modules/javadoc/hints/Analyzer2Test.java | 19 +-
.../lib/nbjavac/services/NBClassWriter.java | 2 -
.../lib/nbjavac/services/NBJavadocClassFinder.java | 59 ---
.../lib/nbjavac/services/NBJavadocEnter.java | 94 -----
.../lib/nbjavac/services/NBJavadocMemberEnter.java | 102 -----
.../services/{NBMessager.java => NBLog.java} | 36 +-
.../lib/nbjavac/services/NBMemberEnter.java | 18 +-
.../netbeans/lib/nbjavac/services/NBAttrTest.java | 2 +-
.../lib/nbjavac/services/NBClassWriterTest.java | 4 +-
.../netbeans/lib/nbjavac/services/Utilities.java | 5 +-
java/libs.javacapi/external/binaries-list | 2 +-
java/libs.javacapi/nbproject/project.xml | 1 -
java/libs.javacimpl/external/binaries-list | 2 +-
.../IntroduceLocalExtensionTransformer.java | 14 +-
.../java/plugins/MoveMembersTransformer.java | 36 +-
.../refactoring/java/ui/ChangeParametersPanel.java | 6 +-
.../java/ui/IntroduceParameterPanel.java | 6 +-
.../modules/java/hints/spiimpl/Utilities.java | 21 +-
.../netbeans/spi/java/hints/JavaFixUtilities.java | 15 +-
nbbuild/build.xml | 5 +-
nbbuild/templates/projectized.xml | 3 +
32 files changed, 205 insertions(+), 957 deletions(-)
diff --git a/enterprise/j2ee.ejbverification/nbproject/project.properties b/enterprise/j2ee.ejbverification/nbproject/project.properties
index 2804a56..4afe2d4 100644
--- a/enterprise/j2ee.ejbverification/nbproject/project.properties
+++ b/enterprise/j2ee.ejbverification/nbproject/project.properties
@@ -19,7 +19,5 @@ javac.source=1.7
# requires nb.javac for compiling of tests on Mac
requires.nb.javac=true
-# 183728: hack to make java.hints compilable even though javac impl is on the bootclasspath:
-bootclasspath.prepend=${nb_all}/libs.javacapi/external/nb-javac-api.jar${path.separator}${nb_all}/libs.javacimpl/external/nb-javac-impl.jar
# JavaEE API classes
test.unit.cp.extra=${nb_all}/enterprise/javaee7.api/external/javaee-api-7.0.jar
diff --git a/enterprise/web.jsf/nbproject/project.properties b/enterprise/web.jsf/nbproject/project.properties
index 74718b9..ce2b934 100644
--- a/enterprise/web.jsf/nbproject/project.properties
+++ b/enterprise/web.jsf/nbproject/project.properties
@@ -33,4 +33,3 @@ test.config.stableBTD.excludes=\
**/SyncUpdateTest.class
requires.nb.javac=true
-bootclasspath.prepend=${nb_all}/libs.javacapi/external/nb-javac-api.jar${path.separator}${nb_all}/libs.javacimpl/external/nb-javac-impl.jar
diff --git a/enterprise/websvc.design/src/org/netbeans/modules/websvc/design/javamodel/JavadocModel.java b/enterprise/websvc.design/src/org/netbeans/modules/websvc/design/javamodel/JavadocModel.java
index 08c4183..cc6260b 100644
--- a/enterprise/websvc.design/src/org/netbeans/modules/websvc/design/javamodel/JavadocModel.java
+++ b/enterprise/websvc.design/src/org/netbeans/modules/websvc/design/javamodel/JavadocModel.java
@@ -50,39 +50,6 @@ public class JavadocModel {
this.text=text;
}
- public List<String> getInlineJavadoc() {
- return inlineJavadoc;
- }
-
- void setInlineJavadoc(List<String> inlineJavadoc) {
- this.inlineJavadoc = inlineJavadoc;
- }
-
- public List<String> getParamJavadoc() {
- return paramJavadoc;
- }
-
- void setParamJavadoc(List<String> paramJavadoc) {
- this.paramJavadoc = paramJavadoc;
- }
-
- public List<String> getThrowsJavadoc() {
- return throwsJavadoc;
- }
-
- void setThrowsJavadoc(List<String> throwsJavadoc) {
- this.throwsJavadoc = throwsJavadoc;
- }
-
- public String getReturnJavadoc() {
- return returnJavadoc;
- }
-
- void setReturnJavadoc(String returnJavadoc) {
- this.returnJavadoc = returnJavadoc;
- }
-
-
public boolean isEqualTo(JavadocModel model) {
if (!Utils.isEqualTo(text,model.text)) return false;
return true;
diff --git a/enterprise/websvc.design/src/org/netbeans/modules/websvc/design/javamodel/Utils.java b/enterprise/websvc.design/src/org/netbeans/modules/websvc/design/javamodel/Utils.java
index ff6e694..5367157 100644
--- a/enterprise/websvc.design/src/org/netbeans/modules/websvc/design/javamodel/Utils.java
+++ b/enterprise/websvc.design/src/org/netbeans/modules/websvc/design/javamodel/Utils.java
@@ -94,8 +94,7 @@ import org.openide.util.Mutex;
import org.openide.util.MutexException;
import org.openide.util.NbBundle;
-import com.sun.javadoc.Doc;
-import com.sun.javadoc.Tag;
+import com.sun.source.doctree.DocCommentTree;
import com.sun.source.tree.ClassTree;
import com.sun.source.tree.MethodTree;
import com.sun.source.tree.Tree;
@@ -505,38 +504,10 @@ public class Utils {
ExecutableElement methodEl, MethodModel methodModel )
{
// populate javadoc
- Doc javadoc = controller.getElementUtilities().javaDocFor(methodEl);
+ DocCommentTree javadoc = controller.getDocTrees().getDocCommentTree(methodEl);
if (javadoc!=null) {
//methodModel.setJavadoc(javadoc.getRawCommentText());
- JavadocModel javadocModel = new JavadocModel(javadoc.getRawCommentText());
- // @param part
- Tag[] paramTags = javadoc.tags("@param"); //NOI18N
- List<String> paramJavadoc = new ArrayList<String>();
- for (Tag paramTag:paramTags) {
- paramJavadoc.add(paramTag.text());
- }
- javadocModel.setParamJavadoc(paramJavadoc);
-
- // @return part
- Tag[] returnTags = javadoc.tags("@return"); //NOI18N
- if (returnTags.length>0) {
- javadocModel.setReturnJavadoc(returnTags[0].text());
- }
- // @throws part
- Tag[] throwsTags = javadoc.tags("@throws"); //NOI18N
- List<String> throwsJavadoc = new ArrayList<String>();
- for (Tag throwsTag:throwsTags) {
- throwsJavadoc.add(throwsTag.text());
- }
- javadocModel.setThrowsJavadoc(throwsJavadoc);
-
- // rest part
- Tag[] inlineTags = javadoc.inlineTags(); //NOI18N
- List<String> inlineJavadoc = new ArrayList<String>();
- for (Tag inlineTag:inlineTags) {
- throwsJavadoc.add(inlineTag.text());
- }
- javadocModel.setInlineJavadoc(inlineJavadoc);
+ JavadocModel javadocModel = new JavadocModel(javadoc.toString());
methodModel.setJavadoc(javadocModel);
}
}
@@ -801,7 +772,7 @@ public class Utils {
return;
}
- Doc javadoc = workingCopy.getElementUtilities().javaDocFor(method);
+ DocCommentTree javadoc = workingCopy.getDocTrees().getDocCommentTree(method);
if ( javadoc != null ){
make.removeComment(newMethod, 0, true);
}
diff --git a/java/java.source.base/src/org/netbeans/api/java/source/ElementUtilities.java b/java/java.source.base/src/org/netbeans/api/java/source/ElementUtilities.java
index 665c0e7..0c1737d 100644
--- a/java/java.source.base/src/org/netbeans/api/java/source/ElementUtilities.java
+++ b/java/java.source.base/src/org/netbeans/api/java/source/ElementUtilities.java
@@ -18,7 +18,6 @@
*/
package org.netbeans.api.java.source;
-import com.sun.javadoc.Doc;
import com.sun.source.tree.CompilationUnitTree;
import com.sun.source.tree.Scope;
import com.sun.source.util.DocTrees;
@@ -47,7 +46,6 @@ import com.sun.tools.javac.model.JavacElements;
import com.sun.tools.javac.model.JavacTypes;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.Names;
-import com.sun.tools.javadoc.main.DocEnv;
import java.util.ArrayDeque;
import java.util.ArrayList;
@@ -88,7 +86,6 @@ import org.netbeans.api.annotations.common.CheckForNull;
import org.netbeans.api.annotations.common.NonNull;
import org.netbeans.api.annotations.common.NullAllowed;
import org.netbeans.modules.java.source.builder.ElementsService;
-import org.netbeans.modules.java.source.JavadocEnv;
import org.netbeans.modules.java.source.base.SourceLevelUtils;
import org.openide.util.Parameters;
@@ -208,45 +205,6 @@ public final class ElementUtilities {
}
}
- /**Get javadoc for given element.
- * @deprecated The new DocTree API should be used to traverse Javadoc comments.
- * Use {@link DocTrees#getDocCommentTree(javax.lang.model.element.Element)} instead.
- */
- @Deprecated
- public Doc javaDocFor(Element element) {
- if (element != null) {
- DocEnv env = DocEnv.instance(ctx);
- switch (element.getKind()) {
- case ANNOTATION_TYPE:
- case CLASS:
- case ENUM:
- case INTERFACE:
- return env.getClassDoc((ClassSymbol)element);
- case ENUM_CONSTANT:
- case FIELD:
- return env.getFieldDoc((VarSymbol)element);
- case METHOD:
- if (((MethodSymbol)element).enclClass().getKind() == ElementKind.ANNOTATION_TYPE)
- return env.getAnnotationTypeElementDoc((MethodSymbol)element);
- return env.getMethodDoc((MethodSymbol)element);
- case CONSTRUCTOR:
- return env.getConstructorDoc((MethodSymbol)element);
- case PACKAGE:
- return env.getPackageDoc((PackageSymbol)element);
- }
- }
- return null;
- }
-
- /**Find a {@link Element} corresponding to a given {@link Doc}.
- * @deprecated The new DocTree API should be used to traverse Javadoc comments.
- * Use {@link DocTrees#getElement(com.sun.source.util.DocTreePath)} instead.
- */
- @Deprecated
- public Element elementFor(Doc doc) {
- return (doc instanceof JavadocEnv.ElementHolder) ? ((JavadocEnv.ElementHolder)doc).getElement() : null;
- }
-
/**
* Returns all members of a type, whether inherited or
* declared directly. For a class the result also includes its
diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/JavadocEnv.java b/java/java.source.base/src/org/netbeans/modules/java/source/JavadocEnv.java
deleted file mode 100644
index 1de5a75..0000000
--- a/java/java.source.base/src/org/netbeans/modules/java/source/JavadocEnv.java
+++ /dev/null
@@ -1,438 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.netbeans.modules.java.source;
-
-import com.sun.javadoc.ClassDoc;
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.Flags;
-import com.sun.tools.javac.code.Kinds;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Symbol.MethodSymbol;
-import com.sun.tools.javac.code.Symbol.PackageSymbol;
-import com.sun.tools.javac.code.Symbol.TypeSymbol;
-import com.sun.tools.javac.code.Symbol.VarSymbol;
-import com.sun.tools.javac.code.TypeTag;
-import com.sun.tools.javac.tree.JCTree.JCClassDecl;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.util.Names;
-import com.sun.tools.javadoc.main.AnnotationTypeDocImpl;
-import com.sun.tools.javadoc.main.AnnotationTypeElementDocImpl;
-import com.sun.tools.javadoc.main.ClassDocImpl;
-import com.sun.tools.javadoc.main.ConstructorDocImpl;
-import com.sun.tools.javadoc.main.DocEnv;
-import com.sun.tools.javadoc.main.ExecutableMemberDocImpl;
-import com.sun.tools.javadoc.main.FieldDocImpl;
-import com.sun.tools.javadoc.main.MethodDocImpl;
-import com.sun.tools.javadoc.main.ModifierFilter;
-import com.sun.tools.javadoc.main.PackageDocImpl;
-import com.sun.tools.javadoc.main.ProgramElementDocImpl;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.StringTokenizer;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.lang.model.element.Element;
-import org.netbeans.api.java.source.Task;
-import org.netbeans.api.java.source.ClasspathInfo;
-import org.netbeans.api.java.source.CompilationController;
-import org.netbeans.api.java.source.ElementHandle;
-import org.netbeans.api.java.source.JavaSource;
-import org.netbeans.api.java.source.JavaSource.Phase;
-import org.netbeans.api.java.source.SourceUtils;
-import org.openide.filesystems.FileObject;
-import org.openide.util.Exceptions;
-
-/**
- *
- * @author Dusan Balek
- */
-public class JavadocEnv extends DocEnv {
-
- public static void preRegister(final Context context, final ClasspathInfo cpInfo) {
- context.put(docEnvKey, new Context.Factory<DocEnv>() {
- public DocEnv make(Context c) {
- return new JavadocEnv(c, cpInfo);
- }
- });
- }
-
- private ClasspathInfo cpInfo;
- private Context ctx;
-
- private JavadocEnv(Context context, ClasspathInfo cpInfo) {
- super(context);
- this.ctx = context;
- this.cpInfo = cpInfo;
- this.showAccess = new ModifierFilter(ModifierFilter.ALL_ACCESS);
- this.legacyDoclet = false;
- }
-
- @Override
- public ClassDocImpl getClassDoc(ClassSymbol clazz) {
- if (clazz.type.hasTag(TypeTag.UNKNOWN)) {
- return null;
- }
- ClassDocImpl result = classMap.get(clazz);
- if (result != null) return result;
- if (isAnnotationType(clazz)) {
- result = new JavadocAnnotation(this, clazz);
- } else {
- result = new JavadocClass(this, clazz);
- }
- classMap.put(clazz, result);
- return result;
- }
-
- @Override
- protected void makeClassDoc(ClassSymbol clazz, TreePath treePath) {
- if (clazz.type.hasTag(TypeTag.UNKNOWN)) {
- return;
- }
- ClassDocImpl result = classMap.get(clazz);
- if (result != null) {
- if (treePath != null) setTreePath(result, treePath);
- return;
- }
- if (isAnnotationType((JCClassDecl)treePath.getLeaf())) { // flags of clazz may not yet be set
- result = new JavadocAnnotation(this, clazz, treePath);
- } else {
- result = new JavadocClass(this, clazz, treePath);
- }
- classMap.put(clazz, result);
- }
-
- @Override
- public FieldDocImpl getFieldDoc(VarSymbol var) {
- FieldDocImpl result = fieldMap.get(var);
- if (result != null) return result;
- result = new JavadocField(this, var);
- fieldMap.put(var, result);
- return result;
- }
-
- @Override
- protected void makeFieldDoc(VarSymbol var, TreePath treePath) {
- FieldDocImpl result = fieldMap.get(var);
- if (result != null) {
- if (treePath != null) setTreePath(result, treePath);
- } else {
- result = new JavadocField(this, var, treePath);
- fieldMap.put(var, result);
- }
- }
-
- @Override
- public MethodDocImpl getMethodDoc(MethodSymbol meth) {
- ExecutableMemberDocImpl docImpl = methodMap.get(meth);
- if (docImpl != null && !docImpl.isMethod())
- return null;
- MethodDocImpl result = (MethodDocImpl)docImpl;
- if (result != null) return result;
- result = new JavadocMethod(this, meth);
- methodMap.put(meth, result);
- return result;
- }
-
- @Override
- protected void makeMethodDoc(MethodSymbol meth, TreePath treePath) {
- MethodDocImpl result = (MethodDocImpl)methodMap.get(meth);
- if (result != null) {
- if (treePath != null) setTreePath(result, treePath);
- } else {
- result = new JavadocMethod(this, meth, treePath);
- methodMap.put(meth, result);
- }
- }
-
- @Override
- public ConstructorDocImpl getConstructorDoc(MethodSymbol meth) {
- ExecutableMemberDocImpl docImpl = methodMap.get(meth);
- if (docImpl != null && !docImpl.isConstructor())
- return null;
- ConstructorDocImpl result = (ConstructorDocImpl)docImpl;
- if (result != null) return result;
- result = new JavadocConstructor(this, meth);
- methodMap.put(meth, result);
- return result;
- }
-
- @Override
- protected void makeConstructorDoc(MethodSymbol meth, TreePath treePath) {
- ConstructorDocImpl result = (ConstructorDocImpl)methodMap.get(meth);
- if (result != null) {
- if (treePath != null) setTreePath(result, treePath);
- } else {
- result = new JavadocConstructor(this, meth, treePath);
- methodMap.put(meth, result);
- }
- }
-
- @Override
- public AnnotationTypeElementDocImpl getAnnotationTypeElementDoc(MethodSymbol meth) {
- ExecutableMemberDocImpl docImpl = methodMap.get(meth);
- if (docImpl != null && !docImpl.isAnnotationTypeElement())
- return null;
- AnnotationTypeElementDocImpl result = (AnnotationTypeElementDocImpl)docImpl;
- if (result != null) return result;
- result = new JavadocAnnotationTypeElement(this, meth);
- methodMap.put(meth, result);
- return result;
- }
-
- @Override
- protected void makeAnnotationTypeElementDoc(MethodSymbol meth, TreePath treePath) {
- AnnotationTypeElementDocImpl result = (AnnotationTypeElementDocImpl)methodMap.get(meth);
- if (result != null) {
- if (treePath != null) setTreePath(result, treePath);
- } else {
- result = new JavadocAnnotationTypeElement(this, meth, treePath);
- methodMap.put(meth, result);
- }
- }
-
- private void setTreePath(ProgramElementDocImpl pe, TreePath treePath) {
- try {
- Method setTreePath = ProgramElementDocImpl.class.getDeclaredMethod("setTreePath", TreePath.class);
- setTreePath.setAccessible(true);
- setTreePath.invoke(pe, treePath);
- } catch (Throwable ex) {
- Logger.getLogger(JavadocEnv.class.getName()).log(Level.FINE, null, ex);
- }
- }
-
- /**
- * Return the AnnotationTypeElementDoc for a MethodSymbol.
- * Should be called only on symbols representing annotation type elements.
- */
- @Override
- public PackageDocImpl getPackageDoc(PackageSymbol pack) {
- PackageDocImpl result = packageMap.get(pack);
- if (result != null) return result;
- result = new JavaDocPackage(this, pack, ctx);
- packageMap.put(pack, result);
- return result;
- }
-
- @Override
- public ClassDocImpl lookupClass(String name) {
- ClassDocImpl cls = super.lookupClass(name);
- if (cls == null && name != null && !name.isEmpty())
- cls = loadClass(name);
- return cls;
- }
-
- public interface ElementHolder {
- Element getElement();
- }
-
- private String getRawCommentFor(Element element) {
- try {
- FileObject fo = SourceUtils.getFile(element, cpInfo);
- if (fo != null) {
- JavaSource js = JavaSource.forFileObject(fo);
- if (js != null) {
- final String[] ret = new String[1];
- final ElementHandle<? extends Element> handle = ElementHandle.create(element);
- js.runUserActionTask(new Task<CompilationController>() {
- public void run(CompilationController controller) throws Exception {
- controller.toPhase(Phase.ELEMENTS_RESOLVED);
- Element e = handle.resolve(controller);
- if (e != null)
- ret[0] = controller.getElements().getDocComment(e);
- }
- },true);
- return ret[0] != null ? ret[0] : ""; //NOI18N
- }
- }
- } catch (IOException ex) {
- Exceptions.printStackTrace(ex);
- }
- return ""; //NOI18N
- }
-
- private class JavadocClass extends ClassDocImpl implements ElementHolder {
-
- private JavadocClass(DocEnv env, ClassSymbol sym) {
- super(env, sym);
- }
-
- private JavadocClass(DocEnv env, ClassSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- }
-
- @Override
- protected String documentation() {
- if (documentation == null) {
- setRawCommentText(getRawCommentFor(getElement()));
- }
- return documentation;
- }
-
- public Element getElement() {
- return tsym;
- }
- }
-
- private class JavadocAnnotation extends AnnotationTypeDocImpl implements ElementHolder {
-
- private JavadocAnnotation(DocEnv env, ClassSymbol sym) {
- super(env, sym);
- }
-
- private JavadocAnnotation(DocEnv env, ClassSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- }
-
- @Override
- protected String documentation() {
- if (documentation == null) {
- setRawCommentText(getRawCommentFor(getElement()));
- }
- return documentation;
- }
-
- public Element getElement() {
- return tsym;
- }
- }
-
- private class JavadocField extends FieldDocImpl implements ElementHolder {
-
- private JavadocField(DocEnv env, VarSymbol sym) {
- super(env, sym);
- }
-
- private JavadocField(DocEnv env, VarSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- }
-
- @Override
- protected String documentation() {
- if (documentation == null) {
- setRawCommentText(getRawCommentFor(getElement()));
- }
- return documentation;
- }
-
- public Element getElement() {
- return sym;
- }
- }
-
- private class JavadocMethod extends MethodDocImpl implements ElementHolder {
-
- private JavadocMethod(DocEnv env, MethodSymbol sym) {
- super(env, sym);
- }
-
- private JavadocMethod(DocEnv env, MethodSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- }
-
- @Override
- protected String documentation() {
- if (documentation == null) {
- setRawCommentText(getRawCommentFor(getElement()));
- }
- return documentation;
- }
-
- public Element getElement() {
- return sym;
- }
- }
-
- private class JavadocConstructor extends ConstructorDocImpl implements ElementHolder {
-
- private JavadocConstructor(DocEnv env, MethodSymbol sym) {
- super(env, sym);
- }
-
- private JavadocConstructor(DocEnv env, MethodSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- }
-
- @Override
- protected String documentation() {
- if (documentation == null) {
- setRawCommentText(getRawCommentFor(getElement()));
- }
- return documentation;
- }
-
- public Element getElement() {
- return sym;
- }
- }
-
- private class JavadocAnnotationTypeElement extends AnnotationTypeElementDocImpl implements ElementHolder {
-
- private JavadocAnnotationTypeElement(DocEnv env, MethodSymbol sym) {
- super(env, sym);
- }
-
- private JavadocAnnotationTypeElement(DocEnv env, MethodSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- }
-
- @Override
- protected String documentation() {
- if (documentation == null) {
- setRawCommentText(getRawCommentFor(getElement()));
- }
- return documentation;
- }
-
- public Element getElement() {
- return sym;
- }
- }
-
- private class JavaDocPackage extends PackageDocImpl implements ElementHolder {
-
- private JavaDocPackage(DocEnv env, PackageSymbol sym, Context ctx) {
- super(env, sym);
- }
-
- public ClassDoc findClass(String className) {
- Names nameTable = Names.instance(ctx);
- StringTokenizer st = new StringTokenizer(className, "."); //NOI18N
- TypeSymbol s = sym;
- while(s != null && st.hasMoreTokens()) {
- Name clsName = nameTable.fromString(st.nextToken());
- TypeSymbol ts = null;
- for (Symbol symbol : s.members().getSymbolsByName(clsName)) {
- if (symbol.kind == Kinds.Kind.TYP && (symbol.flags_field & Flags.SYNTHETIC) == 0) {
- ts = (TypeSymbol)symbol;
- break;
- }
- }
- s = ts;
- }
- return s instanceof ClassSymbol ? env.getClassDoc((ClassSymbol)s) : null;
- }
-
- public Element getElement() {
- return sym;
- }
- }
-}
diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorker.java b/java/java.source.base/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorker.java
index fcf16a2..a7f4cb0 100644
--- a/java/java.source.base/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorker.java
+++ b/java/java.source.base/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorker.java
@@ -66,6 +66,7 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.lang.reflect.Field;
import java.net.URL;
import java.util.*;
import java.util.Map.Entry;
@@ -598,8 +599,19 @@ final class VanillaCompileWorker extends CompileWorker {
Type.WildcardType wt = ((Type.WildcardType) t);
wt.type = error2Object(wt.type);
TypeVar tv = wt.bound;
- tv.bound = error2Object(tv.bound);
- tv.lower = error2Object(tv.lower);
+ if (tv != null) {
+ String[] boundNames = {"bound", "_bound"};
+ for (String boundName : boundNames) {
+ try {
+ Field bound = tv.getClass().getDeclaredField(boundName);
+ bound.setAccessible(true);
+ bound.set(tv, error2Object((Type) bound.get(tv)));
+ } catch (IllegalAccessException | NoSuchFieldException | SecurityException ex) {
+ JavaIndex.LOG.log(Level.FINEST, null, ex);
+ }
+ }
+ tv.lower = error2Object(tv.lower);
+ }
break;
}
}
diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/JavacParser.java b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/JavacParser.java
index b6e8017..10dba1d 100644
--- a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/JavacParser.java
+++ b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/JavacParser.java
@@ -88,7 +88,6 @@ import org.netbeans.lib.editor.util.swing.PositionRegion;
import org.netbeans.modules.java.preprocessorbridge.spi.JavaFileFilterImplementation;
import org.netbeans.modules.java.source.JavaFileFilterQuery;
import org.netbeans.modules.java.source.JavaSourceAccessor;
-import org.netbeans.modules.java.source.JavadocEnv;
import org.netbeans.modules.java.source.PostFlowAnalysis;
import org.netbeans.modules.java.source.indexing.APTUtils;
import org.netbeans.modules.java.source.indexing.FQN2Files;
@@ -97,14 +96,11 @@ import org.netbeans.lib.nbjavac.services.NBClassFinder;
import org.netbeans.lib.nbjavac.services.NBClassReader;
import org.netbeans.lib.nbjavac.services.NBEnter;
import org.netbeans.lib.nbjavac.services.NBJavaCompiler;
-import org.netbeans.lib.nbjavac.services.NBJavadocEnter;
-import org.netbeans.lib.nbjavac.services.NBJavadocMemberEnter;
import org.netbeans.lib.nbjavac.services.NBMemberEnter;
import org.netbeans.lib.nbjavac.services.NBParserFactory;
import org.netbeans.lib.nbjavac.services.NBClassWriter;
import org.netbeans.lib.nbjavac.services.NBJavacTrees;
-import org.netbeans.lib.nbjavac.services.NBJavadocClassFinder;
-import org.netbeans.lib.nbjavac.services.NBMessager;
+import org.netbeans.lib.nbjavac.services.NBLog;
import org.netbeans.lib.nbjavac.services.NBResolve;
import org.netbeans.lib.nbjavac.services.NBTreeMaker;
import org.netbeans.modules.java.source.base.SourceLevelUtils;
@@ -893,7 +889,7 @@ public class JavacParser extends Parser {
Context context = new Context();
//need to preregister the Messages here, because the getTask below requires Log instance:
- NBMessager.preRegister(context, null, DEV_NULL, DEV_NULL, DEV_NULL);
+ NBLog.preRegister(context, DEV_NULL, DEV_NULL, DEV_NULL);
JavacTaskImpl task = (JavacTaskImpl)JavacTool.create().getTask(null,
ClasspathInfoAccessor.getINSTANCE().createFileManager(cpInfo, validatedSourceLevel.name),
diagnosticListener, options, files.iterator().hasNext() ? null : Arrays.asList("java.lang.Object"), files,
@@ -921,14 +917,10 @@ public class JavacParser extends Parser {
NBJavacTrees.preRegister(context);
if (!backgroundCompilation) {
JavacFlowListener.preRegister(context, task);
- NBJavadocEnter.preRegister(context);
- NBJavadocMemberEnter.preRegister(context);
- JavadocEnv.preRegister(context, cpInfo);
NBResolve.preRegister(context);
- } else {
- NBEnter.preRegister(context);
- NBMemberEnter.preRegister(context);
}
+ NBEnter.preRegister(context);
+ NBMemberEnter.preRegister(context, backgroundCompilation);
TIME_LOGGER.log(Level.FINE, "JavaC", context);
return task;
}
@@ -1345,10 +1337,7 @@ public class JavacParser extends Parser {
public static class VanillaJavacContextEnhancer implements ContextEnhancer {
@Override
public void enhance(Context context, boolean backgroundCompilation) {
- if (!backgroundCompilation)
- NBJavadocClassFinder.preRegister(context);
- else
- NBClassFinder.preRegister(context);
+ NBClassFinder.preRegister(context);
NBJavaCompiler.preRegister(context);
}
}
diff --git a/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/ContextEnhancerImpl.java b/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/ContextEnhancerImpl.java
index e596ccb..fbe4108 100644
--- a/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/ContextEnhancerImpl.java
+++ b/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/ContextEnhancerImpl.java
@@ -19,7 +19,7 @@
package org.netbeans.modules.java.source.nbjavac.parsing;
import com.sun.tools.javac.util.Context;
-import com.sun.tools.javadoc.main.JavadocClassFinder;
+import org.netbeans.lib.nbjavac.services.NBClassFinder;
import org.netbeans.modules.java.source.parsing.JavacParser.ContextEnhancer;
import org.openide.util.lookup.ServiceProvider;
@@ -32,8 +32,7 @@ public class ContextEnhancerImpl implements ContextEnhancer {
@Override
public void enhance(Context context, boolean backgroundCompilation) {
- if (!backgroundCompilation)
- JavadocClassFinder.preRegister(context);
+ NBClassFinder.preRegister(context);
}
}
diff --git a/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java b/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java
index ab8f293..9ef27aa 100644
--- a/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java
+++ b/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java
@@ -19,10 +19,6 @@
package org.netbeans.modules.javadoc.hints;
-import com.sun.javadoc.MethodDoc;
-import com.sun.javadoc.ParamTag;
-import com.sun.javadoc.ThrowsTag;
-import com.sun.javadoc.Type;
import com.sun.source.doctree.AttributeTree;
import com.sun.source.doctree.AuthorTree;
import com.sun.source.doctree.CommentTree;
@@ -55,12 +51,14 @@ import com.sun.source.doctree.VersionTree;
import com.sun.source.tree.ClassTree;
import com.sun.source.tree.ExpressionTree;
import com.sun.source.tree.MethodTree;
+import com.sun.source.tree.ThrowTree;
import com.sun.source.tree.Tree;
import com.sun.source.util.DocSourcePositions;
import com.sun.source.util.DocTreePath;
import com.sun.source.util.DocTreePathScanner;
import com.sun.source.util.TreePath;
import com.sun.tools.doclint.HtmlTag;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Deque;
@@ -75,6 +73,7 @@ import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.Name;
+import javax.lang.model.element.QualifiedNameable;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
@@ -82,7 +81,11 @@ import javax.lang.model.util.Elements;
import javax.lang.model.util.Types;
import org.netbeans.api.java.source.CompilationInfo;
import org.netbeans.api.java.source.DocTreePathHandle;
+import org.netbeans.api.java.source.ElementHandle;
import org.netbeans.api.java.source.ElementUtilities;
+import org.netbeans.api.java.source.JavaSource;
+import org.netbeans.api.java.source.JavaSource.Phase;
+import org.netbeans.api.java.source.SourceUtils;
import static org.netbeans.modules.javadoc.hints.Bundle.*;
import static org.netbeans.modules.javadoc.hints.JavadocUtilities.resolveSourceVersion;
import org.netbeans.spi.editor.hints.ErrorDescription;
@@ -172,19 +175,6 @@ final class Analyzer extends DocTreePathScanner<Void, List<ErrorDescription>> {
case METHOD: {
ExecutableElement method = (ExecutableElement) currentElement;
ElementUtilities elUtils = javac.getElementUtilities();
- ExecutableElement overridden = method;
- do {
- MethodDoc methodDoc = (MethodDoc) elUtils.javaDocFor(overridden);
- if(methodDoc != null) {
- for (ParamTag paramTag : methodDoc.paramTags()) {
- inheritedParams.add(paramTag.parameterName());
- }
- for (ParamTag paramTag : methodDoc.typeParamTags()) {
- inheritedTypeParams.add(paramTag.parameterName());
- }
- }
-
- } while((overridden = elUtils.getOverriddenMethod(overridden)) != null);
if(ctx.isCanceled()) { break; }
TypeElement typeElement = elUtils.enclosingTypeElement(currentElement);
findInheritedParams(method, typeElement, inheritedParams, inheritedTypeParams, inheritedThrows);
@@ -751,31 +741,57 @@ final class Analyzer extends DocTreePathScanner<Void, List<ErrorDescription>> {
private void findInheritedParams(ExecutableElement method, TypeElement typeElement, Set<String> inheritedParams, Set<String> inheritedTypeParams, Set<String> inheritedThrows) {
if(typeElement == null) return;
- for (TypeMirror typeMirror : typeElement.getInterfaces()) {
- for (Element el : javac.getElementUtilities().getMembers(typeMirror, new ElementUtilities.ElementAcceptor() {
+ List<TypeMirror> superTypes = new ArrayList<>();
- @Override
- public boolean accept(Element e, TypeMirror type) {
- return e.getKind() == ElementKind.METHOD;
- }
- })) {
+ superTypes.add(typeElement.getSuperclass());
+ superTypes.addAll(typeElement.getInterfaces());
+
+ for (TypeMirror typeMirror : superTypes) {
+ for (Element el : javac.getElementUtilities().getMembers(typeMirror, (e, type) -> e.getKind() == ElementKind.METHOD)) {
if(ctx.isCanceled()) { return; }
if(javac.getElements().overrides(method, (ExecutableElement) el, typeElement)) {
- MethodDoc methodDoc = (MethodDoc) javac.getElementUtilities().javaDocFor(el);
- if(methodDoc != null) {
- for (ParamTag paramTag : methodDoc.paramTags()) {
- inheritedParams.add(paramTag.parameterName());
- }
- for (ParamTag paramTag : methodDoc.typeParamTags()) {
- inheritedTypeParams.add(paramTag.parameterName());
- }
- for (ThrowsTag throwsTag : methodDoc.throwsTags()) {
- Type exceptionType = throwsTag.exceptionType();
- if(exceptionType != null) {
- inheritedThrows.add(exceptionType.qualifiedTypeName());
+ ElementHandle<ExecutableElement> overriddenMethod = ElementHandle.create((ExecutableElement) el);
+ FileObject source = SourceUtils.getFile(overriddenMethod, ctx.getInfo().getClasspathInfo());
+ if (source == null) {
+ continue;
+ }
+ try {
+ JavaSource.forFileObject(source).runUserActionTask(cc -> {
+ cc.toPhase(Phase.ELEMENTS_RESOLVED);
+ if (ctx.isCanceled()) {
+ return ; //cancel
}
- }
- returnTypeFound |= methodDoc.tags("return").length > 0;
+ ExecutableElement m = overriddenMethod.resolve(cc);
+ TreePath tp = m != null ? cc.getTrees().getPath(m) : null;
+ if (tp == null) {
+ return ; //TODO: log???
+ }
+ DocCommentTree methodDoc = cc.getDocTrees().getDocCommentTree(tp);
+ if(methodDoc != null) {
+ for (DocTree tag : methodDoc.getBlockTags()) {
+ switch (tag.getKind()) {
+ case PARAM:
+ String name = ((ParamTree) tag).getName().getName().toString();
+ if (((ParamTree) tag).isTypeParameter()) {
+ inheritedTypeParams.add(name);
+ } else {
+ inheritedParams.add(name);
+ }
+ break;
+ case THROWS:
+ Element thrownType = cc.getDocTrees().getElement(new DocTreePath(new DocTreePath(new DocTreePath(tp, methodDoc), tag), ((ThrowsTree) tag).getExceptionName()));
+ if (thrownType != null && thrownType.getKind().isClass()) {
+ inheritedThrows.add(((TypeElement) thrownType).getQualifiedName().toString());
+ }
+ break;
+ case RETURN:
+ returnTypeFound |= true;
+ }
+ }
+ }
+ }, true);
+ } catch (IOException ex) {
+ LOG.log(Level.FINE, null, ex);
}
}
}
diff --git a/java/javadoc/src/org/netbeans/modules/javadoc/hints/JavadocUtilities.java b/java/javadoc/src/org/netbeans/modules/javadoc/hints/JavadocUtilities.java
index 9502d67..9b17ba7 100644
--- a/java/javadoc/src/org/netbeans/modules/javadoc/hints/JavadocUtilities.java
+++ b/java/javadoc/src/org/netbeans/modules/javadoc/hints/JavadocUtilities.java
@@ -19,8 +19,7 @@
package org.netbeans.modules.javadoc.hints;
-import com.sun.javadoc.Doc;
-import com.sun.javadoc.MethodDoc;
+import com.sun.source.doctree.DocCommentTree;
import com.sun.source.tree.ClassTree;
import com.sun.source.tree.CompilationUnitTree;
import com.sun.source.tree.ExpressionTree;
@@ -103,7 +102,7 @@ public class JavadocUtilities {
return findInheritedDoc(javac, elm) != null;
}
- public static MethodDoc findInheritedDoc(CompilationInfo javac, Element elm) {
+ public static DocCommentTree findInheritedDoc(CompilationInfo javac, Element elm) {
if (elm.getKind() == ElementKind.METHOD) {
TypeElement clazz = (TypeElement) elm.getEnclosingElement();
return searchInInterfaces(javac, clazz, clazz,
@@ -119,7 +118,7 @@ public class JavadocUtilities {
* <p>Do not use MethodDoc.overriddenMethod() instead since it fails for
* interfaces!
*/
- private static MethodDoc searchInInterfaces(
+ private static DocCommentTree searchInInterfaces(
CompilationInfo javac, TypeElement class2query, TypeElement overriderClass,
ExecutableElement overrider, Set<TypeElement> exclude) {
@@ -131,7 +130,7 @@ public class JavadocUtilities {
continue;
}
// check methods
- MethodDoc jdoc = searchInMethods(javac, ifceEl, overriderClass, overrider);
+ DocCommentTree jdoc = searchInMethods(javac, ifceEl, overriderClass, overrider);
if (jdoc != null) {
return jdoc;
}
@@ -142,7 +141,7 @@ public class JavadocUtilities {
for (TypeMirror ifceMirror : class2query.getInterfaces()) {
if (ifceMirror.getKind() == TypeKind.DECLARED) {
TypeElement ifceEl = (TypeElement) ((DeclaredType) ifceMirror).asElement();
- MethodDoc jdoc = searchInInterfaces(javac, ifceEl, overriderClass, overrider, exclude);
+ DocCommentTree jdoc = searchInInterfaces(javac, ifceEl, overriderClass, overrider, exclude);
if (jdoc != null) {
return jdoc;
}
@@ -152,7 +151,7 @@ public class JavadocUtilities {
return searchInSuperclass(javac, class2query, overriderClass, overrider, exclude);
}
- private static MethodDoc searchInSuperclass(
+ private static DocCommentTree searchInSuperclass(
CompilationInfo javac, TypeElement class2query, TypeElement overriderClass,
ExecutableElement overrider, Set<TypeElement> exclude) {
@@ -163,7 +162,7 @@ public class JavadocUtilities {
}
TypeElement superclass = (TypeElement) ((DeclaredType) superclassMirror).asElement();
// check methods
- MethodDoc jdoc = searchInMethods(javac, superclass, overriderClass, overrider);
+ DocCommentTree jdoc = searchInMethods(javac, superclass, overriderClass, overrider);
if (jdoc != null) {
return jdoc;
}
@@ -172,16 +171,16 @@ public class JavadocUtilities {
return searchInInterfaces(javac, superclass, overriderClass, overrider, exclude);
}
- private static MethodDoc searchInMethods(
+ private static DocCommentTree searchInMethods(
CompilationInfo javac, TypeElement class2query,
TypeElement overriderClass, ExecutableElement overrider) {
for (Element elm : class2query.getEnclosedElements()) {
if (elm.getKind() == ElementKind.METHOD &&
javac.getElements().overrides(overrider, (ExecutableElement) elm, overriderClass)) {
- Doc jdoc = javac.getElementUtilities().javaDocFor(elm);
- return (jdoc != null && jdoc.getRawCommentText().length() > 0)?
- (MethodDoc) jdoc: null;
+ DocCommentTree jdoc = javac.getDocTrees().getDocCommentTree(elm);
+ return (jdoc != null && !jdoc.getFullBody().isEmpty())?
+ jdoc: null;
}
}
return null;
diff --git a/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/Analyzer2Test.java b/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/Analyzer2Test.java
index c981ee3..d5a5d03 100644
--- a/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/Analyzer2Test.java
+++ b/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/Analyzer2Test.java
@@ -186,7 +186,13 @@ public class Analyzer2Test extends NbTestCase {
HintTest.create()
.input(
"package test;\n" +
- "class ZimaImpl implements Zima {\n" +
+ "class ZimaImpl extends Intermediate implements Zima {\n" +
+ " /**\n" +
+ " * \n" +
+ " */\n" +
+ " public <T> String base(T prvniho) throws Exception {\n" +
+ " return \"\";\n" +
+ " }\n" +
" /**\n" +
" * \n" +
" */\n" +
@@ -194,6 +200,17 @@ public class Analyzer2Test extends NbTestCase {
" return \"\";\n" +
" }\n" +
"}\n" +
+ "abstract class Intermediate extends Base {}\n" +
+ "abstract class Base {\n" +
+ " /**\n" +
+ " * \n" +
+ " * @param prvniho \n" +
+ " * @param <T> \n" +
+ " * @return \n" +
+ " * @throws Exception \n" +
+ " */\n" +
+ " abstract <T> String base(T prvniho) throws Exception;\n" +
+ "}\n" +
"interface Zima {\n" +
" /**\n" +
" * \n" +
diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBClassWriter.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBClassWriter.java
index 984cabc..9a16f9e 100644
--- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBClassWriter.java
+++ b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBClassWriter.java
@@ -48,13 +48,11 @@ public class NBClassWriter extends ClassWriter {
}
private final NBNames nbNames;
- private final NBMessager nbMessager;
private final Types types;
protected NBClassWriter(Context context) {
super(context);
nbNames = NBNames.instance(context);
- nbMessager = NBMessager.instance(context);
types = Types.instance(context);
}
diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavadocClassFinder.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavadocClassFinder.java
deleted file mode 100644
index ad08163..0000000
--- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavadocClassFinder.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.lib.nbjavac.services;
-
-import com.sun.tools.javac.code.ClassFinder;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javadoc.main.JavadocClassFinder;
-import javax.tools.JavaFileObject;
-
-/**
- *
- * @author lahvac
- */
-public class NBJavadocClassFinder extends JavadocClassFinder {
-
- public static void preRegister(Context context) {
- context.put(classFinderKey, new Context.Factory<ClassFinder>() {
- public ClassFinder make(Context c) {
- return new NBJavadocClassFinder(c);
- }
- });
- }
-
- public NBJavadocClassFinder(Context context) {
- super(context);
- }
-
- @Override
- protected JavaFileObject preferredFileObject(JavaFileObject a, JavaFileObject b) {
- if (b.getName().toLowerCase().endsWith(".sig")) {
- //do not prefer sources over sig files (unless sources are newer):
- boolean prevPreferSource = preferSource;
- try {
- preferSource = false;
- return super.preferredFileObject(a, b);
- } finally {
- preferSource = prevPreferSource;
- }
- }
- return super.preferredFileObject(a, b);
- }
-
-}
diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavadocEnter.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavadocEnter.java
deleted file mode 100644
index 0f98e47..0000000
--- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavadocEnter.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.netbeans.lib.nbjavac.services;
-
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Symtab;
-import com.sun.tools.javac.comp.Enter;
-import com.sun.tools.javac.tree.JCTree;
-import com.sun.tools.javac.tree.JCTree.JCClassDecl;
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
-import com.sun.tools.javac.tree.TreeInfo;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
-import com.sun.tools.javac.util.JCDiagnostic.Error;
-import com.sun.tools.javadoc.main.JavadocEnter;
-import com.sun.tools.javadoc.main.Messager;
-import org.netbeans.lib.nbjavac.services.NBTreeMaker.IndexedClassDecl;
-
-/**
- * JavadocEnter which doesn't ignore class duplicates unlike the base JavadocEnter
- * Enter - does't ignore duplicates
- * JavadocEnter - ignors duplicates
- * NBJavadocEnter - does't ignore duplicates
- * @author Tomas Zezula
- */
-public class NBJavadocEnter extends JavadocEnter {
-
- public static void preRegister(final Context context) {
- context.put(enterKey, new Context.Factory<Enter>() {
- public Enter make(Context c) {
- return new NBJavadocEnter(c);
- }
- });
- }
-
- private final Messager messager;
- private final CancelService cancelService;
- private final Symtab syms;
-
- protected NBJavadocEnter(Context context) {
- super(context);
- messager = Messager.instance0(context);
- cancelService = CancelService.instance(context);
- syms = Symtab.instance(context);
- }
-
- public @Override void main(com.sun.tools.javac.util.List<JCCompilationUnit> trees) {
- //Todo: Check everytime after the java update that JavaDocEnter.main or Enter.main
- //are not changed.
- this.complete(trees, null);
- }
-
- @Override
- protected void duplicateClass(DiagnosticPosition pos, ClassSymbol c) {
- messager.error(pos, new Error("compiler", "duplicate.class", c.fullname));
- }
-
- @Override
- public void visitClassDef(JCClassDecl tree) {
- cancelService.abortIfCanceled();
- super.visitClassDef(tree);
- }
-
- @Override
- public void visitTopLevel(JCTree.JCCompilationUnit tree) {
- if (TreeInfo.isModuleInfo(tree) && tree.modle == syms.noModule) {
- //workaround: when source level is == 8, then visitTopLevel crashes for module-info.java
- return ;
- }
- super.visitTopLevel(tree);
- }
-
- //no @Override to ensure compatibility with ordinary javac:
- protected int getIndex(JCClassDecl clazz) {
- return clazz instanceof IndexedClassDecl ? ((IndexedClassDecl) clazz).index : -1;
- }
-}
diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavadocMemberEnter.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavadocMemberEnter.java
deleted file mode 100644
index 258059c..0000000
--- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavadocMemberEnter.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.lib.nbjavac.services;
-
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.api.JavacTrees;
-import com.sun.tools.javac.code.Flags;
-import com.sun.tools.javac.comp.MemberEnter;
-import com.sun.tools.javac.tree.JCTree.JCBlock;
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
-import com.sun.tools.javac.tree.JCTree.JCExpression;
-import com.sun.tools.javac.tree.JCTree.JCImport;
-import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
-import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javadoc.main.JavadocMemberEnter;
-
-/**
- *
- * @author lahvac
- */
-public class NBJavadocMemberEnter extends JavadocMemberEnter {
-
- public static void preRegister(Context context) {
- context.put(memberEnterKey, new Context.Factory<MemberEnter>() {
- public MemberEnter make(Context c) {
- return new NBJavadocMemberEnter(c);
- }
- });
- }
-
- private final CancelService cancelService;
- private final JavacTrees trees;
-
- public NBJavadocMemberEnter(Context context) {
- super(context);
- cancelService = CancelService.instance(context);
- trees = NBJavacTrees.instance(context);
- }
-
- @Override
- public void visitTopLevel(JCCompilationUnit tree) {
- cancelService.abortIfCanceled();
- super.visitTopLevel(tree);
- }
-
- @Override
- public void visitImport(JCImport tree) {
- cancelService.abortIfCanceled();
- super.visitImport(tree);
- }
-
- @Override
- public void visitMethodDef(JCMethodDecl tree) {
- cancelService.abortIfCanceled();
- JCBlock body = tree.body;
- try {
- super.visitMethodDef(tree);
- } finally {
- //reinstall body:
- tree.body = body;
- }
- if (trees instanceof NBJavacTrees && !env.enclClass.defs.contains(tree)) {
- TreePath path = trees.getPath(env.toplevel, env.enclClass);
- if (path != null) {
- ((NBJavacTrees)trees).addPathForElement(tree.sym, new TreePath(path, tree));
- }
- }
- }
-
- @Override
- public void visitVarDef(JCVariableDecl tree) {
- cancelService.abortIfCanceled();
- JCExpression init = tree.init;
- try {
- super.visitVarDef(tree);
- } finally {
- //reinstall init:
- tree.init = init;
- if (init != null) {
- tree.sym.flags_field |= Flags.HASINIT; //XXX: hack
- }
- }
- }
-
-}
diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBMessager.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBLog.java
similarity index 76%
rename from java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBMessager.java
rename to java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBLog.java
index 3b5241f..e268ad7 100644
--- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBMessager.java
+++ b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBLog.java
@@ -18,58 +18,55 @@
*/
package org.netbeans.lib.nbjavac.services;
-import com.sun.javadoc.SourcePosition;
import com.sun.tools.javac.code.Symbol;
import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.JCDiagnostic;
import com.sun.tools.javac.util.Log;
-import com.sun.tools.javadoc.main.Messager;
import java.io.PrintWriter;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import javax.tools.Diagnostic;
import javax.tools.JavaFileObject;
/**
*
* @author Tomas Zezula
*/
-public final class NBMessager extends Messager {
+public final class NBLog extends Log {
private static final String ERR_NOT_IN_PROFILE = "not.in.profile"; //NOI18N
private final Map<URI,Collection<Symbol.ClassSymbol>> notInProfiles =
new HashMap<>();
- private NBMessager(
+ private NBLog(
final Context context,
- final String programName,
final PrintWriter errWriter,
final PrintWriter warnWriter,
final PrintWriter noticeWriter) {
- super(context, programName, errWriter, warnWriter, noticeWriter);
+ super(context, errWriter, warnWriter, noticeWriter);
}
- public static NBMessager instance(Context context) {
+ public static NBLog instance(Context context) {
final Log log = Log.instance(context);
- if (!(log instanceof NBMessager)) {
- throw new InternalError("No NBMessager instance!"); //NOI18N
+ if (!(log instanceof NBLog)) {
+ throw new InternalError("No NBLog instance!"); //NOI18N
}
- return (NBMessager) log;
+ return (NBLog) log;
}
public static void preRegister(Context context,
- final String programName,
final PrintWriter errWriter,
final PrintWriter warnWriter,
final PrintWriter noticeWriter) {
context.put(logKey, new Context.Factory<Log>() {
@Override
public Log make(Context c) {
- return new NBMessager(
+ return new NBLog(
c,
- programName,
errWriter,
warnWriter,
noticeWriter);
@@ -78,15 +75,14 @@ public final class NBMessager extends Messager {
}
@Override
- public void error(
- final SourcePosition pos,
- final String key,
- final Object ... args) {
- if (ERR_NOT_IN_PROFILE.equals(key)) {
+ public void report(JCDiagnostic diagnostic) {
+ //XXX: needs testing!
+ if (diagnostic.getKind() == Diagnostic.Kind.ERROR &&
+ ERR_NOT_IN_PROFILE.equals(diagnostic.getCode())) {
final JavaFileObject currentFile = currentSourceFile();
if (currentFile != null) {
final URI uri = currentFile.toUri();
- Symbol.ClassSymbol type = (Symbol.ClassSymbol) args[0];
+ Symbol.ClassSymbol type = (Symbol.ClassSymbol) diagnostic.getArgs()[0];
Collection<Symbol.ClassSymbol> types = notInProfiles.get(uri);
if (types == null) {
types = new ArrayList<>();
@@ -95,7 +91,7 @@ public final class NBMessager extends Messager {
types.add(type);
}
}
- super.error(pos, key, args);
+ super.report(diagnostic);
}
Collection<? extends Symbol.ClassSymbol> removeNotInProfile(final URI uri) {
diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBMemberEnter.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBMemberEnter.java
index 107a4ec..134e342 100644
--- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBMemberEnter.java
+++ b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBMemberEnter.java
@@ -18,6 +18,8 @@
*/
package org.netbeans.lib.nbjavac.services;
+import com.sun.source.util.TreePath;
+import com.sun.tools.javac.api.JavacTrees;
import com.sun.tools.javac.comp.MemberEnter;
import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
import com.sun.tools.javac.tree.JCTree.JCImport;
@@ -31,19 +33,23 @@ import com.sun.tools.javac.util.Context;
*/
public class NBMemberEnter extends MemberEnter {
- public static void preRegister(Context context) {
+ public static void preRegister(Context context, boolean backgroundScan) {
context.put(MemberEnter.class, new Context.Factory<MemberEnter>() {
public MemberEnter make(Context c) {
- return new NBMemberEnter(c);
+ return new NBMemberEnter(c, backgroundScan);
}
});
}
private final CancelService cancelService;
+ private final JavacTrees trees;
+ private final boolean backgroundScan;
- public NBMemberEnter(Context context) {
+ public NBMemberEnter(Context context, boolean backgroundScan) {
super(context);
cancelService = CancelService.instance(context);
+ trees = NBJavacTrees.instance(context);
+ this.backgroundScan = backgroundScan;
}
@Override
@@ -62,6 +68,12 @@ public class NBMemberEnter extends MemberEnter {
public void visitMethodDef(JCMethodDecl tree) {
cancelService.abortIfCanceled();
super.visitMethodDef(tree);
+ if (!backgroundScan && trees instanceof NBJavacTrees && !env.enclClass.defs.contains(tree)) {
+ TreePath path = trees.getPath(env.toplevel, env.enclClass);
+ if (path != null) {
+ ((NBJavacTrees)trees).addPathForElement(tree.sym, new TreePath(path, tree));
+ }
+ }
}
@Override
diff --git a/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/NBAttrTest.java b/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/NBAttrTest.java
index 683613a..5891631 100644
--- a/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/NBAttrTest.java
+++ b/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/NBAttrTest.java
@@ -130,7 +130,7 @@ public class NBAttrTest extends NbTestCase {
std.setLocation(StandardLocation.CLASS_OUTPUT, Collections.singleton(workingDir));
Context context = new Context();
- NBMessager.preRegister(context, null, DEV_NULL, DEV_NULL, DEV_NULL);
+ NBLog.preRegister(context, DEV_NULL, DEV_NULL, DEV_NULL);
NBAttr.preRegister(context);
final JavacTaskImpl ct = (JavacTaskImpl) ((JavacTool)tool).getTask(null, std, null, Arrays.asList("-source", "1.8", "-target", "1.8"), null, Arrays.asList(new MyFileObject(code)), context);
diff --git a/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/NBClassWriterTest.java b/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/NBClassWriterTest.java
index 7035775..c987a2b 100644
--- a/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/NBClassWriterTest.java
+++ b/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/NBClassWriterTest.java
@@ -89,7 +89,7 @@ public class NBClassWriterTest extends NbTestCase {
std.setLocation(StandardLocation.CLASS_OUTPUT, Collections.singleton(workingDir));
Context context = new Context();
- NBMessager.preRegister(context, null, DEV_NULL, DEV_NULL, DEV_NULL);
+ NBLog.preRegister(context, DEV_NULL, DEV_NULL, DEV_NULL);
final JavacTaskImpl ct = (JavacTaskImpl) ((JavacTool)tool).getTask(null, std, null, Arrays.asList("-bootclasspath", bootPath, "-source", "1.7", "-target", "1.7"), null, Arrays.asList(new MyFileObject(code)), context);
NBClassReader.preRegister(ct.getContext());
@@ -109,7 +109,7 @@ public class NBClassWriterTest extends NbTestCase {
std.setLocation(StandardLocation.CLASS_PATH, Collections.singleton(workingDir));
Context context = new Context();
- NBMessager.preRegister(context, null, DEV_NULL, DEV_NULL, DEV_NULL);
+ NBLog.preRegister(context, DEV_NULL, DEV_NULL, DEV_NULL);
JavacTaskImpl ct = (JavacTaskImpl)((JavacTool)tool).getTask(null, std, null, Arrays.asList("-bootclasspath", bootPath, "-source", "1.8", "-target", "1.8"), null, Arrays.<JavaFileObject>asList(), context);
NBClassReader.preRegister(ct.getContext());
diff --git a/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/Utilities.java b/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/Utilities.java
index ca52d7f..cc1d1df 100644
--- a/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/Utilities.java
+++ b/java/lib.nbjavac/test/unit/src/org/netbeans/lib/nbjavac/services/Utilities.java
@@ -21,8 +21,7 @@ package org.netbeans.lib.nbjavac.services;
import com.sun.tools.javac.api.JavacTaskImpl;
import com.sun.tools.javac.api.JavacTool;
import com.sun.tools.javac.util.Context;
-import com.sun.tools.javadoc.main.JavadocClassFinder;
-import com.sun.tools.javadoc.main.Messager;
+import com.sun.tools.javac.util.Log;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
@@ -50,7 +49,7 @@ public class Utilities {
assert tool != null;
Context context = new Context();
//need to preregister the Messages here, because the getTask below requires Log instance:
- Messager.preRegister(context, null, DEV_NULL, DEV_NULL, DEV_NULL);
+ Log.preRegister(context, DEV_NULL);
JavacTaskImpl task = (JavacTaskImpl)JavacTool.create().getTask(null,
fm,
null, Arrays.asList("-bootclasspath", bootPath, "-source", version, "-target", version, "-Xjcov", "-XDshouldStopPolicy=GENERATE"), null, Arrays.asList(sources),
diff --git a/java/libs.javacapi/external/binaries-list b/java/libs.javacapi/external/binaries-list
index dd9eefc..f730817 100644
--- a/java/libs.javacapi/external/binaries-list
+++ b/java/libs.javacapi/external/binaries-list
@@ -14,4 +14,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-A318D725959B3F102B53BA249F3C35C0F68B1E3D nb-javac-12-api.jar
+9FA2C56C15D013C391EF76E9AA07172F20447673 nb-javac-12-api.jar
diff --git a/java/libs.javacapi/nbproject/project.xml b/java/libs.javacapi/nbproject/project.xml
index 390c985..741e1eb 100644
--- a/java/libs.javacapi/nbproject/project.xml
+++ b/java/libs.javacapi/nbproject/project.xml
@@ -28,7 +28,6 @@
<public-packages>
<!-- TODO: need to specify exports here, because fragments cannot add exports - should be fixed? -->
<package>org.netbeans.libs.javacapi</package>
- <package>com.sun.javadoc</package>
<package>com.sun.source.doctree</package>
<package>com.sun.source.tree</package>
<package>com.sun.source.util</package>
diff --git a/java/libs.javacimpl/external/binaries-list b/java/libs.javacimpl/external/binaries-list
index ce2581a..9da924d 100644
--- a/java/libs.javacimpl/external/binaries-list
+++ b/java/libs.javacimpl/external/binaries-list
@@ -14,4 +14,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-48EF66E1C3EABC275295D2E09CD442B4DE13A816 nb-javac-12-impl.jar
+3B790BEAE746363CB8EC4C18B0A6187D683BC247 nb-javac-12-impl.jar
diff --git a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/IntroduceLocalExtensionTransformer.java b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/IntroduceLocalExtensionTransformer.java
index ee9e58a..a53c3bc 100644
--- a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/IntroduceLocalExtensionTransformer.java
+++ b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/IntroduceLocalExtensionTransformer.java
@@ -18,7 +18,7 @@
*/
package org.netbeans.modules.refactoring.java.plugins;
-import com.sun.javadoc.Doc;
+import com.sun.source.doctree.DocCommentTree;
import com.sun.source.tree.*;
import com.sun.source.util.SourcePositions;
import com.sun.source.util.TreePath;
@@ -516,9 +516,9 @@ public class IntroduceLocalExtensionTransformer extends RefactoringVisitor {
MethodTree newMethod = make.Method(modifiers, member.getSimpleName(), methodReturnType, newTypeParams, newParameters, newThrownTypes, make.Block(Collections.singletonList(statement), false), null, member.isVarArgs());
newMethod = genUtils.importFQNs(newMethod);
- Doc javadoc = workingCopy.getElementUtilities().javaDocFor(member);
- if (!javadoc.getRawCommentText().isEmpty()) {
- Comment comment = Comment.create(Comment.Style.JAVADOC, javadoc.getRawCommentText());
+ DocCommentTree javadoc = workingCopy.getDocTrees().getDocCommentTree(member);
+ if (javadoc != null && !javadoc.getFullBody().isEmpty()) {
+ Comment comment = Comment.create(Comment.Style.JAVADOC, javadoc.toString());
make.addComment(newMethod, comment, true);
}
members.add(newMethod);
@@ -671,9 +671,9 @@ public class IntroduceLocalExtensionTransformer extends RefactoringVisitor {
newThrownTypes, block, null);
newConstr = genUtils.importFQNs(newConstr);
- Doc javadoc = workingCopy.getElementUtilities().javaDocFor(constr);
- if (!javadoc.getRawCommentText().isEmpty()) {
- Comment comment = Comment.create(Comment.Style.JAVADOC, javadoc.getRawCommentText());
+ DocCommentTree javadoc = workingCopy.getDocTrees().getDocCommentTree(constr);
+ if (javadoc != null && !javadoc.getFullBody().isEmpty()) {
+ Comment comment = Comment.create(Comment.Style.JAVADOC, javadoc.toString());
make.addComment(newConstr, comment, true);
}
members.add(newConstr);
diff --git a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/MoveMembersTransformer.java b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/MoveMembersTransformer.java
index 9be3927..e9ba1d9 100644
--- a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/MoveMembersTransformer.java
+++ b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/MoveMembersTransformer.java
@@ -18,8 +18,8 @@
*/
package org.netbeans.modules.refactoring.java.plugins;
-import com.sun.javadoc.Doc;
-import com.sun.javadoc.Tag;
+import com.sun.source.doctree.DocCommentTree;
+import com.sun.source.doctree.DocTree;
import com.sun.source.tree.*;
import com.sun.source.util.SourcePositions;
import com.sun.source.util.TreePath;
@@ -29,6 +29,7 @@ import com.sun.source.util.Trees;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
+import java.util.stream.Collectors;
import javax.lang.model.element.*;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeKind;
@@ -853,18 +854,23 @@ public class MoveMembersTransformer extends RefactoringVisitor {
}
private Comment updateJavadoc(Element method, Element targetElement, boolean addDeprecated) {
- Doc javadoc = workingCopy.getElementUtilities().javaDocFor(method);
+ DocCommentTree javadoc = workingCopy.getDocTrees().getDocCommentTree(method);
- List<Tag> otherTags = new LinkedList<Tag>(Arrays.asList(javadoc.tags()));
- List<Tag> returnTags = new LinkedList<Tag>(Arrays.asList(javadoc.tags("@return"))); // NOI18N
- List<Tag> throwsTags = new LinkedList<Tag>(Arrays.asList(javadoc.tags("@throws"))); // NOI18N
- List<Tag> paramTags = new LinkedList<Tag>(Arrays.asList(javadoc.tags("@param"))); // NOI18N
-
- otherTags.removeAll(returnTags);
- otherTags.removeAll(throwsTags);
- otherTags.removeAll(paramTags);
+ List<DocTree> otherTags = new LinkedList<>();
+ List<DocTree> returnTags = new LinkedList<>();
+ List<DocTree> throwsTags = new LinkedList<>();
+ List<DocTree> paramTags = new LinkedList<>();
+
+ for (DocTree tag : javadoc.getBlockTags()) {
+ switch (tag.getKind()) {
+ case RETURN: returnTags.add(tag); break;
+ case THROWS: throwsTags.add(tag); break;
+ case PARAM: paramTags.add(tag); break;
+ default: otherTags.add(tag);
+ }
+ }
- StringBuilder text = new StringBuilder(javadoc.commentText()).append("\n\n"); // NOI18N
+ StringBuilder text = new StringBuilder(javadoc.getBody().stream().map(t -> t.toString()).collect(Collectors.joining(""))).append("\n\n"); // NOI18N
text.append(tagsToString(paramTags));
text.append(tagsToString(returnTags));
text.append(tagsToString(throwsTags));
@@ -877,10 +883,10 @@ public class MoveMembersTransformer extends RefactoringVisitor {
return comment;
}
- private String tagsToString(List<Tag> tags) {
+ private String tagsToString(List<DocTree> tags) {
StringBuilder sb = new StringBuilder();
- for (Tag tag : tags) {
- sb.append(tag.name()).append(" ").append(tag.text()).append("\n"); // NOI18N
+ for (DocTree tag : tags) {
+ sb.append(tag.toString()).append("\n"); // NOI18N
}
return sb.toString();
}
diff --git a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/ChangeParametersPanel.java b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/ChangeParametersPanel.java
index a864a03..6f70640 100644
--- a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/ChangeParametersPanel.java
+++ b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/ChangeParametersPanel.java
@@ -18,7 +18,7 @@
*/
package org.netbeans.modules.refactoring.java.ui;
-import com.sun.javadoc.Doc;
+import com.sun.source.doctree.DocCommentTree;
import com.sun.source.tree.MethodTree;
import com.sun.source.tree.Tree;
import com.sun.source.tree.VariableTree;
@@ -201,8 +201,8 @@ public class ChangeParametersPanel extends JPanel implements CustomRefactoringPa
Document.StreamDescriptionProperty,
dob);
}
- Doc javadocDoc = info.getElementUtilities().javaDocFor(e);
- if(javadocDoc.commentText() == null || javadocDoc.getRawCommentText().equals("")) {
+ DocCommentTree javadocDoc = info.getDocTrees().getDocCommentTree(e);
+ if(javadocDoc != null && !javadocDoc.getFullBody().isEmpty()) {
chkGenJavadoc.setEnabled(true);
chkGenJavadoc.setVisible(true);
chkUpdateJavadoc.setVisible(false);
diff --git a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/IntroduceParameterPanel.java b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/IntroduceParameterPanel.java
index 0ac8b25..5c77c57 100644
--- a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/IntroduceParameterPanel.java
+++ b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/IntroduceParameterPanel.java
@@ -18,7 +18,7 @@
*/
package org.netbeans.modules.refactoring.java.ui;
-import com.sun.javadoc.Doc;
+import com.sun.source.doctree.DocCommentTree;
import com.sun.source.tree.MethodTree;
import com.sun.source.tree.Scope;
import com.sun.source.tree.Tree;
@@ -140,8 +140,8 @@ public class IntroduceParameterPanel extends JPanel implements CustomRefactoring
final String tm = typeMirror == null ? "Object" : typeMirror.toString();
Element methodElement = info.getTrees().getElement(methodPath);
- Doc javadocDoc = info.getElementUtilities().javaDocFor(methodElement);
- if(javadocDoc != null && javadocDoc.commentText() == null || javadocDoc.getRawCommentText().equals("")) {
+ DocCommentTree javadocDoc = info.getDocTrees().getDocCommentTree(methodElement);
+ if(javadocDoc != null && !javadocDoc.getFullBody().isEmpty()) {
chkGenJavadoc.setEnabled(true);
chkGenJavadoc.setVisible(true);
chkUpdateJavadoc.setVisible(false);
diff --git a/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java b/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java
index 8f5d9db..75ff372 100644
--- a/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java
+++ b/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java
@@ -51,6 +51,7 @@ import com.sun.tools.javac.api.JavacScope;
import com.sun.tools.javac.api.JavacTaskImpl;
import com.sun.tools.javac.api.JavacTrees;
import com.sun.tools.javac.code.Flags;
+import com.sun.tools.javac.code.Symbol.ClassSymbol;
import com.sun.tools.javac.code.Symtab;
import com.sun.tools.javac.code.Type;
import com.sun.tools.javac.comp.Annotate;
@@ -87,7 +88,6 @@ import com.sun.tools.javac.util.JCDiagnostic;
import com.sun.tools.javac.util.ListBuffer;
import com.sun.tools.javac.util.Log;
import com.sun.tools.javac.util.Names;
-import com.sun.tools.javadoc.main.Messager;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
@@ -729,7 +729,9 @@ public class Utilities {
long count = inc++;
- clazz.append("public class $$scopeclass$constraints$" + count + "{");
+ String classname = "$$scopeclass$constraints$" + count;
+
+ clazz.append("public class " + classname + "{");
for (Entry<String, TypeMirror> e : constraints.entrySet()) {
if (e.getValue() != null) {
@@ -752,6 +754,8 @@ public class Utilities {
Log log = Log.instance(context);
NBResolve resolve = NBResolve.instance(context);
Annotate annotate = Annotate.instance(context);
+ Names names = Names.instance(context);
+ Symtab syms = Symtab.instance(context);
Log.DiagnosticHandler discardHandler = new Log.DiscardDiagnosticHandler(compiler.log);
JavaFileObject jfo = FileObjects.memoryFileObject("$", "$", new File("/tmp/$$scopeclass$constraints$" + count + ".java").toURI(), System.currentTimeMillis(), clazz.toString());
@@ -772,7 +776,8 @@ public class Utilities {
}
JCCompilationUnit cut = compiler.parse(jfo);
- modules.enter(com.sun.tools.javac.util.List.of(cut), null);
+ ClassSymbol enteredClass = syms.enterClass(modules.getDefaultModule(), names.fromString("$$." + classname));
+ modules.enter(com.sun.tools.javac.util.List.of(cut), enteredClass);
compiler.enterTrees(com.sun.tools.javac.util.List.of(cut));
Todo todo = compiler.todo;
@@ -1274,14 +1279,8 @@ public class Utilities {
return false;
}
- public static boolean isJavadocSupported(CompilationInfo info) {
- Context c = JavaSourceAccessor.getINSTANCE().getJavacTask(info).getContext();
-
- try {
- return c.get(Log.logKey) instanceof Messager;
- } catch (NoClassDefFoundError e) {
- return false;
- }
+ public static boolean isJavadocSupported(CompilationInfo info) { //TODO: unnecessary?
+ return true;
}
private static Class<?> parserClass;
diff --git a/java/spi.java.hints/src/org/netbeans/spi/java/hints/JavaFixUtilities.java b/java/spi.java.hints/src/org/netbeans/spi/java/hints/JavaFixUtilities.java
index bcaee17..25dae5e 100644
--- a/java/spi.java.hints/src/org/netbeans/spi/java/hints/JavaFixUtilities.java
+++ b/java/spi.java.hints/src/org/netbeans/spi/java/hints/JavaFixUtilities.java
@@ -18,8 +18,9 @@
*/
package org.netbeans.spi.java.hints;
-import com.sun.javadoc.Doc;
-import com.sun.javadoc.Tag;
+import com.sun.source.doctree.DocCommentTree;
+import com.sun.source.doctree.DocTree;
+import com.sun.source.doctree.SinceTree;
import com.sun.source.tree.AnnotationTree;
import com.sun.source.tree.AssignmentTree;
import com.sun.source.tree.BinaryTree;
@@ -304,12 +305,16 @@ public class JavaFixUtilities {
static SpecificationVersion computeSpecVersion(CompilationInfo info, Element el) {
if (!Utilities.isJavadocSupported(info)) return null;
- Doc javaDoc = info.getElementUtilities().javaDocFor(el);
+ DocCommentTree javaDoc = info.getDocTrees().getDocCommentTree(el);
if (javaDoc == null) return null;
- for (Tag since : javaDoc.tags("@since")) {
- String text = since.text();
+ for (DocTree tag : javaDoc.getBlockTags()) {
+ if (tag.getKind() != DocTree.Kind.SINCE) {
+ continue;
+ }
+
+ String text = ((SinceTree) tag).getBody().toString();
Matcher m = SPEC_VERSION.matcher(text);
diff --git a/nbbuild/build.xml b/nbbuild/build.xml
index 3cbc361..0a99717 100644
--- a/nbbuild/build.xml
+++ b/nbbuild/build.xml
@@ -156,16 +156,15 @@
<property name="langtools.jdk.home" value="${java.home}" />
</ant>
<mkdir dir="${nb_all}/nbbuild/build/langtools/build/nb" />
- <javac srcdir="${nb_all}/nbbuild/build/langtools/src/java.compiler/share/classes:${nb_all}/nbbuild/build/langtools/src/jdk.compiler/share/classes:${nb_all}/nbbuild/build/langtools/src/jdk.javadoc/share/classes:${nb_all}/nbbuild/build/langtools/src/jdk.jdeps/share/classes:${nb_all}/nbbuild/build/langtools/build/gensrc/jdk.compiler"
+ <javac srcdir="${nb_all}/nbbuild/build/langtools/src/java.compiler/share/classes:${nb_all}/nbbuild/build/langtools/src/jdk.compiler/share/classes:${nb_all}/nbbuild/build/langtools/src/jdk.jdeps/share/classes:${nb_all}/nbbuild/build/langtools/build/gensrc/jdk.compiler"
destdir="${nb_all}/nbbuild/build/langtools/build/nb"
excludes="**/module-info.java,com/sun/tools/javac/main/JavacToolProvider.java,com/sun/tools/jdeps/**,com/sun/tools/jdeprscan/**,com/sun/tools/javap/Main.java,jdk/javadoc/internal/tool/JavadocToolProvider.java,com/sun/tools/doclets/standard/Standard.java" />
<copy todir="${nb_all}/nbbuild/build/langtools/build/nb">
<fileset dir="${nb_all}/nbbuild/build/langtools/src/java.compiler/share/classes" includes="**/*.properties"/>
<fileset dir="${nb_all}/nbbuild/build/langtools/src/jdk.compiler/share/classes" includes="**/*.properties"/>
- <fileset dir="${nb_all}/nbbuild/build/langtools/src/jdk.javadoc/share/classes" includes="**/*.properties"/>
<fileset dir="${nb_all}/nbbuild/build/langtools/src/jdk.jdeps/share/classes" includes="**/*.properties"/>
</copy>
- <jar destfile="${nb_all}/nbbuild/external/vanilla-javac-api.jar" basedir="${nb_all}/nbbuild/build/langtools/build/nb" includes="javax/**,com/sun/source/**,com/sun/javadoc/**" />
+ <jar destfile="${nb_all}/nbbuild/external/vanilla-javac-api.jar" basedir="${nb_all}/nbbuild/build/langtools/build/nb" includes="javax/**,com/sun/source/**" />
<jar destfile="${nb_all}/nbbuild/external/vanilla-javac-impl.jar" basedir="${nb_all}/nbbuild/build/langtools/build/nb" excludes="javax/**,com/sun/source/**,com/sun/javadoc/**" />
</target>
diff --git a/nbbuild/templates/projectized.xml b/nbbuild/templates/projectized.xml
index 36b280a..d6bba53 100644
--- a/nbbuild/templates/projectized.xml
+++ b/nbbuild/templates/projectized.xml
@@ -112,6 +112,9 @@ If you are sure you want to build with JDK 9+ anyway, use: -Dpermit.jdk9.builds=
compilecp="test.qa-functional.compile.cp"
compiledep="test.qa-functional.testdep"/>
</parseprojectxml>
+ <condition property="requires.nb.javac" value="true">
+ <contains string="${module.classpath}" substring="/org-netbeans-libs-javacapi.jar" />
+ </condition>
<property name="spec.version.base.fatal.warning" value="true"/>
<condition property="is.regular">
<not>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists