7171@ AutoService (Processor .class )
7272@ SupportedAnnotationTypes ({ANNOTATION_TYPE_ROUTE , ANNOTATION_TYPE_AUTOWIRED })
7373public class RouteProcessor extends BaseProcessor {
74- private Map <String , Set <RouteMeta >> groupMap = new HashMap <>(); // ModuleName and routeMeta.
75- private Map <String , String > rootMap = new TreeMap <>(); // Map of root metas, used for generate class file in order.
74+ private final Map <String , Set <RouteMeta >> groupMap = new HashMap <>(); // ModuleName and routeMeta.
75+ private final Map <String , String > rootMap = new TreeMap <>(); // Map of root metas, used for generate class file in order.
7676
7777 private TypeMirror iProvider = null ;
7878 private Writer docWriter ; // Writer used for write doc
@@ -81,23 +81,27 @@ public class RouteProcessor extends BaseProcessor {
8181 public synchronized void init (ProcessingEnvironment processingEnv ) {
8282 super .init (processingEnv );
8383
84- if (generateDoc ) {
85- try {
86- docWriter = mFiler .createResource (
87- StandardLocation .SOURCE_OUTPUT ,
88- PACKAGE_OF_GENERATE_DOCS ,
89- "arouter-map-of-" + moduleName + ".json"
90- ).openWriter ();
91- } catch (IOException e ) {
92- logger .error ("Create doc writer failed, because " + e .getMessage ());
93- }
94- }
95-
9684 iProvider = elementUtils .getTypeElement (Consts .IPROVIDER ).asType ();
9785
9886 logger .info (">>> RouteProcessor init. <<<" );
9987 }
10088
89+ private synchronized Writer getOrCreateDocWriter () {
90+ if (docWriter != null ) {
91+ return docWriter ;
92+ }
93+ try {
94+ docWriter = mFiler .createResource (
95+ StandardLocation .SOURCE_OUTPUT ,
96+ PACKAGE_OF_GENERATE_DOCS ,
97+ "arouter-map-of-" + moduleName + ".json"
98+ ).openWriter ();
99+ } catch (IOException e ) {
100+ logger .error ("Create doc writer failed, because " + e .getMessage ());
101+ }
102+ return docWriter ;
103+ }
104+
101105 /**
102106 * {@inheritDoc}
103107 *
@@ -336,9 +340,12 @@ private void parseRoutes(Set<? extends Element> routeElements) throws IOExceptio
336340
337341 // Output route doc
338342 if (generateDoc ) {
339- docWriter .append (JSON .toJSONString (docSource , SerializerFeature .PrettyFormat ));
340- docWriter .flush ();
341- docWriter .close ();
343+ Writer docWriter = getOrCreateDocWriter ();
344+ if (docWriter != null ) {
345+ docWriter .append (JSON .toJSONString (docSource , SerializerFeature .PrettyFormat ));
346+ docWriter .flush ();
347+ docWriter .close ();
348+ }
342349 }
343350
344351 // Write provider into disk
0 commit comments