Author: brianf Date: Tue Mar 27 20:53:54 2007 New Revision: 523156 URL: http://svn.apache.org/viewvc?view=rev&rev=523156 Log: added license and failFast flag
Modified: maven/plugins/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugin/enforcer/EnforceMojo.java maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/EnforcerTestUtils.java maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/MockEnforcerRule.java maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/MockPlexusContainer.java maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestAbstractVersionEnforcer.java maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestDefaultEnforcementRuleHelper.java maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestEnforceMojo.java maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestMavenVersion.java maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestRequireJavaVersion.java Modified: maven/plugins/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugin/enforcer/EnforceMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugin/enforcer/EnforceMojo.java?view=diff&rev=523156&r1=523155&r2=523156 ============================================================================== --- maven/plugins/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugin/enforcer/EnforceMojo.java (original) +++ maven/plugins/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugin/enforcer/EnforceMojo.java Tue Mar 27 20:53:54 2007 @@ -19,6 +19,13 @@ * under the License. */ +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; @@ -62,44 +69,91 @@ protected boolean skip = false; /** + * Fail on the first rule that doesn't pass + * + * @parameter expression="${enforcer.failFast}" default-value="false" + */ + protected boolean failFast = false; + + /** * @parameter * @required */ private EnforcerRule[] rules; + /** + * Entry point to the mojo + */ public void execute() throws MojoExecutionException { Log log = this.getLog(); + + // the entire execution can be easily skipped if ( !skip ) { + // list to store exceptions + ArrayList list = new ArrayList(); + + // make sure the rules exist if ( rules != null && rules.length > 0 ) { String currentRule = "Unknown"; + // create my helper EnforcerRuleHelper helper = new DefaultEnforcementRuleHelper( session, log ); - try + + // if we are only warning, then disable failFast + if ( !fail ) { - for ( int i = 0; i < rules.length; i++ ) + failFast = false; + } + + // go through each rule unless + for ( int i = 0; i < rules.length; i++ ) + { + + // prevent against empty rules + EnforcerRule rule = rules[i]; + if ( rule != null ) { - EnforcerRule rule = rules[i]; - if ( rule != null ) + // store the current rule for loggin purposes + currentRule = rule.getClass().getSimpleName(); + log.debug( "Executing rule: " + currentRule ); + try { - currentRule = rule.getClass().getSimpleName(); - log.debug( "Executing rule: " + currentRule ); + // execute the rule rules[i].execute( helper ); } + catch ( EnforcerRuleException e ) + { + // i can throw an exception because failfast will be + // false if fail is false. + if ( failFast ) + { + throw new MojoExecutionException( currentRule + " failed with message: " + + e.getMessage(), e ); + } + else + { + list.add( "Rule "+i+": "+currentRule+" failed with message: " + e.getMessage()); + } + } } } - catch ( EnforcerRuleException e ) + + // if we found anything + if ( !list.isEmpty() ) { - if ( fail ) + Iterator iter = list.iterator(); + while ( iter.hasNext() ) { - throw new MojoExecutionException( currentRule + " failed with message: " + e.getMessage(), e ); + String failure = (String) iter.next(); + log.warn( failure ); } - else + if ( fail ) { - log.warn( e.getLocalizedMessage() ); + throw new MojoExecutionException( "Some rules have failed." ); } } } @@ -181,6 +235,22 @@ public void setSkip( boolean theSkip ) { this.skip = theSkip; + } + + /** + * @return the failFast + */ + public boolean isFailFast() + { + return this.failFast; + } + + /** + * @param theFailFast the failFast to set + */ + public void setFailFast( boolean theFailFast ) + { + this.failFast = theFailFast; } } Modified: maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/EnforcerTestUtils.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/EnforcerTestUtils.java?view=diff&rev=523156&r1=523155&r2=523156 ============================================================================== --- maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/EnforcerTestUtils.java (original) +++ maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/EnforcerTestUtils.java Tue Mar 27 20:53:54 2007 @@ -1,5 +1,24 @@ package org.apache.maven.plugin.enforcer; +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import java.util.Date; import org.apache.maven.execution.MavenSession; Modified: maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/MockEnforcerRule.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/MockEnforcerRule.java?view=diff&rev=523156&r1=523155&r2=523156 ============================================================================== --- maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/MockEnforcerRule.java (original) +++ maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/MockEnforcerRule.java Tue Mar 27 20:53:54 2007 @@ -1,5 +1,24 @@ package org.apache.maven.plugin.enforcer; +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import org.apache.maven.shared.enforcer.rule.api.EnforcerRule; import org.apache.maven.shared.enforcer.rule.api.EnforcerRuleException; import org.apache.maven.shared.enforcer.rule.api.EnforcerRuleHelper; Modified: maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/MockPlexusContainer.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/MockPlexusContainer.java?view=diff&rev=523156&r1=523155&r2=523156 ============================================================================== --- maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/MockPlexusContainer.java (original) +++ maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/MockPlexusContainer.java Tue Mar 27 20:53:54 2007 @@ -1,5 +1,24 @@ package org.apache.maven.plugin.enforcer; +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import java.io.File; import java.io.Reader; import java.util.Date; Modified: maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestAbstractVersionEnforcer.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestAbstractVersionEnforcer.java?view=diff&rev=523156&r1=523155&r2=523156 ============================================================================== --- maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestAbstractVersionEnforcer.java (original) +++ maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestAbstractVersionEnforcer.java Tue Mar 27 20:53:54 2007 @@ -1,5 +1,24 @@ package org.apache.maven.plugin.enforcer; +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import junit.framework.TestCase; import org.apache.maven.artifact.versioning.ArtifactVersion; Modified: maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestDefaultEnforcementRuleHelper.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestDefaultEnforcementRuleHelper.java?view=diff&rev=523156&r1=523155&r2=523156 ============================================================================== --- maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestDefaultEnforcementRuleHelper.java (original) +++ maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestDefaultEnforcementRuleHelper.java Tue Mar 27 20:53:54 2007 @@ -1,5 +1,24 @@ package org.apache.maven.plugin.enforcer; +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import junit.framework.TestCase; import org.apache.maven.plugin.logging.Log; Modified: maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestEnforceMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestEnforceMojo.java?view=diff&rev=523156&r1=523155&r2=523156 ============================================================================== --- maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestEnforceMojo.java (original) +++ maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestEnforceMojo.java Tue Mar 27 20:53:54 2007 @@ -51,12 +51,14 @@ EnforcerRule[] rules = new EnforcerRule[10]; rules[0] = new MockEnforcerRule(true); + rules[1] = new MockEnforcerRule(true); mojo.setRules( rules ); mojo.execute(); try { + mojo.setFailFast( false ); mojo.setFail( true ); mojo.execute(); fail("Expected a Mojo Execution Exception."); @@ -66,9 +68,24 @@ System.out.println("Caught Expected Exception:"+e.getLocalizedMessage()); } - ((MockEnforcerRule) rules[0]).setFailRule(false); + try + { + mojo.setFailFast( true ); + mojo.setFail( true ); + mojo.execute(); + fail("Expected a Mojo Execution Exception."); + } + catch ( MojoExecutionException e ) + { + System.out.println("Caught Expected Exception:"+e.getLocalizedMessage()); + } + ((MockEnforcerRule) rules[0]).setFailRule(false); + ((MockEnforcerRule) rules[1]).setFailRule(false); mojo.execute(); + + + } } Modified: maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestMavenVersion.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestMavenVersion.java?view=diff&rev=523156&r1=523155&r2=523156 ============================================================================== --- maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestMavenVersion.java (original) +++ maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestMavenVersion.java Tue Mar 27 20:53:54 2007 @@ -1,5 +1,24 @@ package org.apache.maven.plugin.enforcer; +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import org.apache.commons.lang.SystemUtils; import org.apache.maven.plugin.logging.SystemStreamLog; import org.apache.maven.shared.enforcer.rule.api.EnforcerRuleException; Modified: maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestRequireJavaVersion.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestRequireJavaVersion.java?view=diff&rev=523156&r1=523155&r2=523156 ============================================================================== --- maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestRequireJavaVersion.java (original) +++ maven/plugins/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugin/enforcer/TestRequireJavaVersion.java Tue Mar 27 20:53:54 2007 @@ -1,5 +1,24 @@ package org.apache.maven.plugin.enforcer; +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import org.apache.commons.lang.SystemUtils; import org.apache.maven.plugin.logging.SystemStreamLog; import org.apache.maven.shared.enforcer.rule.api.EnforcerRuleException;