Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6367459

javax.tools.JavaCompilerTool.run( (JavaFileManager) null, , , ) doesn't use default JavaFileManager

XMLWordPrintable

    • b73
    • generic
    • generic
    • Verified

      javax.tools.JavaCompilerTool.run( (JavaFileManager) null, , , ) doesn't use default JavaFileManager

      test fragment:

              CommonServices.FileManagerWrapper a_fmw = new CommonServices.FileManagerWrapper( a_fm, new CommonServices.Tracer( ref ) );

              a_fmw.clearMarksCount();
              // set default (custom) file manager
              a_tool.setFileManager( a_fmw );
              // run 'run'
              try {
                  boolean a_res = a_tool.run((JavaFileManager) null, null, ref, a_validSource);
              } catch (RuntimeException a_e) {
                  return Status.failed( String.format( "exception during 'JavaCompilerTool.run' ('%s')\n", a_e.getMessage() ) );
              }
              if( a_fmw.marksCount() == 0 )
                  return Status.failed( "default JavaFileManager wasn't used (directly passed one was used)\n" );

      CommonServices.FileManagerWrapper & Markable classes:

          public static class Markable {
              public void clearMarksCount() { m_marksCount = 0; }
              public int marksCount() { return m_marksCount; }
              protected void mark() { m_marksCount++; }

              private int m_marksCount = 0;
          }

          public static class FileManagerWrapper extends Markable implements JavaFileManager {
              public FileManagerWrapper( JavaFileManager p_fm, Tracer p_tracer ) {
                  m_fm = p_fm;
                  m_tracer = p_tracer;
              }

              public void close() throws IOException {
                  mark(); m_fm.close();
              }
              public void flush() throws IOException {
                  mark(); m_fm.flush();
              }
              public JavaFileObject getFileForInput(String name) throws IOException {
                  mark();
                  return m_fm.getFileForInput(name);
              }
              public JavaFileObject getFileForOutput(String classname, JavaFileObject.Kind kind, JavaFileObject sibling) throws IOException {
                  mark();
                  return m_fm.getFileForOutput(classname, kind, sibling);
              }
              public JavaFileObject getFileForOutput(String filename, String location, String pkg) throws IOException {
                  mark();
                  return m_fm.getFileForOutput(filename, location, pkg);
              }
              public Iterable<JavaFileObject> list(String packageName, Set<JavaFileObject.Kind> kinds) throws IOException {
                  mark();
                  return m_fm.list(packageName, kinds);
              }
              public void setLocation(String location, String path) {
                  mark();
                  m_fm.setLocation(location, path);
              }

              private JavaFileManager m_fm;
              private Tracer m_tracer;
          }

            jjg Jonathan Gibbons
            itseytin Igor Tseytin (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: