From 3cecfaf38b7f6a2cd6360716525f0aec03e73bce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Thu, 21 Jul 2022 02:10:21 +0200 Subject: [PATCH] convert most lang mods to new base class --- .../pmd/lang/apex/ApexLanguageModule.java | 11 +- .../pmd/lang/apex/LanguageVersionTest.java | 4 +- .../net/sourceforge/pmd/lang/Language.java | 17 ++- .../pmd/lang/PlainTextLanguage.java | 13 +- .../pmd/lang/impl/LanguageModuleBase.java | 136 ++++++++++++++++++ .../lang/impl/SimpleLanguageModuleBase.java | 45 ++++++ .../pmd/lang/html/HtmlLanguageModule.java | 18 +-- .../ecmascript/EcmascriptLanguageModule.java | 11 +- .../lang/ecmascript/ast/EcmascriptParser.java | 13 +- .../internal/EcmascriptProcessor.java | 35 ----- .../pmd/lang/jsp/JspLanguageModule.java | 16 +-- .../pmd/lang/kotlin/KotlinLanguageModule.java | 7 +- .../lang/modelica/ModelicaLanguageModule.java | 16 +-- .../pmd/lang/plsql/PLSQLLanguageModule.java | 37 +++-- .../pmd/lang/swift/SwiftLanguageModule.java | 16 +-- .../pmd/lang/vf/VfLanguageModule.java | 17 +-- .../pmd/lang/vm/VmLanguageModule.java | 14 +- .../pmd/lang/pom/PomLanguageModule.java | 14 +- .../pmd/lang/wsdl/WsdlLanguageModule.java | 15 +- .../pmd/lang/xml/XmlLanguageModule.java | 15 +- .../pmd/lang/xsl/XslLanguageModule.java | 15 +- 21 files changed, 271 insertions(+), 214 deletions(-) create mode 100644 pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/LanguageModuleBase.java create mode 100644 pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/SimpleLanguageModuleBase.java delete mode 100644 pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/internal/EcmascriptProcessor.java diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java index b271003486..1f4132ebd5 100644 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java +++ b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java @@ -4,24 +4,19 @@ package net.sourceforge.pmd.lang.apex; -import static net.sourceforge.pmd.util.CollectionUtil.listOf; - -import net.sourceforge.pmd.lang.BaseLanguageModule; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageProcessor; import net.sourceforge.pmd.lang.LanguagePropertyBundle; import net.sourceforge.pmd.lang.LanguageRegistry; +import net.sourceforge.pmd.lang.impl.LanguageModuleBase; -import apex.jorje.services.Version; - -public class ApexLanguageModule extends BaseLanguageModule { +public class ApexLanguageModule extends LanguageModuleBase { public static final String NAME = "Apex"; public static final String TERSE_NAME = "apex"; public ApexLanguageModule() { - super(NAME, null, TERSE_NAME, listOf("cls", "trigger")); - addDefaultVersion(String.valueOf((int) Version.CURRENT.getExternal()), null); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("cls", "trigger")); } @Override diff --git a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/LanguageVersionTest.java b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/LanguageVersionTest.java index cad18b9163..7f24d1c4e9 100644 --- a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/LanguageVersionTest.java +++ b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/LanguageVersionTest.java @@ -20,7 +20,7 @@ public class LanguageVersionTest extends AbstractLanguageVersionTest { @Parameters public static Collection data() { - return Arrays.asList(new Object[][] { { ApexLanguageModule.NAME, ApexLanguageModule.TERSE_NAME, "35", - getLanguage("Apex").getVersion("35"), }, }); + return Arrays.asList(new Object[][] { { ApexLanguageModule.NAME, ApexLanguageModule.TERSE_NAME, "", + getLanguage("Apex").getVersion(""), }, }); } } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/Language.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/Language.java index 99556d9e6a..67a12e9d41 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/Language.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/Language.java @@ -92,7 +92,9 @@ public interface Language extends Comparable { * @return true if this language handles the extension, * false otherwise. */ - boolean hasExtension(String extensionWithoutDot); + default boolean hasExtension(String extensionWithoutDot) { + return getExtensions().contains(extensionWithoutDot); + } /** * Returns an ordered list of supported versions for this language. @@ -109,7 +111,9 @@ public interface Language extends Comparable { * * @return True if the version string is known */ - boolean hasVersion(String version); + default boolean hasVersion(String version) { + return getVersion(version) != null; + } /** * Returns the language version with the given {@linkplain LanguageVersion#getVersion() version string}. @@ -120,7 +124,14 @@ public interface Language extends Comparable { * @return The corresponding LanguageVersion, {@code null} if the * version string is not recognized. */ - LanguageVersion getVersion(String version); + default LanguageVersion getVersion(String version) { + for (LanguageVersion v : getVersions()) { + if (v.getVersion().equals(version)) { + return v; + } + } + return null; + } /** * Returns the default language version for this language. diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/PlainTextLanguage.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/PlainTextLanguage.java index e1f8958d30..29afc7d45d 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/PlainTextLanguage.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/PlainTextLanguage.java @@ -11,7 +11,7 @@ import net.sourceforge.pmd.lang.ast.Parser.ParserTask; import net.sourceforge.pmd.lang.ast.RootNode; import net.sourceforge.pmd.lang.ast.impl.AbstractNode; import net.sourceforge.pmd.lang.document.TextRegion; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** * A dummy language implementation whose parser produces a single node. @@ -24,20 +24,15 @@ import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; * @since 6.48.0 */ @Experimental -public final class PlainTextLanguage extends BaseLanguageModule { +public final class PlainTextLanguage extends SimpleLanguageModuleBase { private static final Language INSTANCE = new PlainTextLanguage(); static final String TERSE_NAME = "text"; private PlainTextLanguage() { - super("Plain text", "Plain text", TERSE_NAME, "plain-text-file-goo-extension"); - addVersion("", new TextLvh(), true); - } - - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new TextLvh()); + super(LanguageMetadata.withId(TERSE_NAME).name("Plain text").extensions("plain-text-file-goo-extension"), + new TextLvh()); } /** diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/LanguageModuleBase.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/LanguageModuleBase.java new file mode 100644 index 0000000000..de044c1e38 --- /dev/null +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/LanguageModuleBase.java @@ -0,0 +1,136 @@ +/* + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd.lang.impl; + +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +import org.checkerframework.checker.nullness.qual.NonNull; + +import net.sourceforge.pmd.lang.Language; +import net.sourceforge.pmd.lang.LanguageVersion; + +/** + * The simplest implementation of a language with only a few versions, + * and a single handler for all of them. + * + * @author Clément Fournier + */ +public abstract class LanguageModuleBase implements Language { + + private final LanguageMetadata meta; + private final List distinctVersions; + private final LanguageVersion defaultVersion; + + protected LanguageModuleBase(LanguageMetadata metadata) { + this.meta = metadata; + this.defaultVersion = new LanguageVersion(this, "", null); + this.distinctVersions = listOf(defaultVersion); + } + + @Override + public String getName() { + return meta.name; + } + + @Override + public String getShortName() { + return meta.getShortName(); + } + + @Override + public String getTerseName() { + return meta.id; + } + + @Override + public @NonNull List getExtensions() { + return Collections.unmodifiableList(meta.extensions); + } + + @Override + public List getVersions() { + return distinctVersions; + } + + @Override + public LanguageVersion getDefaultVersion() { + return defaultVersion; + } + + @Override + public String toString() { + return getTerseName(); + } + + @Override + public int compareTo(Language o) { + return getName().compareTo(o.getName()); + } + + @Override + public int hashCode() { + return Objects.hash(getId()); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + LanguageModuleBase other = (LanguageModuleBase) obj; + return Objects.equals(getId(), other.getId()); + } + + protected static final class LanguageMetadata { + private String name; + private String shortName; + private final String id; + private List extensions; + + public LanguageMetadata(String id) { + this.id = id; + } + + void validate() { + Objects.requireNonNull(name); + Objects.requireNonNull(id); + Objects.requireNonNull(extensions); + } + + String getShortName() { + return shortName == null ? name : shortName; + } + + public static LanguageMetadata withId(String id) { + return new LanguageMetadata(id); + } + + public LanguageMetadata name(String name) { + this.name = name; + return this; + } + + public LanguageMetadata shortName(String shortName) { + this.shortName = shortName; + return this; + } + + public LanguageMetadata extensions(String e1, String... others) { + this.extensions = listOf(e1,others); + return this; + } + + } +} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/SimpleLanguageModuleBase.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/SimpleLanguageModuleBase.java new file mode 100644 index 0000000000..aa8af94bde --- /dev/null +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/SimpleLanguageModuleBase.java @@ -0,0 +1,45 @@ +/* + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd.lang.impl; + +import java.util.function.Function; + +import net.sourceforge.pmd.lang.LanguageProcessor; +import net.sourceforge.pmd.lang.LanguagePropertyBundle; +import net.sourceforge.pmd.lang.LanguageVersionHandler; +import net.sourceforge.pmd.processor.BatchLanguageProcessor; + +/** + * The simplest implementation of a language with only a few versions, + * and a single handler for all of them. + * + * @author Clément Fournier + */ +public abstract class SimpleLanguageModuleBase extends LanguageModuleBase { + + private final Function handler; + + public SimpleLanguageModuleBase(LanguageMetadata metadata, LanguageVersionHandler handler) { + super(metadata); + this.handler = props -> handler; + } + + public SimpleLanguageModuleBase(LanguageMetadata metadata, Function makeHandler) { + super(metadata); + this.handler = makeHandler; + } + + @Override + public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { + LanguageVersionHandler services = handler.apply(bundle); + return new BatchLanguageProcessor(bundle) { + @Override + public LanguageVersionHandler services() { + return services; + } + }; + } + +} diff --git a/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlLanguageModule.java b/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlLanguageModule.java index 15f17acf52..0c3addea75 100644 --- a/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlLanguageModule.java +++ b/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlLanguageModule.java @@ -5,24 +5,16 @@ package net.sourceforge.pmd.lang.html; -import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.LanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; -public final class HtmlLanguageModule extends BaseLanguageModule { +public final class HtmlLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "HTML"; public static final String TERSE_NAME = "html"; public HtmlLanguageModule() { - super(NAME, null, TERSE_NAME, "html", "htm", "xhtml", "xht", "shtml"); - addDefaultVersion("", new HtmlHandler()); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME) + .extensions("html", "htm", "xhtml", "xht", "shtml"), + new HtmlHandler()); } - - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new HtmlHandler()); - } - } diff --git a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java index 3a5a7423d7..ecdae5cfcc 100644 --- a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java +++ b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java @@ -4,23 +4,22 @@ package net.sourceforge.pmd.lang.ecmascript; -import net.sourceforge.pmd.lang.BaseLanguageModule; import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.ecmascript.internal.EcmascriptProcessor; +import net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParser; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** * Created by christoferdutz on 20.09.14. */ -public class EcmascriptLanguageModule extends BaseLanguageModule { +public class EcmascriptLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "Ecmascript"; public static final String TERSE_NAME = "ecmascript"; public EcmascriptLanguageModule() { - super(NAME, null, TERSE_NAME, "js"); - addDefaultVersion("ES6", new EcmascriptProcessor(new LanguagePropertyBundle(this))); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("js"), + properties -> () -> new EcmascriptParser(properties)); } public static Language getInstance() { diff --git a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/ast/EcmascriptParser.java b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/ast/EcmascriptParser.java index e06ae2344a..6fc076c637 100644 --- a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/ast/EcmascriptParser.java +++ b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/ast/EcmascriptParser.java @@ -10,30 +10,31 @@ import java.util.List; import java.util.Map; import org.mozilla.javascript.CompilerEnvirons; +import org.mozilla.javascript.Context; import org.mozilla.javascript.Parser; import org.mozilla.javascript.ast.AstRoot; import org.mozilla.javascript.ast.Comment; import org.mozilla.javascript.ast.ErrorCollector; import org.mozilla.javascript.ast.ParseProblem; +import net.sourceforge.pmd.lang.LanguagePropertyBundle; import net.sourceforge.pmd.lang.ast.AstInfo; import net.sourceforge.pmd.lang.ast.FileAnalysisException; import net.sourceforge.pmd.lang.ast.ParseException; import net.sourceforge.pmd.lang.ast.RootNode; -import net.sourceforge.pmd.lang.ecmascript.internal.EcmascriptProcessor; public final class EcmascriptParser implements net.sourceforge.pmd.lang.ast.Parser { - private final EcmascriptProcessor processor; + private final LanguagePropertyBundle properties; - public EcmascriptParser(EcmascriptProcessor processor) { - this.processor = processor; + public EcmascriptParser(LanguagePropertyBundle properties) { + this.properties = properties; } private AstRoot parseEcmascript(final String sourceCode, final List parseProblems) throws ParseException { final CompilerEnvirons compilerEnvirons = new CompilerEnvirons(); compilerEnvirons.setRecordingComments(true); compilerEnvirons.setRecordingLocalJsDocComments(true); - compilerEnvirons.setLanguageVersion(processor.getRhinoVersion()); + compilerEnvirons.setLanguageVersion(Context.VERSION_ES6); // Scope's don't appear to get set right without this compilerEnvirons.setIdeMode(true); compilerEnvirons.setWarnTrailingComma(true); @@ -58,7 +59,7 @@ public final class EcmascriptParser implements net.sourceforge.pmd.lang.ast.Pars final EcmascriptTreeBuilder treeBuilder = new EcmascriptTreeBuilder(parseProblems); ASTAstRoot tree = (ASTAstRoot) treeBuilder.build(astRoot); - String suppressMarker = processor.getProperties().getSuppressMarker(); + String suppressMarker = properties.getSuppressMarker(); Map suppressMap = new HashMap<>(); if (astRoot.getComments() != null) { for (Comment comment : astRoot.getComments()) { diff --git a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/internal/EcmascriptProcessor.java b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/internal/EcmascriptProcessor.java deleted file mode 100644 index 3173fe4e51..0000000000 --- a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/internal/EcmascriptProcessor.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.ecmascript.internal; - -import org.mozilla.javascript.Context; - -import net.sourceforge.pmd.processor.BatchLanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; -import net.sourceforge.pmd.lang.LanguageVersionHandler; -import net.sourceforge.pmd.lang.ast.Parser; -import net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParser; - -public class EcmascriptProcessor extends BatchLanguageProcessor - implements LanguageVersionHandler { - - public EcmascriptProcessor(LanguagePropertyBundle properties) { - super(properties); - } - - public int getRhinoVersion() { - return Context.VERSION_ES6; - } - - @Override - public Parser getParser() { - return new EcmascriptParser(this); - } - - @Override - public LanguageVersionHandler services() { - return this; - } -} diff --git a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java index 2fce17da5f..573a42b94c 100644 --- a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java +++ b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java @@ -4,26 +4,20 @@ package net.sourceforge.pmd.lang.jsp; -import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.LanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** * Created by christoferdutz on 20.09.14. */ -public class JspLanguageModule extends BaseLanguageModule { +public class JspLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "Java Server Pages"; public static final String TERSE_NAME = "jsp"; public JspLanguageModule() { - super(NAME, "JSP", TERSE_NAME, "jsp", "jspx", "jspf", "tag"); - addVersion("", new JspHandler(), true); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).shortName("JSP") + .extensions("jsp", "jspx", "jspf", "tag"), + new JspHandler()); } - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new JspHandler()); - } } diff --git a/pmd-kotlin/src/main/java/net/sourceforge/pmd/lang/kotlin/KotlinLanguageModule.java b/pmd-kotlin/src/main/java/net/sourceforge/pmd/lang/kotlin/KotlinLanguageModule.java index 6f67a40ae2..5445394640 100644 --- a/pmd-kotlin/src/main/java/net/sourceforge/pmd/lang/kotlin/KotlinLanguageModule.java +++ b/pmd-kotlin/src/main/java/net/sourceforge/pmd/lang/kotlin/KotlinLanguageModule.java @@ -5,7 +5,7 @@ package net.sourceforge.pmd.lang.kotlin; import net.sourceforge.pmd.annotation.Experimental; -import net.sourceforge.pmd.lang.BaseLanguageModule; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** * Language Module for Kotlin @@ -13,7 +13,7 @@ import net.sourceforge.pmd.lang.BaseLanguageModule; *

Note: Kotlin support is considered an experimental feature. The AST structure might change.

*/ @Experimental -public class KotlinLanguageModule extends BaseLanguageModule { +public class KotlinLanguageModule extends SimpleLanguageModuleBase { /** The name. */ public static final String NAME = "Kotlin"; @@ -24,7 +24,6 @@ public class KotlinLanguageModule extends BaseLanguageModule { * Create a new instance of Kotlin Language Module. */ public KotlinLanguageModule() { - super(NAME, null, TERSE_NAME, "kt", "ktm"); - addDefaultVersion("1.6-rfc+0.1", new KotlinHandler(), "1.6"); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("kt", "ktm"), new KotlinHandler()); } } diff --git a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaLanguageModule.java b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaLanguageModule.java index 32f40d01d5..2746c21363 100644 --- a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaLanguageModule.java +++ b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaLanguageModule.java @@ -4,23 +4,15 @@ package net.sourceforge.pmd.lang.modelica; -import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.LanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; -public class ModelicaLanguageModule extends BaseLanguageModule { +public class ModelicaLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "Modelica"; public static final String TERSE_NAME = "modelica"; public ModelicaLanguageModule() { - super(NAME, null, TERSE_NAME, "mo"); - addVersion("", new ModelicaHandler(), true); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("mo"), + new ModelicaHandler()); } - - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new ModelicaHandler()); - } } diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java index c8378ed5cc..0b74d631c2 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java @@ -4,36 +4,31 @@ package net.sourceforge.pmd.lang.plsql; -import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.LanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** * Created by christoferdutz on 20.09.14. */ -public class PLSQLLanguageModule extends BaseLanguageModule { +public class PLSQLLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "PLSQL"; public static final String TERSE_NAME = "plsql"; public PLSQLLanguageModule() { - super(NAME, null, TERSE_NAME, - "sql", - "trg", // Triggers - "prc", "fnc", // Standalone Procedures and Functions - "pld", // Oracle*Forms - "pls", "plh", "plb", // Packages - "pck", "pks", "pkh", "pkb", // Packages - "typ", "tyb", // Object Types - "tps", "tpb" // Object Types + super( + LanguageMetadata.withId(TERSE_NAME) + .name(NAME) + .extensions( + "sql", + "trg", // Triggers + "prc", "fnc", // Standalone Procedures and Functions + "pld", // Oracle*Forms + "pls", "plh", "plb", // Packages + "pck", "pks", "pkh", "pkb", // Packages + "typ", "tyb", // Object Types + "tps", "tpb" // Object Types + ), + new PLSQLHandler() ); - addVersion("", new PLSQLHandler(), true); - } - - - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new PLSQLHandler()); } } diff --git a/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java b/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java index 2f18aa745e..1b05e94b4b 100644 --- a/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java +++ b/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java @@ -4,15 +4,12 @@ package net.sourceforge.pmd.lang.swift; -import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.LanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** * Language Module for Swift */ -public class SwiftLanguageModule extends BaseLanguageModule { +public class SwiftLanguageModule extends SimpleLanguageModuleBase { /** The name. */ public static final String NAME = "Swift"; @@ -23,13 +20,6 @@ public class SwiftLanguageModule extends BaseLanguageModule { * Create a new instance of Swift Language Module. */ public SwiftLanguageModule() { - super(NAME, null, TERSE_NAME, "swift"); - addDefaultVersion("", new SwiftHandler()); - } - - - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new SwiftHandler()); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("swift"), new SwiftHandler()); } } diff --git a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java index 696799dc6f..e27980e403 100644 --- a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java +++ b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java @@ -4,31 +4,22 @@ package net.sourceforge.pmd.lang.vf; -import net.sourceforge.pmd.lang.BaseLanguageModule; import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.LanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** * @author sergey.gorbaty - * */ -public class VfLanguageModule extends BaseLanguageModule { +public class VfLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "Salesforce VisualForce"; public static final String TERSE_NAME = "vf"; public VfLanguageModule() { - super(NAME, "VisualForce", TERSE_NAME, "page", "component"); - addVersion("", new VfHandler(new VfLanguageProperties()), true); - } - - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new VfHandler((VfLanguageProperties) bundle)); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("page", "component"), + p -> new VfHandler((VfLanguageProperties) p)); } public static Language getInstance() { diff --git a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmLanguageModule.java b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmLanguageModule.java index 07b8108c71..553fb8a4e8 100644 --- a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmLanguageModule.java +++ b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmLanguageModule.java @@ -4,26 +4,18 @@ package net.sourceforge.pmd.lang.vm; -import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.LanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** * Created by christoferdutz on 20.09.14. */ -public class VmLanguageModule extends BaseLanguageModule { +public class VmLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "VM"; public static final String TERSE_NAME = "vm"; public VmLanguageModule() { - super(NAME, null, TERSE_NAME, "vm"); - addVersion("", new VmHandler(), true); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("vm"), new VmHandler()); } - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new VmHandler()); - } } diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/pom/PomLanguageModule.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/pom/PomLanguageModule.java index 7e52a29a30..7de4d4da0b 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/pom/PomLanguageModule.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/pom/PomLanguageModule.java @@ -4,23 +4,15 @@ package net.sourceforge.pmd.lang.pom; -import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.LanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; import net.sourceforge.pmd.lang.xml.XmlHandler; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; -public class PomLanguageModule extends BaseLanguageModule { +public class PomLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "Maven POM"; public static final String TERSE_NAME = "pom"; public PomLanguageModule() { - super(NAME, null, TERSE_NAME, "pom"); - addVersion("", new XmlHandler(), true); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("pom"), new XmlHandler()); } - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new XmlHandler()); - } } diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/wsdl/WsdlLanguageModule.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/wsdl/WsdlLanguageModule.java index f3490a7a56..ed9512d1cb 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/wsdl/WsdlLanguageModule.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/wsdl/WsdlLanguageModule.java @@ -4,27 +4,18 @@ package net.sourceforge.pmd.lang.wsdl; -import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.LanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; import net.sourceforge.pmd.lang.xml.XmlHandler; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; /** * Created by bernardo-macedo on 24.06.15. */ -public class WsdlLanguageModule extends BaseLanguageModule { +public class WsdlLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "WSDL"; public static final String TERSE_NAME = "wsdl"; public WsdlLanguageModule() { - super(NAME, null, TERSE_NAME, "wsdl"); - addVersion("", new XmlHandler(), true); - } - - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new XmlHandler()); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("wsdl"), new XmlHandler()); } } diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java index ddcaab741b..5df4a35b06 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java @@ -4,26 +4,17 @@ package net.sourceforge.pmd.lang.xml; -import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.LanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** * Created by christoferdutz on 20.09.14. */ -public class XmlLanguageModule extends BaseLanguageModule { +public class XmlLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "XML"; public static final String TERSE_NAME = "xml"; public XmlLanguageModule() { - super(NAME, null, TERSE_NAME, "xml"); - addVersion("", new XmlHandler(), true); - } - - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new XmlHandler()); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("xml"), new XmlHandler()); } } diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xsl/XslLanguageModule.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xsl/XslLanguageModule.java index 802a6f5a31..c51c48096a 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xsl/XslLanguageModule.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xsl/XslLanguageModule.java @@ -4,28 +4,19 @@ package net.sourceforge.pmd.lang.xsl; -import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.LanguageProcessor; -import net.sourceforge.pmd.lang.LanguagePropertyBundle; +import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; import net.sourceforge.pmd.lang.xml.XmlHandler; -import net.sourceforge.pmd.processor.SimpleBatchLanguageProcessor; /** * Created by christoferdutz on 20.09.14. */ -public class XslLanguageModule extends BaseLanguageModule { +public class XslLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "XSL"; public static final String TERSE_NAME = "xsl"; public XslLanguageModule() { - super(NAME, null, TERSE_NAME, "xsl", "xslt"); - addVersion("", new XmlHandler(), true); + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("xsl", "xslt"), new XmlHandler()); } - - @Override - public LanguageProcessor createProcessor(LanguagePropertyBundle bundle) { - return new SimpleBatchLanguageProcessor(bundle, new XmlHandler()); - } }