SourceFileScope.java
01 package net.sourceforge.pmd.lang.java.symboltable;
02 
03 import net.sourceforge.pmd.util.Applier;
04 
05 import java.util.ArrayList;
06 import java.util.List;
07 import java.util.HashMap;
08 import java.util.Map;
09 
10 public class SourceFileScope extends AbstractScope {
11 
12     protected Map<ClassNameDeclaration, List<NameOccurrence>> classNames = new HashMap<ClassNameDeclaration, List<NameOccurrence>>();
13     private String packageImage;
14 
15     public SourceFileScope() {
16         this("");
17     }
18 
19     public SourceFileScope(String image) {
20         this.packageImage = image;
21     }
22 
23     public ClassScope getEnclosingClassScope() {
24         throw new RuntimeException("getEnclosingClassScope() called on SourceFileScope");
25     }
26 
27     public MethodScope getEnclosingMethodScope() {
28         throw new RuntimeException("getEnclosingMethodScope() called on SourceFileScope");
29     }
30 
31     public String getPackageName() {
32         return packageImage;
33     }
34 
35     public SourceFileScope getEnclosingSourceFileScope() {
36         return this;
37     }
38 
39     public void addDeclaration(ClassNameDeclaration classDecl) {
40         classNames.put(classDecl, new ArrayList<NameOccurrence>());
41     }
42 
43     public void addDeclaration(MethodNameDeclaration decl) {
44         throw new RuntimeException("SourceFileScope.addDeclaration(MethodNameDeclaration decl) called");
45     }
46 
47     public void addDeclaration(VariableNameDeclaration decl) {
48         throw new RuntimeException("SourceFileScope.addDeclaration(VariableNameDeclaration decl) called");
49     }
50 
51     public Map<ClassNameDeclaration, List<NameOccurrence>> getClassDeclarations() {
52         return classNames;
53     }
54 
55     public Map<VariableNameDeclaration, List<NameOccurrence>> getVariableDeclarations() {
56         throw new RuntimeException("PackageScope.getVariableDeclarations() called");
57     }
58 
59     public NameDeclaration addVariableNameOccurrence(NameOccurrence occ) {
60         return null;
61     }
62 
63     public String toString() {
64         return "SourceFileScope: " + glomNames(classNames.keySet());
65     }
66 
67     protected NameDeclaration findVariableHere(NameOccurrence occ) {
68         ImageFinderFunction finder = new ImageFinderFunction(occ.getImage());
69         Applier.apply(finder, classNames.keySet().iterator());
70         return finder.getDecl();
71     }
72 
73 }