4545import java .util .Set ;
4646import java .util .logging .Level ;
4747import java .util .logging .Logger ;
48- import java .util .regex .Matcher ;
49- import java .util .regex .Pattern ;
5048import org .netbeans .api .annotations .common .NonNull ;
5149import org .netbeans .api .java .classpath .ClassPath ;
5250import org .netbeans .api .project .FileOwnerQuery ;
5553import org .netbeans .modules .parsing .impl .indexing .PathRegistry ;
5654import org .netbeans .modules .parsing .impl .indexing .URLCache ;
5755import org .netbeans .modules .parsing .impl .indexing .implspi .CacheFolderProvider ;
58- import org .netbeans .modules .parsing .spi .indexing .ErrorsCache ;
5956import org .netbeans .modules .parsing .spi .indexing .ErrorsCache .Convertor ;
60- import org .netbeans .modules .parsing .spi .indexing .ErrorsCache .Convertor2 ;
6157import org .netbeans .modules .parsing .spi .indexing .ErrorsCache .ErrorKind ;
62- import org .netbeans .modules .parsing .spi .indexing .ErrorsCache .ReverseConvertor ;
6358import org .netbeans .modules .parsing .spi .indexing .Indexable ;
6459import org .netbeans .spi .tasklist .Task ;
6560import org .openide .filesystems .FileObject ;
@@ -82,8 +77,6 @@ public class TaskCache {
8277
8378 private static final Logger LOG = Logger .getLogger (TaskCache .class .getName ());
8479
85- private static final Pattern PATTERN = Pattern .compile ("(\\ d*),(\\ d*)(?:-(\\ d*),(\\ d*))?" );
86-
8780 static {
8881// LOG.setLevel(Level.FINEST);
8982 }
@@ -110,31 +103,17 @@ private String getTaskType( ErrorKind k ) {
110103 }
111104 return null ;
112105 }
113-
114- private ReverseConvertor <Task > getTaskConvertor (FileObject file ) {
115- return (kind , range , message ) -> {
116- String severity = getTaskType (kind );
117- if (null != severity ) {
118- return Task .create (file , severity , message , range .getStart ().getLine ());
119- }
120- return null ;
121- };
122- }
123-
106+
124107 public List <Task > getErrors (FileObject file ) {
125- return getErrors (file , getTaskConvertor (file ));
126- }
127-
128- public <T > List <T > getErrors (FileObject file , ReverseConvertor <T > convertor ) {
129- List <T > result = new LinkedList <>();
108+ List <Task > result = new LinkedList <Task >();
130109
131- result .addAll (getErrors (file , convertor , ERR_EXT ));
132- result .addAll (getErrors (file , convertor , WARN_EXT ));
110+ result .addAll (getErrors (file , ERR_EXT ));
111+ result .addAll (getErrors (file , WARN_EXT ));
133112
134113 return result ;
135114 }
136115
137- private < T > List <T > getErrors (FileObject file , ReverseConvertor < T > convertor , String ext ) {
116+ private List <Task > getErrors (FileObject file , String ext ) {
138117 LOG .log (Level .FINE , "getErrors, file={0}, ext={1}" , new Object [] {FileUtil .getFileDisplayName (file ), ext }); //NOI18N
139118
140119 try {
@@ -143,16 +122,16 @@ private <T> List<T> getErrors(FileObject file, ReverseConvertor<T> convertor, St
143122 LOG .log (Level .FINE , "getErrors, error file={0}" , input == null ? "null" : input .getAbsolutePath ()); //NOI18N
144123
145124 if (input == null || !input .canRead ())
146- return Collections .emptyList ();
125+ return Collections .< Task > emptyList ();
147126
148127 input .getParentFile ().mkdirs ();
149128
150- return loadErrors (input , convertor );
129+ return loadErrors (input , file );
151130 } catch (IOException e ) {
152131 LOG .log (Level .FINE , null , e );
153132 }
154133
155- return Collections .emptyList ();
134+ return Collections .< Task > emptyList ();
156135 }
157136
158137 private <T > boolean dumpErrors (File output , Iterable <? extends T > errors , Convertor <T > convertor , boolean interestedInReturnValue ) throws IOException {
@@ -165,15 +144,7 @@ private <T> boolean dumpErrors(File output, Iterable<? extends T> errors, Conver
165144 for (T err : errors ) {
166145 pw .print (convertor .getKind (err ).name ());
167146 pw .print (':' ); //NOI18N
168- if (convertor instanceof Convertor2 ) {
169- ErrorsCache .Range range = ((Convertor2 <T >) convertor ).getRange (err );
170- pw .print (String .format ("%d,%d" , range .getStart ().getLine (), range .getStart ().getColumn ()));
171- if (range .getEnd () != null ) {
172- pw .print (String .format ("-%d,%d" , range .getEnd ().getLine (), range .getEnd ().getColumn ()));
173- }
174- } else {
175- pw .print (convertor .getLineNumber (err ));
176- }
147+ pw .print (convertor .getLineNumber (err ));
177148 pw .print (':' ); //NOI18N
178149
179150 String description = convertor .getMessage (err );
@@ -229,7 +200,6 @@ public <T> void dumpErrors(final URL root, final Indexable i, final Iterable<? e
229200 }
230201 });
231202 } catch (IOException ex ) {
232- Exceptions .attachMessage (ex , "can't dump errors for: " + String .valueOf (i ));
233203 Exceptions .printStackTrace (ex );
234204 }
235205 }
@@ -285,8 +255,8 @@ private <T> void dumpErrors(TransactionContext c, URL root, Indexable i, Iterabl
285255 c .rootsToRefresh .add (root );
286256 }
287257
288- private < T > List <T > loadErrors (File input , ReverseConvertor < T > convertor ) throws IOException {
289- List <T > result = new LinkedList <>();
258+ private List <Task > loadErrors (File input , FileObject file ) throws IOException {
259+ List <Task > result = new LinkedList <Task >();
290260 BufferedReader pw = new BufferedReader (new InputStreamReader (new FileInputStream (input ), StandardCharsets .UTF_8 ));
291261 String line ;
292262
@@ -307,26 +277,18 @@ private <T> List<T> loadErrors(File input, ReverseConvertor<T> convertor) throws
307277 continue ;
308278 }
309279
310- ErrorsCache .Range range ;
311- Matcher matcher = PATTERN .matcher (parts [1 ]);
312- if (matcher .matches ()) {
313- ErrorsCache .Position start = new ErrorsCache .Position (Integer .parseInt (matcher .group (1 )), Integer .parseInt (matcher .group (2 )));
314- ErrorsCache .Position end = matcher .group (3 ) != null && matcher .group (4 ) != null ? new ErrorsCache .Position (Integer .parseInt (matcher .group (3 )), Integer .parseInt (matcher .group (4 ))) : null ;
315- range = new ErrorsCache .Range (start , end );
316- } else {
317- int lineNumber = Integer .parseInt (parts [1 ]);
318- range = new ErrorsCache .Range (new ErrorsCache .Position (lineNumber , 1 ), null );
319- }
320-
280+ int lineNumber = Integer .parseInt (parts [1 ]);
321281 String message = parts [2 ];
322282
323- message = message .replace ("\\ d" , ":" ) //NOI18N
324- . replace ("\\ n" , "\n " ) //NOI18N
325- . replace ("\\ \\ " , "\\ " ); //NOI18N
283+ message = message .replaceAll ("\\ \\ d" , ":" ); //NOI18N
284+ message = message . replaceAll ("\\ \\ n" , " " ); //NOI18N
285+ message = message . replaceAll ("\\ \\ \\ \\ " , "\\ \\ " ); //NOI18N
326286
327- T item = convertor .get (kind , range , message );
328- if (null != item ) {
329- result .add (item );
287+ String severity = getTaskType (kind );
288+
289+ if (null != severity ) {
290+ Task err = Task .create (file , severity , message , lineNumber );
291+ result .add (err );
330292 }
331293 }
332294
@@ -389,12 +351,12 @@ private List<URL> getAllFilesWithRecord(URL root, boolean onlyErrors) throws IOE
389351 public List <URL > getAllFilesInError (URL root ) throws IOException {
390352 return getAllFilesWithRecord (root , true );
391353 }
392-
354+
393355 public boolean isInError (FileObject file , boolean recursive ) {
394356 LOG .log (Level .FINE , "file={0}, recursive={1}" , new Object [] {file , Boolean .valueOf (recursive )}); //NOI18N
395357
396358 if (file .isData ()) {
397- return !getErrors (file , getTaskConvertor ( file ), ERR_EXT ).isEmpty ();
359+ return !getErrors (file , ERR_EXT ).isEmpty ();
398360 } else {
399361 try {
400362 ClassPath cp = Utilities .getSourceClassPathFor (file );
0 commit comments