langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Start.java
changeset 27320 f0739350a62d
parent 25874 83c19f00452c
child 27379 5ae894733e09
equal deleted inserted replaced
27319:030080f03e4f 27320:f0739350a62d
    86      * In API mode, exceptions thrown while calling the doclet are
    86      * In API mode, exceptions thrown while calling the doclet are
    87      * propagated using ClientCodeException.
    87      * propagated using ClientCodeException.
    88      */
    88      */
    89     private boolean apiMode;
    89     private boolean apiMode;
    90 
    90 
       
    91     private JavaFileManager fileManager;
       
    92     private boolean closeFileManagerOnExit;
       
    93 
    91     Start(String programName,
    94     Start(String programName,
    92           PrintWriter errWriter,
    95           PrintWriter errWriter,
    93           PrintWriter warnWriter,
    96           PrintWriter warnWriter,
    94           PrintWriter noticeWriter,
    97           PrintWriter noticeWriter,
    95           String defaultDocletClassName) {
    98           String defaultDocletClassName) {
   237         } catch (Exception ee) {
   240         } catch (Exception ee) {
   238             ee.printStackTrace(System.err);
   241             ee.printStackTrace(System.err);
   239             messager.error(Messager.NOPOS, "main.fatal.exception");
   242             messager.error(Messager.NOPOS, "main.fatal.exception");
   240             failed = true;
   243             failed = true;
   241         } finally {
   244         } finally {
       
   245             if (fileManager != null && closeFileManagerOnExit) {
       
   246                 try {
       
   247                     fileManager.close();
       
   248                 } catch (IOException ignore) {
       
   249                 }
       
   250             }
   242             messager.exitNotice();
   251             messager.exitNotice();
   243             messager.flush();
   252             messager.flush();
   244         }
   253         }
   245         failed |= messager.nerrors() > 0;
   254         failed |= messager.nerrors() > 0;
   246         failed |= rejectWarnings && messager.nwarnings() > 0;
   255         failed |= rejectWarnings && messager.nwarnings() > 0;
   268             e.printStackTrace(System.err);
   277             e.printStackTrace(System.err);
   269             exit();
   278             exit();
   270         }
   279         }
   271 
   280 
   272 
   281 
   273         JavaFileManager fileManager = context.get(JavaFileManager.class);
   282         fileManager = context.get(JavaFileManager.class);
       
   283 
   274         setDocletInvoker(docletClass, fileManager, argv);
   284         setDocletInvoker(docletClass, fileManager, argv);
   275 
   285 
   276         compOpts = Options.instance(context);
   286         compOpts = Options.instance(context);
   277         // Make sure no obsolete source/target messages are reported
   287         // Make sure no obsolete source/target messages are reported
   278         compOpts.put("-Xlint:-options", "-Xlint:-options");
   288         compOpts.put("-Xlint:-options", "-Xlint:-options");
   331         }
   341         }
   332 
   342 
   333         if (fileManager == null) {
   343         if (fileManager == null) {
   334             JavacFileManager.preRegister(context);
   344             JavacFileManager.preRegister(context);
   335             fileManager = context.get(JavaFileManager.class);
   345             fileManager = context.get(JavaFileManager.class);
       
   346             closeFileManagerOnExit = true;
   336         }
   347         }
   337         if (fileManager instanceof BaseFileManager) {
   348         if (fileManager instanceof BaseFileManager) {
   338             ((BaseFileManager) fileManager).handleOptions(fileManagerOpts);
   349             ((BaseFileManager) fileManager).handleOptions(fileManagerOpts);
   339         }
   350         }
   340 
   351