RuleContext xref

View Javadoc
1 /**
2  * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 
3  */
4 package net.sourceforge.pmd;
5 
6 import java.io.File;
7 import java.util.Collections;
8 import java.util.HashMap;
9 import java.util.Map;
10 
11 public class RuleContext {
12 
13 	private Report report = new Report();
14 	private File sourceCodeFile;
15 	private String sourceCodeFilename;
16 	private SourceType sourceType;
17 	private final Map<String, Object> attributes;
18 
19 	/**
20 	 * Default constructor.
21 	 */
22 	public RuleContext() {
23 		attributes = Collections.synchronizedMap(new HashMap<String, Object>());
24 	}
25 
26 	/**
27 	 * Constructor which shares attributes with the given RuleContext.
28 	 */
29 	public RuleContext(RuleContext ruleContext) {
30 		this.attributes = ruleContext.attributes;
31 	}
32 
33 	public Report getReport() {
34 		return report;
35 	}
36 
37 	public void setReport(Report report) {
38 		this.report = report;
39 	}
40 
41 	public File getSourceCodeFile() {
42 		return sourceCodeFile;
43 	}
44 
45 	public void setSourceCodeFile(File sourceCodeFile) {
46 		this.sourceCodeFile = sourceCodeFile;
47 	}
48 
49 	public String getSourceCodeFilename() {
50 		return sourceCodeFilename;
51 	}
52 
53 	public void setSourceCodeFilename(String filename) {
54 		this.sourceCodeFilename = filename;
55 	}
56 
57 	public void excludeLines(Map<Integer, String> lines) {
58 		report.exclude(lines);
59 	}
60 
61 	public SourceType getSourceType() {
62 		return this.sourceType;
63 	}
64 
65 	public void setSourceType(SourceType t) {
66 		this.sourceType = t;
67 	}
68 
69 	/**
70 	 * Set an attribute value on the RuleContext, if it does not already exist.
71 	 * <p>
72 	 * Attributes can be shared between RuleContext instances. This operation
73 	 * is thread-safe.
74 	 * <p>
75 	 * Attribute values should be modified directly via the reference provided.
76 	 * It is not necessary to call <code>setAttribute(String, Object)</code> to
77 	 * update an attribute value. Modifications made to the attribute value
78 	 * will automatically be seen by other threads. Because of this, you must
79 	 * ensure the attribute values are themselves thread safe.
80 	 * 
81 	 * @param name The attribute name.
82 	 * @param value The attribute value.
83 	 * @exception IllegalArgumentException if <code>name</code> or <code> value</code> are <code>null</code>
84 	 * @return <code>true</code> if the attribute was set, <code>false</code> otherwise.
85 	 */
86 	public boolean setAttribute(String name, Object value) {
87 		if (name == null) {
88 			throw new IllegalArgumentException("Parameter 'name' cannot be null.");
89 		}
90 		if (value == null) {
91 			throw new IllegalArgumentException("Parameter 'value' cannot be null.");
92 		}
93 		synchronized (this.attributes) {
94 			if (!this.attributes.containsKey(name)) {
95 				this.attributes.put(name, value);
96 				return true;
97 			} else {
98 				return false;
99 			}
100 		}
101 	}
102 
103 	/**
104 	 * Get an attribute value on the RuleContext.
105 	 * <p>
106 	 * Attributes can be shared between RuleContext instances. This operation
107 	 * is thread-safe.
108 	 * <p>
109 	 * Attribute values should be modified directly via the reference provided.
110 	 * It is not necessary to call <code>setAttribute(String, Object)</code> to
111 	 * update an attribute value. Modifications made to the attribute value
112 	 * will automatically be seen by other threads. Because of this, you must
113 	 * ensure the attribute values are themselves thread safe.
114 	 * 
115 	 * @param name The attribute name.
116 	 * @return The current attribute value, or <code>null</code> if the attribute does not exist.
117 	 */
118 	public Object getAttribute(String name) {
119 		return this.attributes.get(name);
120 	}
121 
122 	/**
123 	 * Remove an attribute value on the RuleContext.
124 	 * <p>
125 	 * Attributes can be shared between RuleContext instances. This operation
126 	 * is thread-safe.
127 	 * <p>
128 	 * Attribute values should be modified directly via the reference provided.
129 	 * It is not necessary to call <code>setAttribute(String, Object)</code> to
130 	 * update an attribute value. Modifications made to the attribute value
131 	 * will automatically be seen by other threads. Because of this, you must
132 	 * ensure the attribute values are themselves thread safe.
133 	 * 
134 	 * @param name The attribute name.
135 	 * @return The current attribute value, or <code>null</code> if the attribute does not exist.
136 	 */
137 	public Object removeAttribute(String name) {
138 		return this.attributes.remove(name);
139 	}
140 }

AltStyle によって変換されたページ (->オリジナル) /