1 /* 2 * Copyright (C) Christian Schulte <cs@schulte.it>, 2005-206 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * o Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * o Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in 14 * the documentation and/or other materials provided with the 15 * distribution. 16 * 17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 18 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 19 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 20 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 * $JOMC: TestModelValidateMojo.java 5043 2015-05-27 07:03:39Z schulte $ 29 * 30 */ 31 package org.jomc.mojo; 32 33 import java.util.logging.Level; 34 import org.apache.maven.plugin.MojoExecutionException; 35 import org.jomc.modlet.ModelContext; 36 import org.jomc.modlet.ModelValidationReport; 37 38 /** 39 * Validates a project's test model. 40 * 41 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a> 42 * @version $JOMC: TestModelValidateMojo.java 5043 2015-05-27 07:03:39Z schulte $ 43 * 44 * @phase process-test-classes 45 * @goal validate-test-model 46 * @threadSafe 47 * @requiresDependencyResolution test 48 */ 49 public final class TestModelValidateMojo extends AbstractJomcMojo 50 { 51 52 /** 53 * Constant for the name of the tool backing the mojo. 54 */ 55 private static final String TOOLNAME = "ModelValidator"; 56 57 /** 58 * Execution strategy of the goal ({@code always} or {@code once-per-session}). 59 * 60 * @parameter default-value="once-per-session" expression="${jomc.validateTestModelExecutionStrategy}" 61 * @since 1.1 62 */ 63 private String validateTestModelExecutionStrategy; 64 65 /** 66 * Creates a new {@code TestModelValidateMojo} instance. 67 */ 68 public TestModelValidateMojo() 69 { 70 super(); 71 } 72 73 @Override 74 protected void executeTool() throws Exception 75 { 76 this.logSeparator(); 77 this.logProcessingModel( TOOLNAME, this.getModel() ); 78 79 final ModelContext context = this.createModelContext( this.getTestClassLoader() ); 80 final ModelValidationReport validationReport = context.validateModel( this.getModel( context ) ); 81 82 this.log( context, validationReport.isModelValid() ? Level.INFO : Level.SEVERE, validationReport ); 83 84 if ( !validationReport.isModelValid() ) 85 { 86 throw new MojoExecutionException( Messages.getMessage( "failedValidatingTestModel" ) ); 87 } 88 89 this.logToolSuccess( TOOLNAME ); 90 } 91 92 @Override 93 protected String getGoal() throws MojoExecutionException 94 { 95 return "validate-test-model"; 96 } 97 98 @Override 99 protected String getExecutionStrategy() throws MojoExecutionException 100 { 101 return this.validateTestModelExecutionStrategy; 102 } 103 104 }