langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/PathAndPackageVerifier.java
author vasya
Mon, 14 Dec 2015 20:18:19 +0100
changeset 34752 9c262a013456
parent 31115 8d8e98052d5d
permissions -rw-r--r--
8145342: Some copyright notices are inconsistently and ill formatted Summary: Adjusted formatting of copyright notices. Reviewed-by: darcy, alundblad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26992
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
     1
/*
31115
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
     2
 * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
26992
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
     4
 *
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    10
 *
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    15
 * accompanied this code).
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    16
 *
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    20
 *
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    23
 * questions.
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    24
 */
34752
9c262a013456 8145342: Some copyright notices are inconsistently and ill formatted
vasya
parents: 31115
diff changeset
    25
26992
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    26
package com.sun.tools.sjavac.comp;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    27
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    28
import java.nio.file.Path;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    29
import java.nio.file.Paths;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    30
import java.util.HashSet;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    31
import java.util.Iterator;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    32
import java.util.Set;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    33
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    34
import javax.tools.JavaFileObject;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    35
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    36
import com.sun.source.tree.CompilationUnitTree;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    37
import com.sun.source.util.TaskEvent;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    38
import com.sun.source.util.TaskListener;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    39
import com.sun.tools.javac.tree.JCTree;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    40
import com.sun.tools.javac.tree.JCTree.JCFieldAccess;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    41
import com.sun.tools.javac.tree.JCTree.JCIdent;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    42
import com.sun.tools.javac.util.DefinedBy;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    43
import com.sun.tools.javac.util.DefinedBy.Api;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    44
import com.sun.tools.javac.util.Name;
31115
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    45
import com.sun.tools.sjavac.Log;
26992
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    46
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    47
public class PathAndPackageVerifier implements TaskListener {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    48
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    49
    // Stores the set of compilation units whose source file path does not
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    50
    // match the package declaration.
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    51
    Set<CompilationUnitTree> misplacedCompilationUnits = new HashSet<>();
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    52
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    53
    @Override
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    54
    @DefinedBy(Api.COMPILER_TREE)
31115
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    55
    public void finished(TaskEvent e) {
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    56
        if (e.getKind() == TaskEvent.Kind.ANALYZE) {
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    57
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    58
            CompilationUnitTree cu = e.getCompilationUnit();
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    59
            if (cu == null)
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    60
                return;
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    61
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    62
            JavaFileObject jfo = cu.getSourceFile();
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    63
            if (jfo == null)
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    64
                return; // No source file -> package doesn't matter
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    65
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    66
            JCTree pkg = (JCTree) cu.getPackageName();
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    67
            if (pkg == null)
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    68
                return; // Default package. See JDK-8048144.
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    69
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    70
            Path dir = Paths.get(jfo.toUri()).normalize().getParent();
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    71
            if (!checkPathAndPackage(dir, pkg))
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    72
                misplacedCompilationUnits.add(cu);
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    73
        }
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    74
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    75
        if (e.getKind() == TaskEvent.Kind.COMPILATION) {
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    76
            for (CompilationUnitTree cu : misplacedCompilationUnits) {
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    77
                Log.error("Misplaced compilation unit.");
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    78
                Log.error("    Directory: " + Paths.get(cu.getSourceFile().toUri()).getParent());
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    79
                Log.error("    Package:   " + cu.getPackageName());
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    80
            }
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    81
        }
26992
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    82
    }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    83
31115
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    84
    public boolean errorsDiscovered() {
8d8e98052d5d 8054717: SJavac should track changes in the public apis of classpath classes!
alundblad
parents: 26992
diff changeset
    85
        return misplacedCompilationUnits.size() > 0;
26992
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    86
    }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    87
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    88
    /* Returns true if dir matches pkgName.
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    89
     *
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    90
     * Examples:
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    91
     *     (a/b/c, a.b.c) gives true
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    92
     *     (i/j/k, i.x.k) gives false
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    93
     *
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    94
     * Currently (x/a/b/c, a.b.c) also gives true. See JDK-8059598.
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    95
     */
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    96
    private boolean checkPathAndPackage(Path dir, JCTree pkgName) {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    97
        Iterator<String> pathIter = new ParentIterator(dir);
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    98
        Iterator<String> pkgIter = new EnclosingPkgIterator(pkgName);
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
    99
        while (pathIter.hasNext() && pkgIter.hasNext()) {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   100
            if (!pathIter.next().equals(pkgIter.next()))
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   101
                return false;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   102
        }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   103
        return !pkgIter.hasNext(); /*&& !pathIter.hasNext() See JDK-8059598 */
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   104
    }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   105
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   106
    /* Iterates over the names of the parents of the given path:
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   107
     * Example: dir1/dir2/dir3  results in  dir3 -> dir2 -> dir1
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   108
     */
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   109
    private static class ParentIterator implements Iterator<String> {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   110
        Path next;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   111
        ParentIterator(Path initial) {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   112
            next = initial;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   113
        }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   114
        @Override
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   115
        public boolean hasNext() {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   116
            return next != null;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   117
        }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   118
        @Override
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   119
        public String next() {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   120
            String tmp = next.getFileName().toString();
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   121
            next = next.getParent();
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   122
            return tmp;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   123
        }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   124
    }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   125
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   126
    /* Iterates over the names of the enclosing packages:
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   127
     * Example: pkg1.pkg2.pkg3  results in  pkg3 -> pkg2 -> pkg1
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   128
     */
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   129
    private static class EnclosingPkgIterator implements Iterator<String> {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   130
        JCTree next;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   131
        EnclosingPkgIterator(JCTree initial) {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   132
            next = initial;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   133
        }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   134
        @Override
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   135
        public boolean hasNext() {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   136
            return next != null;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   137
        }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   138
        @Override
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   139
        public String next() {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   140
            Name name;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   141
            if (next instanceof JCIdent) {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   142
                name = ((JCIdent) next).name;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   143
                next = null;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   144
            } else {
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   145
                JCFieldAccess fa = (JCFieldAccess) next;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   146
                name = fa.name;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   147
                next = fa.selected;
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   148
            }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   149
            return name.toString();
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   150
        }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   151
    }
92e69fa21956 8059349: Public API scanning should be implemented in the form of a TaskListener
alundblad
parents:
diff changeset
   152
}