AbstractJavaParser.java
01 /**
02  * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
03  */
04 package net.sourceforge.pmd.lang.java;
05 
06 import java.io.Reader;
07 import java.util.Map;
08 
09 import net.sourceforge.pmd.lang.AbstractParser;
10 import net.sourceforge.pmd.lang.TokenManager;
11 import net.sourceforge.pmd.lang.ast.AbstractTokenManager;
12 import net.sourceforge.pmd.lang.ast.JavaCharStream;
13 import net.sourceforge.pmd.lang.ast.Node;
14 import net.sourceforge.pmd.lang.java.ast.JavaParser;
15 import net.sourceforge.pmd.lang.java.ast.ParseException;
16 
17 /**
18  * This is a generic Java specific implementation of the Parser interface. It
19  * creates a JavaParser instance, and sets the exclude marker. It also exposes
20  * the exclude map from the JavaParser instance.
21  
22  @see AbstractParser
23  @see JavaParser
24  */
25 public abstract class AbstractJavaParser extends AbstractParser {
26     private JavaParser parser;
27 
28     public TokenManager createTokenManager(Reader source) {
29   return new JavaTokenManager(source);
30     }
31 
32     /**
33      * Subclass should override this method to modify the JavaParser as needed.
34      */
35     protected JavaParser createJavaParser(Reader sourcethrows ParseException {
36   parser = new JavaParser(new JavaCharStream(source));
37   String suppressMarker = getSuppressMarker();
38   if (suppressMarker != null) {
39       parser.setSuppressMarker(suppressMarker);
40   }
41   return parser;
42     }
43 
44     public boolean canParse() {
45   return true;
46     }
47 
48     public Node parse(String fileName, Reader sourcethrows ParseException {
49   AbstractTokenManager.setFileName(fileName);
50   return createJavaParser(source).CompilationUnit();
51     }
52 
53     public Map<Integer, String> getSuppressMap() {
54   return parser.getSuppressMap();
55     }
56 }