Refactor LanguageMetdata::extensions usages

This commit is contained in:
Andreas Dangel
2023-02-10 12:39:21 +01:00
parent 8aaef01ed8
commit a283615299
11 changed files with 36 additions and 13 deletions

View File

@ -8,6 +8,7 @@ import static net.sourceforge.pmd.util.CollectionUtil.setOf;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
@ -269,7 +270,7 @@ public abstract class LanguageModuleBase implements Language {
/** /**
* Record the {@linkplain Language#getExtensions() extensions} * Record the {@linkplain Language#getExtensions() extensions}
* assigned to the language. Parameters should not start with a period * assigned to the language. Extensions should not start with a period
* {@code .}. * {@code .}.
* *
* @param e1 First extensions * @param e1 First extensions
@ -283,6 +284,25 @@ public abstract class LanguageModuleBase implements Language {
return this; return this;
} }
/**
* Record the {@linkplain Language#getExtensions() extensions}
* assigned to the language. Extensions should not start with a period
* {@code .}. At least one extension must be provided.
*
* @param extensions the extensions
*
* @throws NullPointerException If any extension is null
* @throws IllegalArgumentException If no extensions are provided
*/
public LanguageMetadata extensions(Collection<String> extensions) {
this.extensions = new ArrayList<>(new HashSet<>(extensions));
AssertionUtil.requireContainsNoNullValue("extensions", this.extensions);
if (this.extensions.isEmpty()) {
throw new IllegalArgumentException("At least one extension is required.");
}
return this;
}
/** /**
* Add a new version by its name. * Add a new version by its name.
* *

View File

@ -21,7 +21,7 @@ public final class HtmlLanguageModule extends SimpleLanguageModuleBase {
public HtmlLanguageModule() { public HtmlLanguageModule() {
super(LanguageMetadata.withId(TERSE_NAME).name(NAME) super(LanguageMetadata.withId(TERSE_NAME).name(NAME)
.extensions(EXTENSIONS.get(0), EXTENSIONS.subList(0, EXTENSIONS.size()).toArray(new String[0])) .extensions(EXTENSIONS)
.addVersion("4") .addVersion("4")
.addDefaultVersion("5"), .addDefaultVersion("5"),
new HtmlHandler()); new HtmlHandler());

View File

@ -25,7 +25,7 @@ public class EcmascriptLanguageModule extends SimpleLanguageModuleBase {
public static final List<String> EXTENSIONS = listOf("js"); public static final List<String> EXTENSIONS = listOf("js");
public EcmascriptLanguageModule() { public EcmascriptLanguageModule() {
super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions(EXTENSIONS.get(0)) super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions(EXTENSIONS)
.addVersion("3") .addVersion("3")
.addVersion("5") .addVersion("5")
.addVersion("6", "ES6", "ES2015") .addVersion("6", "ES6", "ES2015")

View File

@ -23,7 +23,7 @@ public class JspLanguageModule extends SimpleLanguageModuleBase {
public JspLanguageModule() { public JspLanguageModule() {
super(LanguageMetadata.withId(TERSE_NAME).name(NAME).shortName("JSP") super(LanguageMetadata.withId(TERSE_NAME).name(NAME).shortName("JSP")
.extensions(EXTENSIONS.get(0), EXTENSIONS.toArray(new String[0])) .extensions(EXTENSIONS)
.addVersion("2") .addVersion("2")
.addDefaultVersion("3"), .addDefaultVersion("3"),
new JspHandler()); new JspHandler());

View File

@ -32,7 +32,8 @@ public class KotlinLanguageModule extends SimpleLanguageModuleBase {
* Create a new instance of Kotlin Language Module. * Create a new instance of Kotlin Language Module.
*/ */
public KotlinLanguageModule() { public KotlinLanguageModule() {
super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions(EXTENSIONS.get(0), EXTENSIONS.toArray(new String[0])) super(LanguageMetadata.withId(TERSE_NAME).name(NAME)
.extensions(EXTENSIONS)
.addVersion("1.6") .addVersion("1.6")
.addDefaultVersion("1.7"), .addDefaultVersion("1.7"),
new KotlinHandler()); new KotlinHandler());

View File

@ -19,7 +19,7 @@ public class ModelicaLanguageModule extends SimpleLanguageModuleBase {
public ModelicaLanguageModule() { public ModelicaLanguageModule() {
super(LanguageMetadata.withId(TERSE_NAME).name(NAME) super(LanguageMetadata.withId(TERSE_NAME).name(NAME)
.extensions(EXTENSIONS.get(0)) .extensions(EXTENSIONS)
.addVersion("3.4") .addVersion("3.4")
.addDefaultVersion("3.5"), .addDefaultVersion("3.5"),
new ModelicaHandler()); new ModelicaHandler());

View File

@ -34,7 +34,7 @@ public class PLSQLLanguageModule extends SimpleLanguageModuleBase {
super( super(
LanguageMetadata.withId(TERSE_NAME) LanguageMetadata.withId(TERSE_NAME)
.name(NAME) .name(NAME)
.extensions(EXTENSIONS.get(0), EXTENSIONS.toArray(new String[0])) .extensions(EXTENSIONS)
.addVersion("11g") .addVersion("11g")
.addVersion("12c_Release_1", "12.1") .addVersion("12c_Release_1", "12.1")
.addVersion("12c_Release_2", "12.2") .addVersion("12c_Release_2", "12.2")

View File

@ -35,7 +35,8 @@ public class ScalaLanguageModule extends SimpleLanguageModuleBase {
* Create a new instance of Scala Language Module. * Create a new instance of Scala Language Module.
*/ */
public ScalaLanguageModule() { public ScalaLanguageModule() {
super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions(EXTENSIONS.get(0)) super(LanguageMetadata.withId(TERSE_NAME).name(NAME)
.extensions(EXTENSIONS)
.addVersion("2.10") .addVersion("2.10")
.addVersion("2.11") .addVersion("2.11")
.addVersion("2.12") .addVersion("2.12")

View File

@ -29,7 +29,7 @@ public class SwiftLanguageModule extends SimpleLanguageModuleBase {
*/ */
public SwiftLanguageModule() { public SwiftLanguageModule() {
super(LanguageMetadata.withId(TERSE_NAME).name(NAME) super(LanguageMetadata.withId(TERSE_NAME).name(NAME)
.extensions(EXTENSIONS.get(0)) .extensions(EXTENSIONS)
.addVersion("4.2") .addVersion("4.2")
.addVersion("5.0") .addVersion("5.0")
.addVersion("5.1") .addVersion("5.1")

View File

@ -31,9 +31,10 @@ public class VfLanguageModule extends SimpleLanguageModuleBase {
} }
private static LanguageMetadata createMetdata() { private static LanguageMetadata createMetdata() {
LanguageMetadata languageMetadata = LanguageMetadata.withId(TERSE_NAME).name(NAME) LanguageMetadata languageMetadata =
.extensions(EXTENSIONS.get(0), EXTENSIONS.toArray(new String[0])) LanguageMetadata.withId(TERSE_NAME).name(NAME)
.dependsOnLanguage(ApexLanguageModule.TERSE_NAME); .extensions(EXTENSIONS)
.dependsOnLanguage(ApexLanguageModule.TERSE_NAME);
// use the same versions as in Apex // use the same versions as in Apex
int lastVersion = ApexLanguageModule.VERSIONS.size() - 1; int lastVersion = ApexLanguageModule.VERSIONS.size() - 1;
ApexLanguageModule.VERSIONS.subList(0, lastVersion).forEach(languageMetadata::addVersion); ApexLanguageModule.VERSIONS.subList(0, lastVersion).forEach(languageMetadata::addVersion);

View File

@ -23,7 +23,7 @@ public class XmlLanguageModule extends SimpleLanguageModuleBase {
public XmlLanguageModule() { public XmlLanguageModule() {
super(LanguageMetadata.withId(TERSE_NAME).name(NAME) super(LanguageMetadata.withId(TERSE_NAME).name(NAME)
.extensions(EXTENSIONS.get(0)) .extensions(EXTENSIONS)
.addVersion("1.0") .addVersion("1.0")
.addDefaultVersion("1.1"), .addDefaultVersion("1.1"),
new XmlHandler()); new XmlHandler());