diff --git a/maven-settings-builder/pom.xml b/maven-settings-builder/pom.xml
index ff4fcd4576..7ca6081eb9 100644
--- a/maven-settings-builder/pom.xml
+++ b/maven-settings-builder/pom.xml
@@ -39,6 +39,12 @@ under the License.
HEAD
+
+
+ Thomas Meyer
+
+
+
org.apache.maven
diff --git a/maven-settings-builder/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java b/maven-settings-builder/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java
index aa4d30316f..b32471113f 100644
--- a/maven-settings-builder/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java
+++ b/maven-settings-builder/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java
@@ -26,6 +26,7 @@
import org.apache.maven.settings.Mirror;
import org.apache.maven.settings.Profile;
import org.apache.maven.settings.Repository;
+import org.apache.maven.settings.Proxy;
import org.apache.maven.settings.Server;
import org.apache.maven.settings.Settings;
import org.apache.maven.settings.building.SettingsProblem.Severity;
@@ -141,6 +142,23 @@ else if ( !pluginGroup.matches( ID_REGEX ) )
+ "pluginRepositories.pluginRepository" );
}
}
+
+ List proxies = settings.getProxies();
+
+ if ( proxies != null )
+ {
+ Set proxyIds = new HashSet();
+
+ for ( Proxy proxy : proxies )
+ {
+ if ( !proxyIds.add( proxy.getId() ) )
+ {
+ addViolation( problems, Severity.WARNING, "proxies.proxy.id", null,
+ "must be unique but found duplicate proxy with id " + proxy.getId() );
+ }
+ validateStringNotEmpty( problems, "proxies.proxy.host", proxy.getHost(), proxy.getId() );
+ }
+ }
}
private void validateRepositories( SettingsProblemCollector problems, List repositories, String prefix )
@@ -189,7 +207,7 @@ private void validateRepositories( SettingsProblemCollector problems, Liststring.length > 0
*
*/
- private boolean validateStringNotEmpty( SettingsProblemCollector problems, String fieldName, String string,
+ private static boolean validateStringNotEmpty( SettingsProblemCollector problems, String fieldName, String string,
String sourceHint )
{
if ( !validateNotNull( problems, fieldName, string, sourceHint ) )
@@ -214,7 +232,7 @@ private boolean validateStringNotEmpty( SettingsProblemCollector problems, Strin
* string != null
*
*/
- private boolean validateNotNull( SettingsProblemCollector problems, String fieldName, Object object,
+ private static boolean validateNotNull( SettingsProblemCollector problems, String fieldName, Object object,
String sourceHint )
{
if ( object != null )
@@ -227,7 +245,7 @@ private boolean validateNotNull( SettingsProblemCollector problems, String field
return false;
}
- private boolean validateBannedCharacters( SettingsProblemCollector problems, String fieldName, Severity severity,
+ private static boolean validateBannedCharacters( SettingsProblemCollector problems, String fieldName, Severity severity,
String string, String sourceHint, String banned )
{
if ( string != null )
@@ -247,7 +265,7 @@ private boolean validateBannedCharacters( SettingsProblemCollector problems, Str
return true;
}
- private void addViolation( SettingsProblemCollector problems, Severity severity, String fieldName,
+ private static void addViolation( SettingsProblemCollector problems, Severity severity, String fieldName,
String sourceHint, String message )
{
StringBuilder buffer = new StringBuilder( 256 );
diff --git a/maven-settings-builder/src/test/java/org/apache/maven/settings/validation/DefaultSettingsValidatorTest.java b/maven-settings-builder/src/test/java/org/apache/maven/settings/validation/DefaultSettingsValidatorTest.java
index fe6988b8f2..8c7f21d82e 100644
--- a/maven-settings-builder/src/test/java/org/apache/maven/settings/validation/DefaultSettingsValidatorTest.java
+++ b/maven-settings-builder/src/test/java/org/apache/maven/settings/validation/DefaultSettingsValidatorTest.java
@@ -26,6 +26,7 @@
import org.apache.maven.settings.Mirror;
import org.apache.maven.settings.Profile;
+import org.apache.maven.settings.Proxy;
import org.apache.maven.settings.Repository;
import org.apache.maven.settings.Server;
import org.apache.maven.settings.Settings;
@@ -195,6 +196,38 @@ public void testValidateUniqueRepositoryId()
+ " but found duplicate repository with id test" );
}
+ public void testValidateUniqueProxyId()
+ throws Exception
+ {
+ Settings settings = new Settings();
+ Proxy proxy = new Proxy();
+ String id = null;
+ proxy.setId( id );
+ proxy.setHost("www.example.com");
+ settings.addProxy( proxy );
+ settings.addProxy( proxy );
+
+ SimpleProblemCollector problems = new SimpleProblemCollector();
+ validator.validate( settings, problems );
+ assertEquals( 1, problems.messages.size() );
+ assertContains( problems.messages.get( 0 ), "'proxies.proxy.id' must be unique"
+ + " but found duplicate proxy with id " + id );
+
+ }
+
+ public void testValidateProxy()
+ throws Exception
+ {
+ Settings settings = new Settings();
+ Proxy proxy1 = new Proxy();
+ settings.addProxy( proxy1 );
+
+ SimpleProblemCollector problems = new SimpleProblemCollector();
+ validator.validate( settings, problems );
+ assertEquals( 1, problems.messages.size() );
+ assertContains( problems.messages.get( 0 ), "'proxies.proxy.host' for default is missing" );
+ }
+
private static class SimpleProblemCollector
implements SettingsProblemCollector
{