src/share/classes/com/sun/tools/javadoc/SeeTagImpl.java

changeset 1409
33abf479f202
parent 1397
8abc56be3131
child 2525
2eb010b6cb22
child 3913
242d0ecf82e4
     1.1 --- a/src/share/classes/com/sun/tools/javadoc/SeeTagImpl.java	Wed Nov 14 16:41:51 2012 -0800
     1.2 +++ b/src/share/classes/com/sun/tools/javadoc/SeeTagImpl.java	Wed Nov 14 17:23:10 2012 -0800
     1.3 @@ -25,7 +25,14 @@
     1.4  
     1.5  package com.sun.tools.javadoc;
     1.6  
     1.7 +import java.io.File;
     1.8 +import java.util.Locale;
     1.9 +
    1.10  import com.sun.javadoc.*;
    1.11 +import com.sun.tools.javac.code.Kinds;
    1.12 +import com.sun.tools.javac.code.Printer;
    1.13 +import com.sun.tools.javac.code.Symbol;
    1.14 +import com.sun.tools.javac.code.Type.CapturedType;
    1.15  import com.sun.tools.javac.util.*;
    1.16  
    1.17  /**
    1.18 @@ -75,9 +82,63 @@
    1.19                  container = (ClassDocImpl)holder;
    1.20              }
    1.21              findReferenced(container);
    1.22 +            if (showRef) showRef();
    1.23          }
    1.24      }
    1.25  
    1.26 +    private static final boolean showRef = false;
    1.27 +
    1.28 +    private void showRef() {
    1.29 +        Symbol sym;
    1.30 +        if (referencedMember != null) {
    1.31 +            if (referencedMember instanceof MethodDocImpl)
    1.32 +                sym = ((MethodDocImpl) referencedMember).sym;
    1.33 +            else if (referencedMember instanceof FieldDocImpl)
    1.34 +                sym = ((FieldDocImpl) referencedMember).sym;
    1.35 +            else
    1.36 +                sym = ((ConstructorDocImpl) referencedMember).sym;
    1.37 +        } else if (referencedClass != null) {
    1.38 +            sym = ((ClassDocImpl) referencedClass).tsym;
    1.39 +        } else if (referencedPackage != null) {
    1.40 +            sym = ((PackageDocImpl) referencedPackage).sym;
    1.41 +        } else
    1.42 +            return;
    1.43 +
    1.44 +        final JavacMessages messages = JavacMessages.instance(docenv().context);
    1.45 +        Locale locale = Locale.getDefault();
    1.46 +        Printer printer = new Printer() {
    1.47 +            int count;
    1.48 +            @Override
    1.49 +            protected String localize(Locale locale, String key, Object... args) {
    1.50 +                return messages.getLocalizedString(locale, key, args);
    1.51 +            }
    1.52 +            @Override
    1.53 +            protected String capturedVarId(CapturedType t, Locale locale) {
    1.54 +                return "CAP#" + (++count);
    1.55 +            }
    1.56 +        };
    1.57 +
    1.58 +        String s = text.replaceAll("\\s+", " ");  // normalize white space
    1.59 +        int sp = s.indexOf(" ");
    1.60 +        int lparen = s.indexOf("(");
    1.61 +        int rparen = s.indexOf(")");
    1.62 +        String seetext = (sp == -1) ? s
    1.63 +                : (lparen == -1 || sp < lparen) ? s.substring(0, sp)
    1.64 +                : s.substring(0, rparen + 1);
    1.65 +
    1.66 +        File file = new File(holder.position().file().getAbsoluteFile().toURI().normalize());
    1.67 +
    1.68 +        StringBuilder sb = new StringBuilder();
    1.69 +        sb.append("+++ ").append(file).append(": ")
    1.70 +                .append(name()).append(" ").append(seetext).append(": ");
    1.71 +        sb.append(sym.getKind()).append(" ");
    1.72 +        if (sym.kind == Kinds.MTH || sym.kind == Kinds.VAR)
    1.73 +            sb.append(printer.visit(sym.owner, locale)).append(".");
    1.74 +        sb.append(printer.visit(sym, locale));
    1.75 +
    1.76 +        System.err.println(sb);
    1.77 +    }
    1.78 +
    1.79      /**
    1.80       * get the class name part of @see, For instance,
    1.81       * if the comment is @see String#startsWith(java.lang.String) .

mercurial