mirror of https://github.com/apache/maven.git
[MNG-7686] Speed up by replacing non-pattern #replaceAll() with #replace() or precompiled patterns
This closes #984
This commit is contained in:
parent
ef3cf56b51
commit
6e25a2674b
|
@ -68,7 +68,7 @@ public class JdkPrefixProfileActivator extends DetectedProfileActivator {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String convertJdkToMavenVersion(String jdk) {
|
private String convertJdkToMavenVersion(String jdk) {
|
||||||
return jdk.replaceAll("_", "-");
|
return jdk.replace("_", "-");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getJdkVersion() {
|
protected String getJdkVersion() {
|
||||||
|
|
|
@ -22,7 +22,6 @@ import javax.inject.Inject;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.net.URI;
|
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -81,7 +80,8 @@ public abstract class AbstractMavenProjectTestCase {
|
||||||
return markerFile.getAbsoluteFile().getParentFile();
|
return markerFile.getAbsoluteFile().getParentFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static File getFileForClasspathResource(String resource) throws FileNotFoundException {
|
protected static File getFileForClasspathResource(String resource)
|
||||||
|
throws FileNotFoundException, URISyntaxException {
|
||||||
ClassLoader cloader = Thread.currentThread().getContextClassLoader();
|
ClassLoader cloader = Thread.currentThread().getContextClassLoader();
|
||||||
|
|
||||||
URL resourceUrl = cloader.getResource(resource);
|
URL resourceUrl = cloader.getResource(resource);
|
||||||
|
@ -90,7 +90,7 @@ public abstract class AbstractMavenProjectTestCase {
|
||||||
throw new FileNotFoundException("Unable to find: " + resource);
|
throw new FileNotFoundException("Unable to find: " + resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new File(URI.create(resourceUrl.toString().replaceAll(" ", "%20")));
|
return new File(resourceUrl.toURI());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ArtifactRepository getLocalRepository() throws Exception {
|
protected ArtifactRepository getLocalRepository() throws Exception {
|
||||||
|
|
|
@ -22,6 +22,7 @@ import javax.inject.Named;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
@ -59,8 +60,8 @@ public class ClasspathArtifactResolver implements ArtifactResolver {
|
||||||
artifact = artifact.setFile(ProjectClasspathTest.getFileForClasspathResource(
|
artifact = artifact.setFile(ProjectClasspathTest.getFileForClasspathResource(
|
||||||
ProjectClasspathTest.dir + "transitive-" + scope + "-dep.xml"));
|
ProjectClasspathTest.dir + "transitive-" + scope + "-dep.xml"));
|
||||||
result.setArtifact(artifact);
|
result.setArtifact(artifact);
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException | URISyntaxException e) {
|
||||||
throw new IllegalStateException("Missing test POM for " + artifact);
|
throw new IllegalStateException("Missing test POM for " + artifact, e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
result.addException(new ArtifactNotFoundException(artifact, null));
|
result.addException(new ArtifactNotFoundException(artifact, null));
|
||||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.maven.internal;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper class to format multiline messages to the console
|
* Helper class to format multiline messages to the console
|
||||||
|
@ -29,6 +30,8 @@ public class MultilineMessageHelper {
|
||||||
private static final int DEFAULT_MAX_SIZE = 65;
|
private static final int DEFAULT_MAX_SIZE = 65;
|
||||||
private static final char BOX_CHAR = '*';
|
private static final char BOX_CHAR = '*';
|
||||||
|
|
||||||
|
private static final Pattern S_FILTER = Pattern.compile("\\s+");
|
||||||
|
|
||||||
public static String separatorLine() {
|
public static String separatorLine() {
|
||||||
StringBuilder sb = new StringBuilder(DEFAULT_MAX_SIZE);
|
StringBuilder sb = new StringBuilder(DEFAULT_MAX_SIZE);
|
||||||
repeat(sb, '*', DEFAULT_MAX_SIZE);
|
repeat(sb, '*', DEFAULT_MAX_SIZE);
|
||||||
|
@ -47,7 +50,7 @@ public class MultilineMessageHelper {
|
||||||
// lines
|
// lines
|
||||||
for (String line : lines) {
|
for (String line : lines) {
|
||||||
sb.setLength(0);
|
sb.setLength(0);
|
||||||
String[] words = line.split("\\s+");
|
String[] words = S_FILTER.split(line);
|
||||||
for (String word : words) {
|
for (String word : words) {
|
||||||
if (sb.length() >= remainder - word.length() - (sb.length() > 0 ? 1 : 0)) {
|
if (sb.length() >= remainder - word.length() - (sb.length() > 0 ? 1 : 0)) {
|
||||||
repeat(sb, ' ', remainder - sb.length());
|
repeat(sb, ' ', remainder - sb.length());
|
||||||
|
|
|
@ -160,11 +160,7 @@ public class PluginParameterExpressionEvaluator implements TypeAwareExpressionEv
|
||||||
}
|
}
|
||||||
|
|
||||||
// Was not an expression
|
// Was not an expression
|
||||||
if (expression.contains("$$")) {
|
return expression.replace("$$", "$");
|
||||||
return expression.replaceAll("\\$\\$", "\\$");
|
|
||||||
} else {
|
|
||||||
return expression;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
|
MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
|
||||||
|
|
|
@ -163,11 +163,7 @@ public class PluginParameterExpressionEvaluatorV4 implements TypeAwareExpression
|
||||||
}
|
}
|
||||||
|
|
||||||
// Was not an expression
|
// Was not an expression
|
||||||
if (expression.contains("$$")) {
|
return expression.replace("$$", "$");
|
||||||
return expression.replaceAll("\\$\\$", "\\$");
|
|
||||||
} else {
|
|
||||||
return expression;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("localRepository".equals(expression)) {
|
if ("localRepository".equals(expression)) {
|
||||||
|
|
|
@ -119,11 +119,12 @@ public class DefaultMavenSettingsBuilder extends AbstractLogEnabled implements M
|
||||||
basedir = System.getProperty("user.dir");
|
basedir = System.getProperty("user.dir");
|
||||||
}
|
}
|
||||||
|
|
||||||
basedir = basedir.replaceAll("\\\\", "/");
|
basedir = basedir.replace("\\", "/");
|
||||||
basedir = basedir.replaceAll("\\$", "\\\\\\$");
|
basedir = basedir.replace("$", "\\$");
|
||||||
|
|
||||||
path = pathPattern.replaceAll("\\$\\{" + basedirSysProp + "\\}", basedir);
|
// basedirSysProp is non regexp and basedir too
|
||||||
path = path.replaceAll("\\\\", "/");
|
path = pathPattern.replace("${" + basedirSysProp + "}", basedir);
|
||||||
|
path = path.replace("\\", "/");
|
||||||
// ---------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------
|
||||||
// I'm not sure if this last regexp was really intended to disallow the usage of
|
// I'm not sure if this last regexp was really intended to disallow the usage of
|
||||||
// network paths as user.home directory. Unfortunately it did. I removed it and
|
// network paths as user.home directory. Unfortunately it did. I removed it and
|
||||||
|
|
|
@ -22,7 +22,6 @@ import javax.inject.Inject;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.net.URI;
|
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -79,7 +78,8 @@ public abstract class AbstractMavenProjectTestCase {
|
||||||
return markerFile.getAbsoluteFile().getParentFile();
|
return markerFile.getAbsoluteFile().getParentFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static File getFileForClasspathResource(String resource) throws FileNotFoundException {
|
protected static File getFileForClasspathResource(String resource)
|
||||||
|
throws FileNotFoundException, URISyntaxException {
|
||||||
ClassLoader cloader = Thread.currentThread().getContextClassLoader();
|
ClassLoader cloader = Thread.currentThread().getContextClassLoader();
|
||||||
|
|
||||||
URL resourceUrl = cloader.getResource(resource);
|
URL resourceUrl = cloader.getResource(resource);
|
||||||
|
@ -88,7 +88,7 @@ public abstract class AbstractMavenProjectTestCase {
|
||||||
throw new FileNotFoundException("Unable to find: " + resource);
|
throw new FileNotFoundException("Unable to find: " + resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new File(URI.create(resourceUrl.toString().replaceAll(" ", "%20")));
|
return new File(resourceUrl.toURI());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ArtifactRepository getLocalRepository() throws Exception {
|
protected ArtifactRepository getLocalRepository() throws Exception {
|
||||||
|
|
|
@ -175,6 +175,8 @@ public class MavenCli {
|
||||||
|
|
||||||
private CLIManager cliManager;
|
private CLIManager cliManager;
|
||||||
|
|
||||||
|
private static final Pattern NEXT_LINE = Pattern.compile("\r?\n");
|
||||||
|
|
||||||
public MavenCli() {
|
public MavenCli() {
|
||||||
this(null);
|
this(null);
|
||||||
}
|
}
|
||||||
|
@ -985,7 +987,7 @@ public class MavenCli {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String[] lines = msg.split("(\r\n)|(\r)|(\n)");
|
String[] lines = NEXT_LINE.split(msg);
|
||||||
String currentColor = "";
|
String currentColor = "";
|
||||||
|
|
||||||
for (int i = 0; i < lines.length; i++) {
|
for (int i = 0; i < lines.length; i++) {
|
||||||
|
|
|
@ -24,6 +24,7 @@ import javax.inject.Singleton;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.maven.model.Activation;
|
import org.apache.maven.model.Activation;
|
||||||
import org.apache.maven.model.Profile;
|
import org.apache.maven.model.Profile;
|
||||||
|
@ -43,6 +44,10 @@ import org.apache.maven.model.profile.ProfileActivationContext;
|
||||||
@Singleton
|
@Singleton
|
||||||
public class JdkVersionProfileActivator implements ProfileActivator {
|
public class JdkVersionProfileActivator implements ProfileActivator {
|
||||||
|
|
||||||
|
private static final Pattern FILTER_1 = Pattern.compile("[^0-9._-]");
|
||||||
|
private static final Pattern FILTER_2 = Pattern.compile("[._-]");
|
||||||
|
private static final Pattern FILTER_3 = Pattern.compile("\\."); // used for split now
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isActive(Profile profile, ProfileActivationContext context, ModelProblemCollector problems) {
|
public boolean isActive(Profile profile, ProfileActivationContext context, ModelProblemCollector problems) {
|
||||||
Activation activation = profile.getActivation();
|
Activation activation = profile.getActivation();
|
||||||
|
@ -110,10 +115,10 @@ public class JdkVersionProfileActivator implements ProfileActivator {
|
||||||
return isLeft ? 1 : -1;
|
return isLeft ? 1 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = value.replaceAll("[^0-9\\.\\-\\_]", "");
|
value = FILTER_1.matcher(value).replaceAll("");
|
||||||
|
|
||||||
List<String> valueTokens = new ArrayList<>(Arrays.asList(value.split("[\\.\\-\\_]")));
|
List<String> valueTokens = new ArrayList<>(Arrays.asList(FILTER_2.split(value)));
|
||||||
List<String> rangeValueTokens = new ArrayList<>(Arrays.asList(rangeValue.value.split("\\.")));
|
List<String> rangeValueTokens = new ArrayList<>(Arrays.asList(FILTER_3.split(rangeValue.value)));
|
||||||
|
|
||||||
addZeroTokens(valueTokens, 3);
|
addZeroTokens(valueTokens, 3);
|
||||||
addZeroTokens(rangeValueTokens, 3);
|
addZeroTokens(rangeValueTokens, 3);
|
||||||
|
|
|
@ -25,6 +25,7 @@ import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.maven.model.transform.pull.NodeBufferingParser;
|
import org.apache.maven.model.transform.pull.NodeBufferingParser;
|
||||||
import org.codehaus.plexus.util.xml.pull.XmlPullParser;
|
import org.codehaus.plexus.util.xml.pull.XmlPullParser;
|
||||||
|
@ -47,6 +48,8 @@ class ParentXMLFilter extends NodeBufferingParser {
|
||||||
|
|
||||||
private final Path projectPath;
|
private final Path projectPath;
|
||||||
|
|
||||||
|
private static final Pattern S_FILTER = Pattern.compile("\\s+");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param relativePathMapper
|
* @param relativePathMapper
|
||||||
*/
|
*/
|
||||||
|
@ -73,7 +76,7 @@ class ParentXMLFilter extends NodeBufferingParser {
|
||||||
hasVersion |= "version".equals(tagName);
|
hasVersion |= "version".equals(tagName);
|
||||||
hasRelativePath |= "relativePath".equals(tagName);
|
hasRelativePath |= "relativePath".equals(tagName);
|
||||||
} else if (event.event == TEXT) {
|
} else if (event.event == TEXT) {
|
||||||
if (event.text.matches("\\s+")) {
|
if (S_FILTER.matcher(event.text).matches()) {
|
||||||
if (whitespaceAfterParentStart.isEmpty()) {
|
if (whitespaceAfterParentStart.isEmpty()) {
|
||||||
whitespaceAfterParentStart = event.text;
|
whitespaceAfterParentStart = event.text;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.maven.model.transform;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.maven.model.transform.pull.NodeBufferingParser;
|
import org.apache.maven.model.transform.pull.NodeBufferingParser;
|
||||||
import org.codehaus.plexus.util.xml.pull.XmlPullParser;
|
import org.codehaus.plexus.util.xml.pull.XmlPullParser;
|
||||||
|
@ -34,6 +35,8 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParser;
|
||||||
public class ReactorDependencyXMLFilter extends NodeBufferingParser {
|
public class ReactorDependencyXMLFilter extends NodeBufferingParser {
|
||||||
private final BiFunction<String, String, String> reactorVersionMapper;
|
private final BiFunction<String, String, String> reactorVersionMapper;
|
||||||
|
|
||||||
|
private static final Pattern S_FILTER = Pattern.compile("\\s+");
|
||||||
|
|
||||||
public ReactorDependencyXMLFilter(
|
public ReactorDependencyXMLFilter(
|
||||||
XmlPullParser xmlPullParser, BiFunction<String, String, String> reactorVersionMapper) {
|
XmlPullParser xmlPullParser, BiFunction<String, String, String> reactorVersionMapper) {
|
||||||
super(xmlPullParser, "dependency");
|
super(xmlPullParser, "dependency");
|
||||||
|
@ -53,7 +56,7 @@ public class ReactorDependencyXMLFilter extends NodeBufferingParser {
|
||||||
tagName = event.name;
|
tagName = event.name;
|
||||||
hasVersion |= "version".equals(tagName);
|
hasVersion |= "version".equals(tagName);
|
||||||
} else if (event.event == TEXT) {
|
} else if (event.event == TEXT) {
|
||||||
if (event.text.matches("\\s+")) {
|
if (S_FILTER.matcher(event.text).matches()) {
|
||||||
if (dependencyWhitespace.isEmpty()) {
|
if (dependencyWhitespace.isEmpty()) {
|
||||||
dependencyWhitespace = event.text;
|
dependencyWhitespace = event.text;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
package org.apache.maven.model.transform;
|
package org.apache.maven.model.transform;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.maven.model.transform.pull.NodeBufferingParser;
|
import org.apache.maven.model.transform.pull.NodeBufferingParser;
|
||||||
import org.codehaus.plexus.util.xml.pull.XmlPullParser;
|
import org.codehaus.plexus.util.xml.pull.XmlPullParser;
|
||||||
|
@ -32,6 +33,8 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParser;
|
||||||
*/
|
*/
|
||||||
public class RelativePathXMLFilter extends NodeBufferingParser {
|
public class RelativePathXMLFilter extends NodeBufferingParser {
|
||||||
|
|
||||||
|
private static final Pattern S_FILTER = Pattern.compile("\\s+");
|
||||||
|
|
||||||
public RelativePathXMLFilter(XmlPullParser xmlPullParser) {
|
public RelativePathXMLFilter(XmlPullParser xmlPullParser) {
|
||||||
super(xmlPullParser, "parent");
|
super(xmlPullParser, "parent");
|
||||||
}
|
}
|
||||||
|
@ -42,7 +45,9 @@ public class RelativePathXMLFilter extends NodeBufferingParser {
|
||||||
for (Event event : buffer) {
|
for (Event event : buffer) {
|
||||||
if (event.event == START_TAG && "relativePath".equals(event.name)) {
|
if (event.event == START_TAG && "relativePath".equals(event.name)) {
|
||||||
skip = true;
|
skip = true;
|
||||||
if (prev != null && prev.event == TEXT && prev.text.matches("\\s+")) {
|
if (prev != null
|
||||||
|
&& prev.event == TEXT
|
||||||
|
&& S_FILTER.matcher(prev.text).matches()) {
|
||||||
prev = null;
|
prev = null;
|
||||||
}
|
}
|
||||||
event = null;
|
event = null;
|
||||||
|
|
|
@ -30,6 +30,7 @@ import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.maven.artifact.Artifact;
|
import org.apache.maven.artifact.Artifact;
|
||||||
import org.apache.maven.artifact.ArtifactUtils;
|
import org.apache.maven.artifact.ArtifactUtils;
|
||||||
|
@ -49,6 +50,8 @@ public class PluginDescriptor extends ComponentSetDescriptor implements Cloneabl
|
||||||
|
|
||||||
private static final String LIFECYCLE_DESCRIPTOR = "META-INF/maven/lifecycle.xml";
|
private static final String LIFECYCLE_DESCRIPTOR = "META-INF/maven/lifecycle.xml";
|
||||||
|
|
||||||
|
private static final Pattern PATTERN_FILTER_1 = Pattern.compile("-?(maven|plugin)-?");
|
||||||
|
|
||||||
private String groupId;
|
private String groupId;
|
||||||
|
|
||||||
private String artifactId;
|
private String artifactId;
|
||||||
|
@ -166,7 +169,7 @@ public class PluginDescriptor extends ComponentSetDescriptor implements Cloneabl
|
||||||
if ("maven-plugin-plugin".equals(artifactId)) {
|
if ("maven-plugin-plugin".equals(artifactId)) {
|
||||||
return "plugin";
|
return "plugin";
|
||||||
} else {
|
} else {
|
||||||
return artifactId.replaceAll("-?maven-?", "").replaceAll("-?plugin-?", "");
|
return PATTERN_FILTER_1.matcher(artifactId).replaceAll("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ import java.util.GregorianCalendar;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.maven.artifact.repository.metadata.Metadata;
|
import org.apache.maven.artifact.repository.metadata.Metadata;
|
||||||
import org.eclipse.aether.artifact.DefaultArtifact;
|
import org.eclipse.aether.artifact.DefaultArtifact;
|
||||||
|
@ -37,6 +38,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
public class RemoteSnapshotMetadataTest {
|
public class RemoteSnapshotMetadataTest {
|
||||||
private Locale defaultLocale;
|
private Locale defaultLocale;
|
||||||
|
|
||||||
|
private static final Pattern DATE_FILTER = Pattern.compile("\\..*");
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
public void setLocaleToUseBuddhistCalendar() {
|
public void setLocaleToUseBuddhistCalendar() {
|
||||||
defaultLocale = Locale.getDefault();
|
defaultLocale = Locale.getDefault();
|
||||||
|
@ -66,7 +69,7 @@ public class RemoteSnapshotMetadataTest {
|
||||||
String dateAfter = gregorianDate();
|
String dateAfter = gregorianDate();
|
||||||
|
|
||||||
String ts = metadata.metadata.getVersioning().getSnapshot().getTimestamp();
|
String ts = metadata.metadata.getVersioning().getSnapshot().getTimestamp();
|
||||||
String datePart = ts.replaceAll("\\..*", "");
|
String datePart = DATE_FILTER.matcher(ts).replaceAll("");
|
||||||
|
|
||||||
/* Allow for this test running across midnight */
|
/* Allow for this test running across midnight */
|
||||||
Set<String> expected = new HashSet<>(Arrays.asList(dateBefore, dateAfter));
|
Set<String> expected = new HashSet<>(Arrays.asList(dateBefore, dateAfter));
|
||||||
|
|
|
@ -24,6 +24,7 @@ import javax.inject.Singleton;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.maven.settings.Mirror;
|
import org.apache.maven.settings.Mirror;
|
||||||
import org.apache.maven.settings.Profile;
|
import org.apache.maven.settings.Profile;
|
||||||
|
@ -42,11 +43,10 @@ import org.codehaus.plexus.util.StringUtils;
|
||||||
@Singleton
|
@Singleton
|
||||||
public class DefaultSettingsValidator implements SettingsValidator {
|
public class DefaultSettingsValidator implements SettingsValidator {
|
||||||
|
|
||||||
private static final String ID_REGEX = "[A-Za-z0-9_\\-.]+";
|
private static final String ID = "[\\w.-]+";
|
||||||
|
private static final Pattern ID_REGEX = Pattern.compile(ID);
|
||||||
|
|
||||||
private static final String ILLEGAL_FS_CHARS = "\\/:\"<>|?*";
|
private static final String ILLEGAL_REPO_ID_CHARS = "\\/:\"<>|?*"; // ILLEGAL_FS_CHARS
|
||||||
|
|
||||||
private static final String ILLEGAL_REPO_ID_CHARS = ILLEGAL_FS_CHARS;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validate(Settings settings, SettingsProblemCollector problems) {
|
public void validate(Settings settings, SettingsProblemCollector problems) {
|
||||||
|
@ -63,13 +63,13 @@ public class DefaultSettingsValidator implements SettingsValidator {
|
||||||
if (StringUtils.isBlank(pluginGroup)) {
|
if (StringUtils.isBlank(pluginGroup)) {
|
||||||
addViolation(
|
addViolation(
|
||||||
problems, Severity.ERROR, "pluginGroups.pluginGroup[" + i + "]", null, "must not be empty");
|
problems, Severity.ERROR, "pluginGroups.pluginGroup[" + i + "]", null, "must not be empty");
|
||||||
} else if (!pluginGroup.matches(ID_REGEX)) {
|
} else if (!ID_REGEX.matcher(pluginGroup).matches()) {
|
||||||
addViolation(
|
addViolation(
|
||||||
problems,
|
problems,
|
||||||
Severity.ERROR,
|
Severity.ERROR,
|
||||||
"pluginGroups.pluginGroup[" + i + "]",
|
"pluginGroups.pluginGroup[" + i + "]",
|
||||||
null,
|
null,
|
||||||
"must denote a valid group id and match the pattern " + ID_REGEX);
|
"must denote a valid group id and match the pattern " + ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue