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 {