1 package net.sourceforge.pmd.sourcetypehandlers;
2
3 import java.util.Map;
4
5 import net.sourceforge.pmd.SourceType;
6 import net.sourceforge.pmd.util.CollectionUtil;
7
8 /**
9 * Broker for SourceTypeHandler instances for specific SourceTypes.
10 *
11 * @author pieter_van_raemdonck - Application Engineers NV/SA - www.ae.be
12 */
13 public class SourceTypeHandlerBroker {
14
15 private static final Map<SourceType, SourceTypeHandler> mapSourceTypeOnSourceTypeHandler = CollectionUtil
16 .mapFrom(new SourceType[] { SourceType.JAVA_13, SourceType.JAVA_14,
17 SourceType.JAVA_15, SourceType.JAVA_16, SourceType.JAVA_17, SourceType.JSP, },
18
19 new SourceTypeHandler[] { new Java13Handler(), new Java14Handler(),
20 new Java15Handler(), new Java16Handler(),
21 new Java17Handler(), new JspTypeHandler(), });
22
23 /**
24 * Never create one
25 */
26 private SourceTypeHandlerBroker() { }
27
28 public static SourceTypeHandler getVisitorsFactoryForSourceType(SourceType sourceType) {
29 SourceTypeHandler handler = mapSourceTypeOnSourceTypeHandler.get(sourceType);
30
31 if (handler == null) {
32 throw new IllegalArgumentException("No VisitorsFactory is registered for SourceType [" + sourceType + "].");
33 }
34 return handler;
35 }
36
37 }