Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(290)

Side by Side Diff: editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/cache/HtmlEntryImpl.java

Issue 82903007: Improved HTML parsing (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Clean-up Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, the Dart project authors. 2 * Copyright (c) 2013, the Dart project authors.
3 * 3 *
4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u se this file except 4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u se this file except
5 * in compliance with the License. You may obtain a copy of the License at 5 * in compliance with the License. You may obtain a copy of the License at
6 * 6 *
7 * http://www.eclipse.org/legal/epl-v10.html 7 * http://www.eclipse.org/legal/epl-v10.html
8 * 8 *
9 * Unless required by applicable law or agreed to in writing, software distribut ed under the License 9 * Unless required by applicable law or agreed to in writing, software distribut ed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K IND, either express 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K IND, either express
(...skipping 20 matching lines...) Expand all
31 * The state of the cached parsed (but not resolved) HTML unit. 31 * The state of the cached parsed (but not resolved) HTML unit.
32 */ 32 */
33 private CacheState parsedUnitState = CacheState.INVALID; 33 private CacheState parsedUnitState = CacheState.INVALID;
34 34
35 /** 35 /**
36 * The parsed HTML unit, or {@code null} if the parsed HTML unit is not curren tly cached. 36 * The parsed HTML unit, or {@code null} if the parsed HTML unit is not curren tly cached.
37 */ 37 */
38 private HtmlUnit parsedUnit; 38 private HtmlUnit parsedUnit;
39 39
40 /** 40 /**
41 * The state of the cached parse errors.
42 */
43 private CacheState parseErrorsState = CacheState.INVALID;
44
45 /**
46 * The errors produced while scanning and parsing the HTML, or {@code null} if the errors are not
47 * currently cached.
48 */
49 private AnalysisError[] parseErrors = AnalysisError.NO_ERRORS;
50
51 /**
41 * The state of the cached resolution errors. 52 * The state of the cached resolution errors.
42 */ 53 */
43 private CacheState resolutionErrorsState = CacheState.INVALID; 54 private CacheState resolutionErrorsState = CacheState.INVALID;
44 55
45 /** 56 /**
46 * The errors produced while resolving the compilation unit, or {@code null} i f the errors are not 57 * The errors produced while resolving the HTML, or {@code null} if the errors are not currently
47 * currently cached. 58 * cached.
48 */ 59 */
49 private AnalysisError[] resolutionErrors = AnalysisError.NO_ERRORS; 60 private AnalysisError[] resolutionErrors = AnalysisError.NO_ERRORS;
50 61
51 /** 62 /**
52 * The state of the cached list of referenced libraries. 63 * The state of the cached list of referenced libraries.
53 */ 64 */
54 private CacheState referencedLibrariesState = CacheState.INVALID; 65 private CacheState referencedLibrariesState = CacheState.INVALID;
55 66
56 /** 67 /**
57 * The list of libraries referenced in the HTML, or {@code null} if the list i s not currently 68 * The list of libraries referenced in the HTML, or {@code null} if the list i s not currently
(...skipping 25 matching lines...) Expand all
83 /** 94 /**
84 * Initialize a newly created cache entry to be empty. 95 * Initialize a newly created cache entry to be empty.
85 */ 96 */
86 public HtmlEntryImpl() { 97 public HtmlEntryImpl() {
87 super(); 98 super();
88 } 99 }
89 100
90 @Override 101 @Override
91 public AnalysisError[] getAllErrors() { 102 public AnalysisError[] getAllErrors() {
92 ArrayList<AnalysisError> errors = new ArrayList<AnalysisError>(); 103 ArrayList<AnalysisError> errors = new ArrayList<AnalysisError>();
93 // for (AnalysisError error : parseErrors) { 104 for (AnalysisError error : parseErrors) {
94 // errors.add(error); 105 errors.add(error);
95 // } 106 }
96 for (AnalysisError error : resolutionErrors) { 107 for (AnalysisError error : resolutionErrors) {
97 errors.add(error); 108 errors.add(error);
98 } 109 }
99 for (AnalysisError error : hints) { 110 for (AnalysisError error : hints) {
100 errors.add(error); 111 errors.add(error);
101 } 112 }
102 if (errors.size() == 0) { 113 if (errors.size() == 0) {
103 return AnalysisError.NO_ERRORS; 114 return AnalysisError.NO_ERRORS;
104 } 115 }
105 return errors.toArray(new AnalysisError[errors.size()]); 116 return errors.toArray(new AnalysisError[errors.size()]);
106 } 117 }
107 118
108 @Override 119 @Override
109 public SourceKind getKind() { 120 public SourceKind getKind() {
110 return SourceKind.HTML; 121 return SourceKind.HTML;
111 } 122 }
112 123
113 @Override 124 @Override
114 public CacheState getState(DataDescriptor<?> descriptor) { 125 public CacheState getState(DataDescriptor<?> descriptor) {
115 if (descriptor == ELEMENT) { 126 if (descriptor == ELEMENT) {
116 return elementState; 127 return elementState;
128 } else if (descriptor == PARSE_ERRORS) {
129 return parseErrorsState;
117 } else if (descriptor == PARSED_UNIT) { 130 } else if (descriptor == PARSED_UNIT) {
118 return parsedUnitState; 131 return parsedUnitState;
119 } else if (descriptor == REFERENCED_LIBRARIES) { 132 } else if (descriptor == REFERENCED_LIBRARIES) {
120 return referencedLibrariesState; 133 return referencedLibrariesState;
121 } else if (descriptor == RESOLUTION_ERRORS) { 134 } else if (descriptor == RESOLUTION_ERRORS) {
122 return resolutionErrorsState; 135 return resolutionErrorsState;
123 } else if (descriptor == HINTS) { 136 } else if (descriptor == HINTS) {
124 return hintsState; 137 return hintsState;
125 } 138 }
126 return super.getState(descriptor); 139 return super.getState(descriptor);
127 } 140 }
128 141
129 @Override 142 @Override
130 @SuppressWarnings("unchecked") 143 @SuppressWarnings("unchecked")
131 public <E> E getValue(DataDescriptor<E> descriptor) { 144 public <E> E getValue(DataDescriptor<E> descriptor) {
132 if (descriptor == ELEMENT) { 145 if (descriptor == ELEMENT) {
133 return (E) element; 146 return (E) element;
147 } else if (descriptor == PARSE_ERRORS) {
148 return (E) parseErrors;
134 } else if (descriptor == PARSED_UNIT) { 149 } else if (descriptor == PARSED_UNIT) {
135 return (E) parsedUnit; 150 return (E) parsedUnit;
136 } else if (descriptor == REFERENCED_LIBRARIES) { 151 } else if (descriptor == REFERENCED_LIBRARIES) {
137 return (E) referencedLibraries; 152 return (E) referencedLibraries;
138 } else if (descriptor == RESOLUTION_ERRORS) { 153 } else if (descriptor == RESOLUTION_ERRORS) {
139 return (E) resolutionErrors; 154 return (E) resolutionErrors;
140 } else if (descriptor == HINTS) { 155 } else if (descriptor == HINTS) {
141 return (E) hints; 156 return (E) hints;
142 } 157 }
143 return super.getValue(descriptor); 158 return super.getValue(descriptor);
144 } 159 }
145 160
146 @Override 161 @Override
147 public HtmlEntryImpl getWritableCopy() { 162 public HtmlEntryImpl getWritableCopy() {
148 HtmlEntryImpl copy = new HtmlEntryImpl(); 163 HtmlEntryImpl copy = new HtmlEntryImpl();
149 copy.copyFrom(this); 164 copy.copyFrom(this);
150 return copy; 165 return copy;
151 } 166 }
152 167
153 /** 168 /**
154 * Invalidate all of the information associated with the HTML file. 169 * Invalidate all of the information associated with the HTML file.
155 */ 170 */
156 public void invalidateAllInformation() { 171 public void invalidateAllInformation() {
157 setState(LINE_INFO, CacheState.INVALID); 172 setState(LINE_INFO, CacheState.INVALID);
158 173
174 parseErrors = AnalysisError.NO_ERRORS;
175 parseErrorsState = CacheState.INVALID;
159 parsedUnit = null; 176 parsedUnit = null;
160 parsedUnitState = CacheState.INVALID; 177 parsedUnitState = CacheState.INVALID;
161 178
162 referencedLibraries = Source.EMPTY_ARRAY; 179 referencedLibraries = Source.EMPTY_ARRAY;
163 referencedLibrariesState = CacheState.INVALID; 180 referencedLibrariesState = CacheState.INVALID;
164 181
165 invalidateAllResolutionInformation(); 182 invalidateAllResolutionInformation();
166 } 183 }
167 184
168 /** 185 /**
169 * Invalidate all of the resolution information associated with the HTML file. 186 * Invalidate all of the resolution information associated with the HTML file.
170 */ 187 */
171 public void invalidateAllResolutionInformation() { 188 public void invalidateAllResolutionInformation() {
172 element = null; 189 element = null;
173 elementState = CacheState.INVALID; 190 elementState = CacheState.INVALID;
174 191
175 resolutionErrors = AnalysisError.NO_ERRORS; 192 resolutionErrors = AnalysisError.NO_ERRORS;
176 resolutionErrorsState = CacheState.INVALID; 193 resolutionErrorsState = CacheState.INVALID;
177 194
178 hints = AnalysisError.NO_ERRORS; 195 hints = AnalysisError.NO_ERRORS;
179 hintsState = CacheState.INVALID; 196 hintsState = CacheState.INVALID;
180 } 197 }
181 198
182 /** 199 /**
183 * Record that an error was encountered while attempting to parse the source a ssociated with this 200 * Record that an error was encountered while attempting to parse the source a ssociated with this
184 * entry. 201 * entry.
185 */ 202 */
186 public void recordParseError() { 203 public void recordParseError() {
187 setState(SourceEntry.LINE_INFO, CacheState.ERROR); 204 setState(SourceEntry.LINE_INFO, CacheState.ERROR);
205 setState(HtmlEntry.PARSE_ERRORS, CacheState.ERROR);
188 setState(HtmlEntry.PARSED_UNIT, CacheState.ERROR); 206 setState(HtmlEntry.PARSED_UNIT, CacheState.ERROR);
189 setState(HtmlEntry.REFERENCED_LIBRARIES, CacheState.ERROR); 207 setState(HtmlEntry.REFERENCED_LIBRARIES, CacheState.ERROR);
190 recordResolutionError(); 208 recordResolutionError();
191 } 209 }
192 210
193 /** 211 /**
194 * Record that an error was encountered while attempting to resolve the source associated with 212 * Record that an error was encountered while attempting to resolve the source associated with
195 * this entry. 213 * this entry.
196 */ 214 */
197 public void recordResolutionError() { 215 public void recordResolutionError() {
198 setState(HtmlEntry.ELEMENT, CacheState.ERROR); 216 setState(HtmlEntry.ELEMENT, CacheState.ERROR);
199 setState(HtmlEntry.RESOLUTION_ERRORS, CacheState.ERROR); 217 setState(HtmlEntry.RESOLUTION_ERRORS, CacheState.ERROR);
200 setState(HtmlEntry.HINTS, CacheState.ERROR); 218 setState(HtmlEntry.HINTS, CacheState.ERROR);
201 } 219 }
202 220
203 @Override 221 @Override
204 public void setState(DataDescriptor<?> descriptor, CacheState state) { 222 public void setState(DataDescriptor<?> descriptor, CacheState state) {
205 if (descriptor == ELEMENT) { 223 if (descriptor == ELEMENT) {
206 element = updatedValue(state, element, null); 224 element = updatedValue(state, element, null);
207 elementState = state; 225 elementState = state;
226 } else if (descriptor == PARSE_ERRORS) {
227 parseErrors = updatedValue(state, parseErrors, null);
228 parseErrorsState = state;
208 } else if (descriptor == PARSED_UNIT) { 229 } else if (descriptor == PARSED_UNIT) {
209 parsedUnit = updatedValue(state, parsedUnit, null); 230 parsedUnit = updatedValue(state, parsedUnit, null);
210 parsedUnitState = state; 231 parsedUnitState = state;
211 } else if (descriptor == REFERENCED_LIBRARIES) { 232 } else if (descriptor == REFERENCED_LIBRARIES) {
212 referencedLibraries = updatedValue(state, referencedLibraries, Source.EMPT Y_ARRAY); 233 referencedLibraries = updatedValue(state, referencedLibraries, Source.EMPT Y_ARRAY);
213 referencedLibrariesState = state; 234 referencedLibrariesState = state;
214 } else if (descriptor == RESOLUTION_ERRORS) { 235 } else if (descriptor == RESOLUTION_ERRORS) {
215 resolutionErrors = updatedValue(state, resolutionErrors, AnalysisError.NO_ ERRORS); 236 resolutionErrors = updatedValue(state, resolutionErrors, AnalysisError.NO_ ERRORS);
216 resolutionErrorsState = state; 237 resolutionErrorsState = state;
217 } else if (descriptor == HINTS) { 238 } else if (descriptor == HINTS) {
218 hints = updatedValue(state, hints, AnalysisError.NO_ERRORS); 239 hints = updatedValue(state, hints, AnalysisError.NO_ERRORS);
219 hintsState = state; 240 hintsState = state;
220 } else { 241 } else {
221 super.setState(descriptor, state); 242 super.setState(descriptor, state);
222 } 243 }
223 } 244 }
224 245
225 @Override 246 @Override
226 public <E> void setValue(DataDescriptor<E> descriptor, E value) { 247 public <E> void setValue(DataDescriptor<E> descriptor, E value) {
227 if (descriptor == ELEMENT) { 248 if (descriptor == ELEMENT) {
228 element = (HtmlElement) value; 249 element = (HtmlElement) value;
229 elementState = CacheState.VALID; 250 elementState = CacheState.VALID;
251 } else if (descriptor == PARSE_ERRORS) {
252 parseErrors = (AnalysisError[]) value;
253 parseErrorsState = CacheState.VALID;
230 } else if (descriptor == PARSED_UNIT) { 254 } else if (descriptor == PARSED_UNIT) {
231 parsedUnit = (HtmlUnit) value; 255 parsedUnit = (HtmlUnit) value;
232 parsedUnitState = CacheState.VALID; 256 parsedUnitState = CacheState.VALID;
233 } else if (descriptor == REFERENCED_LIBRARIES) { 257 } else if (descriptor == REFERENCED_LIBRARIES) {
234 referencedLibraries = value == null ? Source.EMPTY_ARRAY : (Source[]) valu e; 258 referencedLibraries = value == null ? Source.EMPTY_ARRAY : (Source[]) valu e;
235 referencedLibrariesState = CacheState.VALID; 259 referencedLibrariesState = CacheState.VALID;
236 } else if (descriptor == RESOLUTION_ERRORS) { 260 } else if (descriptor == RESOLUTION_ERRORS) {
237 resolutionErrors = (AnalysisError[]) value; 261 resolutionErrors = (AnalysisError[]) value;
238 resolutionErrorsState = CacheState.VALID; 262 resolutionErrorsState = CacheState.VALID;
239 } else if (descriptor == HINTS) { 263 } else if (descriptor == HINTS) {
240 hints = (AnalysisError[]) value; 264 hints = (AnalysisError[]) value;
241 hintsState = CacheState.VALID; 265 hintsState = CacheState.VALID;
242 } else { 266 } else {
243 super.setValue(descriptor, value); 267 super.setValue(descriptor, value);
244 } 268 }
245 } 269 }
246 270
247 @Override 271 @Override
248 protected void copyFrom(SourceEntryImpl entry) { 272 protected void copyFrom(SourceEntryImpl entry) {
249 super.copyFrom(entry); 273 super.copyFrom(entry);
250 HtmlEntryImpl other = (HtmlEntryImpl) entry; 274 HtmlEntryImpl other = (HtmlEntryImpl) entry;
275 parseErrorsState = other.parseErrorsState;
276 parseErrors = other.parseErrors;
251 parsedUnitState = other.parsedUnitState; 277 parsedUnitState = other.parsedUnitState;
252 parsedUnit = other.parsedUnit; 278 parsedUnit = other.parsedUnit;
253 referencedLibrariesState = other.referencedLibrariesState; 279 referencedLibrariesState = other.referencedLibrariesState;
254 referencedLibraries = other.referencedLibraries; 280 referencedLibraries = other.referencedLibraries;
255 resolutionErrors = other.resolutionErrors; 281 resolutionErrors = other.resolutionErrors;
256 resolutionErrorsState = other.resolutionErrorsState; 282 resolutionErrorsState = other.resolutionErrorsState;
257 elementState = other.elementState; 283 elementState = other.elementState;
258 element = other.element; 284 element = other.element;
259 hints = other.hints; 285 hints = other.hints;
260 hintsState = other.hintsState; 286 hintsState = other.hintsState;
261 } 287 }
262 288
263 @Override 289 @Override
264 protected void writeOn(StringBuilder builder) { 290 protected void writeOn(StringBuilder builder) {
265 builder.append("Html: "); 291 builder.append("Html: ");
266 super.writeOn(builder); 292 super.writeOn(builder);
293 builder.append("; parseErrors = ");
294 builder.append(parseErrorsState);
267 builder.append("; parsedUnit = "); 295 builder.append("; parsedUnit = ");
268 builder.append(parsedUnitState); 296 builder.append(parsedUnitState);
269 builder.append("; resolutionErrors = "); 297 builder.append("; resolutionErrors = ");
270 builder.append(resolutionErrorsState); 298 builder.append(resolutionErrorsState);
271 builder.append("; referencedLibraries = "); 299 builder.append("; referencedLibraries = ");
272 builder.append(referencedLibrariesState); 300 builder.append(referencedLibrariesState);
273 builder.append("; element = "); 301 builder.append("; element = ");
274 builder.append(elementState); 302 builder.append(elementState);
275 } 303 }
276 } 304 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698