001
014
015 package com.liferay.portal.util;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.util.KeyValuePair;
020
021 import java.io.InputStream;
022
023 import org.xml.sax.InputSource;
024
025
028 public class EntityResolver implements org.xml.sax.EntityResolver {
029
030 public InputSource resolveEntity(String publicId, String systemId) {
031 ClassLoader classLoader = getClass().getClassLoader();
032
033 if (_log.isDebugEnabled()) {
034 _log.debug("Resolving entity " + publicId + " " + systemId);
035 }
036
037 if (publicId != null) {
038 for (int i = 0; i < _PUBLIC_IDS.length; i++) {
039 KeyValuePair kvp = _PUBLIC_IDS[i];
040
041 if (publicId.equals(kvp.getKey())) {
042 InputStream is = classLoader.getResourceAsStream(
043 _DEFINITIONS_PATH + kvp.getValue());
044
045 if (_log.isDebugEnabled()) {
046 _log.debug("Entity found for public id " + systemId);
047 }
048
049 return new InputSource(is);
050 }
051 }
052 }
053 else if (systemId != null) {
054 for (int i = 0; i < _SYSTEM_IDS.length; i++) {
055 KeyValuePair kvp = _SYSTEM_IDS[i];
056
057 if (systemId.equals(kvp.getKey())) {
058 InputStream is = classLoader.getResourceAsStream(
059 _DEFINITIONS_PATH + kvp.getValue());
060
061 if (_log.isDebugEnabled()) {
062 _log.debug("Entity found for system id " + systemId);
063 }
064
065 InputSource inputSource = new InputSource(is);
066
067 inputSource.setSystemId(kvp.getKey());
068
069 return inputSource;
070 }
071 }
072 }
073
074 if (_log.isDebugEnabled()) {
075 _log.debug("No entity found for " + publicId + " " + systemId);
076 }
077
078 return null;
079 }
080
081 private static String _DEFINITIONS_PATH = "com/liferay/portal/definitions/";
082
083 private static KeyValuePair[] _PUBLIC_IDS = {
084 new KeyValuePair(
085 "datatypes",
086 "datatypes.dtd"
087 ),
088
089 new KeyValuePair(
090 "-
091 "facelet-taglib_1_0.dtd"
092 ),
093
094 new KeyValuePair(
095 "-
096 "hibernate-mapping-3.0.dtd"
097 ),
098
099 new KeyValuePair(
100 "-
101 "liferay-display_2_0_0.dtd"
102 ),
103
104 new KeyValuePair(
105 "-
106 "liferay-display_3_5_0.dtd"
107 ),
108
109 new KeyValuePair(
110 "-
111 "liferay-display_4_0_0.dtd"
112 ),
113
114 new KeyValuePair(
115 "-
116 "liferay-display_5_0_0.dtd"
117 ),
118
119 new KeyValuePair(
120 "-
121 "liferay-display_5_1_0.dtd"
122 ),
123
124 new KeyValuePair(
125 "-
126 "liferay-display_5_2_0.dtd"
127 ),
128
129 new KeyValuePair(
130 "-
131 "liferay-display_6_0_0.dtd"
132 ),
133
134 new KeyValuePair(
135 "-
136 "liferay-display_6_1_0.dtd"
137 ),
138
139 new KeyValuePair(
140 "-
141 "liferay-friendly-url-routes_6_0_0.dtd"
142 ),
143
144 new KeyValuePair(
145 "-
146 "liferay-friendly-url-routes_6_1_0.dtd"
147 ),
148
149 new KeyValuePair(
150 "-
151 "liferay-hook_5_1_0.dtd"
152 ),
153
154 new KeyValuePair(
155 "-
156 "liferay-hook_5_2_0.dtd"
157 ),
158
159 new KeyValuePair(
160 "-
161 "liferay-hook_6_0_0.dtd"
162 ),
163
164 new KeyValuePair(
165 "-
166 "liferay-hook_6_1_0.dtd"
167 ),
168
169 new KeyValuePair(
170 "-
171 "liferay-layout-templates_3_6_0.dtd"
172 ),
173
174 new KeyValuePair(
175 "-
176 "liferay-layout-templates_4_0_0.dtd"
177 ),
178
179 new KeyValuePair(
180 "-
181 "liferay-layout-templates_4_3_0.dtd"
182 ),
183
184 new KeyValuePair(
185 "-
186 "liferay-layout-templates_5_0_0.dtd"
187 ),
188
189 new KeyValuePair(
190 "-
191 "liferay-layout-templates_5_1_0.dtd"
192 ),
193
194 new KeyValuePair(
195 "-
196 "liferay-layout-templates_5_2_0.dtd"
197 ),
198
199 new KeyValuePair(
200 "-
201 "liferay-layout-templates_6_0_0.dtd"
202 ),
203
204 new KeyValuePair(
205 "-
206 "liferay-layout-templates_6_1_0.dtd"
207 ),
208
209 new KeyValuePair(
210 "-
211 "liferay-look-and-feel_3_5_0.dtd"
212 ),
213
214 new KeyValuePair(
215 "-
216 "liferay-look-and-feel_4_0_0.dtd"
217 ),
218
219 new KeyValuePair(
220 "-
221 "liferay-look-and-feel_4_3_0.dtd"
222 ),
223
224 new KeyValuePair(
225 "-
226 "liferay-look-and-feel_5_0_0.dtd"
227 ),
228
229 new KeyValuePair(
230 "-
231 "liferay-look-and-feel_5_1_0.dtd"
232 ),
233
234 new KeyValuePair(
235 "-
236 "liferay-look-and-feel_5_2_0.dtd"
237 ),
238
239 new KeyValuePair(
240 "-
241 "liferay-look-and-feel_6_0_0.dtd"
242 ),
243
244 new KeyValuePair(
245 "-
246 "liferay-look-and-feel_6_1_0.dtd"
247 ),
248
249 new KeyValuePair(
250 "-
251 "liferay-plugin-package_4_3_0.dtd"
252 ),
253
254 new KeyValuePair(
255 "-
256 "liferay-plugin-package_5_0_0.dtd"
257 ),
258
259 new KeyValuePair(
260 "-
261 "liferay-plugin-package_5_1_0.dtd"
262 ),
263
264 new KeyValuePair(
265 "-
266 "liferay-plugin-package_5_2_0.dtd"
267 ),
268
269 new KeyValuePair(
270 "-
271 "liferay-plugin-package_6_0_0.dtd"
272 ),
273
274 new KeyValuePair(
275 "-
276 "liferay-plugin-package_6_1_0.dtd"
277 ),
278
279 new KeyValuePair(
280 "-
281 "liferay-plugin-repository_4_3_0.dtd"
282 ),
283
284 new KeyValuePair(
285 "-
286 "liferay-plugin-repository_5_0_0.dtd"
287 ),
288
289 new KeyValuePair(
290 "-
291 "liferay-plugin-repository_5_1_0.dtd"
292 ),
293
294 new KeyValuePair(
295 "-
296 "liferay-plugin-repository_5_2_0.dtd"
297 ),
298
299 new KeyValuePair(
300 "-
301 "liferay-plugin-repository_6_0_0.dtd"
302 ),
303
304 new KeyValuePair(
305 "-
306 "liferay-plugin-repository_6_1_0.dtd"
307 ),
308
309 new KeyValuePair(
310 "-
311 "liferay-portlet-app_3_5_0.dtd"
312 ),
313
314 new KeyValuePair(
315 "-
316 "liferay-portlet-app_4_0_0.dtd"
317 ),
318
319 new KeyValuePair(
320 "-
321 "liferay-portlet-app_4_1_0.dtd"
322 ),
323
324 new KeyValuePair(
325 "-
326 "liferay-portlet-app_4_2_0.dtd"
327 ),
328
329 new KeyValuePair(
330 "-
331 "liferay-portlet-app_4_3_0.dtd"
332 ),
333
334 new KeyValuePair(
335 "-
336 "liferay-portlet-app_4_3_1.dtd"
337 ),
338
339 new KeyValuePair(
340 "-
341 "liferay-portlet-app_4_3_2.dtd"
342 ),
343
344 new KeyValuePair(
345 "-
346 "liferay-portlet-app_4_3_3.dtd"
347 ),
348
349 new KeyValuePair(
350 "-
351 "liferay-portlet-app_4_3_6.dtd"
352 ),
353
354 new KeyValuePair(
355 "-
356 "liferay-portlet-app_4_4_0.dtd"
357 ),
358
359 new KeyValuePair(
360 "-
361 "liferay-portlet-app_5_0_0.dtd"
362 ),
363
364 new KeyValuePair(
365 "-
366 "liferay-portlet-app_5_1_0.dtd"
367 ),
368
369 new KeyValuePair(
370 "-
371 "liferay-portlet-app_5_2_0.dtd"
372 ),
373
374 new KeyValuePair(
375 "-
376 "liferay-portlet-app_6_0_0.dtd"
377 ),
378
379 new KeyValuePair(
380 "-
381 "liferay-portlet-app_6_1_0.dtd"
382 ),
383
384 new KeyValuePair(
385 "-
386 "liferay-resource-action-mapping_6_0_0.dtd"
387 ),
388
389 new KeyValuePair(
390 "-
391 "liferay-resource-action-mapping_6_1_0.dtd"
392 ),
393
394 new KeyValuePair(
395 "-
396 "liferay-service-builder_3_5_0.dtd"
397 ),
398
399 new KeyValuePair(
400 "-
401 "liferay-service-builder_3_6_1.dtd"
402 ),
403
404 new KeyValuePair(
405 "-
406 "liferay-service-builder_4_0_0.dtd"
407 ),
408
409 new KeyValuePair(
410 "-
411 "liferay-service-builder_4_2_0.dtd"
412 ),
413
414 new KeyValuePair(
415 "-
416 "liferay-service-builder_4_3_0.dtd"
417 ),
418
419 new KeyValuePair(
420 "-
421 "liferay-service-builder_4_3_3.dtd"
422 ),
423
424 new KeyValuePair(
425 "-
426 "liferay-service-builder_4_4_0.dtd"
427 ),
428
429 new KeyValuePair(
430 "-
431 "liferay-service-builder_5_0_0.dtd"
432 ),
433
434 new KeyValuePair(
435 "-
436 "liferay-service-builder_5_1_0.dtd"
437 ),
438
439 new KeyValuePair(
440 "-
441 "liferay-service-builder_5_2_0.dtd"
442 ),
443
444 new KeyValuePair(
445 "-
446 "liferay-service-builder_6_0_0.dtd"
447 ),
448
449 new KeyValuePair(
450 "-
451 "liferay-service-builder_6_1_0.dtd"
452 ),
453
454 new KeyValuePair(
455 "-
456 "liferay-social_6_1_0.dtd"
457 ),
458
459 new KeyValuePair(
460 "-
461 "liferay-theme-loader_4_3_0.dtd"
462 ),
463
464 new KeyValuePair(
465 "-
466 "liferay-theme-loader_5_0_0.dtd"
467 ),
468
469 new KeyValuePair(
470 "-
471 "liferay-theme-loader_5_1_0.dtd"
472 ),
473
474 new KeyValuePair(
475 "-
476 "liferay-theme-loader_5_2_0.dtd"
477 ),
478
479 new KeyValuePair(
480 "-
481 "liferay-theme-loader_6_0_0.dtd"
482 ),
483
484 new KeyValuePair(
485 "-
486 "liferay-theme-loader_6_1_0.dtd"
487 ),
488
489 new KeyValuePair(
490 "-
491 "mule-configuration.dtd"
492 ),
493
494 new KeyValuePair(
495 "-
496 "spring-beans.dtd"
497 ),
498
499 new KeyValuePair(
500 "-
501 "struts-config_1_2.dtd"
502 ),
503
504 new KeyValuePair(
505 "-
506 "tiles-config_1_1.dtd"
507 ),
508
509 new KeyValuePair(
510 "-
511 "web-app_2_3.dtd"
512 ),
513
514 new KeyValuePair(
515 "-
516 "web-facesconfig_1_0.dtd"
517 ),
518
519 new KeyValuePair(
520 "-
521 "web-facesconfig_1_1.dtd"
522 ),
523
524 new KeyValuePair(
525 "-
526 "XMLSchema.dtd"
527 )
528 };
529
530 private static KeyValuePair[] _SYSTEM_IDS = {
531 new KeyValuePair(
532 "http:
533 "j2ee_1_4.xsd"
534 ),
535
536 new KeyValuePair(
537 "http:
538 "j2ee_web_services_client_1_1.xsd",
539 "j2ee_web_services_client_1_1.xsd"
540 ),
541
542 new KeyValuePair(
543 "http:
544 "javaee_5.xsd"
545 ),
546
547 new KeyValuePair(
548 "http:
549 "javaee_6.xsd"
550 ),
551
552 new KeyValuePair(
553 "http:
554 "javaee_web_services_client_1_2.xsd",
555 "javaee_web_services_client_1_2.xsd"
556 ),
557
558 new KeyValuePair(
559 "http:
560 "javaee_web_services_client_1_3.xsd",
561 "javaee_web_services_client_1_3.xsd"
562 ),
563
564 new KeyValuePair(
565 "http:
566 "jsp_2_0.xsd"
567 ),
568
569 new KeyValuePair(
570 "http:
571 "jsp_2_1.xsd"
572 ),
573
574 new KeyValuePair(
575 "http:
576 "jsp_2_2.xsd"
577 ),
578
579 new KeyValuePair(
580 "http:
581 "portlet-app_1_0.xsd"
582 ),
583
584 new KeyValuePair(
585 "http:
586 "portlet-app_2_0.xsd"
587 ),
588
589 new KeyValuePair(
590 "http:
591 "web-app_2_4.xsd"
592 ),
593
594 new KeyValuePair(
595 "http:
596 "web-app_2_5.xsd"
597 ),
598
599 new KeyValuePair(
600 "http:
601 "web-app_3_0.xsd"
602 ),
603
604 new KeyValuePair(
605 "http:
606 "web-common_3_0.xsd"
607 ),
608
609 new KeyValuePair(
610 "http:
611 "web-facesconfig_1_2.xsd"
612 ),
613
614 new KeyValuePair(
615 "http:
616 "web-facesconfig_2_0.xsd"
617 ),
618
619 new KeyValuePair(
620 "http:
621 "web-facesconfig_2_1.xsd"
622 ),
623
624 new KeyValuePair(
625 "http:
626 "xml.xsd"
627 )
628 };
629
630 private static Log _log = LogFactoryUtil.getLog(EntityResolver.class);
631
632 }