Coverage Report - com.aurea.maven.plugins.sonic.esb.EsbDependenciesMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
EsbDependenciesMojo
0%
0/22
0%
0/4
2.5
 
 1  
 package com.aurea.maven.plugins.sonic.esb;
 2  
 
 3  
 import java.util.HashSet;
 4  
 
 5  
 import org.apache.maven.plugin.MojoExecutionException;
 6  
 import org.apache.maven.plugin.MojoFailureException;
 7  
 
 8  
 import com.aurea.maven.plugins.sonic.utils.ProjectAnalyzer;
 9  
 
 10  
 /**
 11  
  * forks an esb-dependency lifecycle, which makes sure that the required dependencies are copied & extracted to the
 12  
  * appropriate locations under /target.
 13  
  * 
 14  
  * @goal esb-dependencies
 15  
  */
 16  
 
 17  0
 public class EsbDependenciesMojo extends AbstractESBMojo {
 18  
   
 19  
 
 20  
   /**
 21  
    * whether to validate dependencies or not.
 22  
    * 
 23  
    * @parameter property="sonicesb.validateDependencies" default-value=true
 24  
    */
 25  
   protected boolean validateDependencies;
 26  
   
 27  
   
 28  
   @Override
 29  
   protected void doExecute() throws MojoExecutionException, MojoFailureException {
 30  
 
 31  0
     if (validateDependencies) {
 32  0
       validateDependencies();
 33  
     } else {
 34  0
       getLog().warn("Dependency validation will be skipped");
 35  
     }
 36  
     
 37  0
     getLog().info("Depenency validation complete");
 38  0
   }
 39  
   
 40  
   /**
 41  
    * validate that all referenced sub-processes are either local to this project or defined in one of the dependent
 42  
    * projects.
 43  
    * 
 44  
    * @throws MojoExecutionException
 45  
    *           if any unknown sub-processes are found
 46  
    */
 47  
   private void validateDependencies() throws MojoExecutionException {
 48  
 
 49  
     // only validating processes for now
 50  0
     getLog().info("Validating process dependencies");
 51  
     
 52  
     // get sets of local processes, referenced sub-processes & processes identified in dependencies
 53  0
     HashSet<String> localProcessNames = ProjectAnalyzer.getProcessNames(getSonicEsbSourceDirectory().getAbsolutePath());
 54  0
     HashSet<String> subProcesssNames = ProjectAnalyzer.getSubProcessesOfProcesses(getSonicEsbSourceDirectory());
 55  0
     HashSet<String> dependencyProcessNames = getDependencyProcessNames();
 56  
     
 57  0
     getLog().debug("Local processes found: " + localProcessNames.toString());
 58  0
     getLog().debug("Sub-processes found: " + subProcesssNames.toString());
 59  0
     getLog().debug("Dependency processes found: " + dependencyProcessNames.toString());
 60  
     
 61  
     // make a set of all known processes from the local project & dependencies
 62  0
     HashSet<String> knownProcesses = new HashSet<String>();
 63  0
     knownProcesses.addAll(localProcessNames);
 64  0
     knownProcesses.addAll(dependencyProcessNames);
 65  
     
 66  
     // if not all of the sub-processes are known
 67  0
     if (!knownProcesses.containsAll(subProcesssNames)) {
 68  
       // calculate a set of unknown dependencies
 69  0
       HashSet<String> unknownProcesses = new HashSet<String>();
 70  0
       unknownProcesses.addAll(subProcesssNames);
 71  0
       unknownProcesses.removeAll(knownProcesses);
 72  
       
 73  0
       throw new MojoExecutionException("Not all sub-processes are known. "
 74  
         + "Please add dependencies containing the following processes: " + unknownProcesses.toString());
 75  
     }
 76  
     
 77  0
   }
 78  
 }