Coverage Report - org.apache.torque.mojo.TexenTaskMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
TexenTaskMojo
0%
0/44
0%
0/4
1.4
 
 1  
 package org.apache.torque.mojo;
 2  
 
 3  
 import java.io.File;
 4  
 import java.util.Iterator;
 5  
 import java.util.Map;
 6  
 
 7  
 import org.apache.commons.configuration.ConfigurationException;
 8  
 import org.apache.commons.configuration.FileConfiguration;
 9  
 import org.apache.commons.configuration.PropertiesConfiguration;
 10  
 import org.apache.maven.plugin.MojoExecutionException;
 11  
 import org.apache.texen.ant.TexenTask;
 12  
 
 13  
 /**
 14  
  * The base class for mojos that wrap Texen Ant Tasks
 15  
  */
 16  0
 public abstract class TexenTaskMojo extends AntTaskMojo {
 17  
         /**
 18  
          * The directory where the generator output is written
 19  
          * 
 20  
          * @required
 21  
          */
 22  
         private String outputDir;
 23  
 
 24  
         /**
 25  
          * The base path where the templates are read from, if they are not read from the classpath.
 26  
          * 
 27  
          * @parameter expression="${templatePath}" default-value="${basedir}/src/main/impex/templates"
 28  
          */
 29  
         private String templatePath;
 30  
 
 31  
         /**
 32  
          * Whether the templates should be loaded from the classpath.
 33  
          * 
 34  
          * @parameter expression="${useClasspath}" default-value="true"
 35  
          */
 36  
         private boolean useClasspath;
 37  
 
 38  
         /**
 39  
          * A map where all user-defined context properties can be set. Overrides all other mojo configuration settings which
 40  
          * are mapped to context properties.
 41  
          * 
 42  
          * @parameter
 43  
          */
 44  
         private Map<?, ?> userContextProperties;
 45  
 
 46  
         /**
 47  
          * The path to the generated context property file.
 48  
          * 
 49  
          * @required
 50  
          */
 51  
         private String contextPropertiesPath;
 52  
 
 53  
         /**
 54  
          * Sets the path to Torque's output directory.
 55  
          * 
 56  
          * @param outputDir
 57  
          *            the path to Torque's output directory.
 58  
          */
 59  
         public void setOutputDir(String outputDir) {
 60  0
                 this.outputDir = outputDir;
 61  0
         }
 62  
 
 63  
         /**
 64  
          * Returns the path to Torque's output directory.
 65  
          * 
 66  
          * @return the path to Torque's output directory. Not null if initialized correctly.
 67  
          */
 68  
         public String getOutputDir() {
 69  0
                 return this.outputDir;
 70  
         }
 71  
 
 72  
         /**
 73  
          * Sets the path to Torque's templates, if the classpath is not used to load the templates.
 74  
          * 
 75  
          * @param templatePath
 76  
          *            the path to Torque's templates.
 77  
          */
 78  
         public void setTemplatePath(String templatePath) {
 79  0
                 this.templatePath = templatePath;
 80  0
         }
 81  
 
 82  
         /**
 83  
          * Returns the path to Torque's templates, if the classpath is not used to load the templates.
 84  
          * 
 85  
          * @return the path to Torque's templates.
 86  
          */
 87  
         public String getTemplatePath() {
 88  0
                 return this.templatePath;
 89  
         }
 90  
 
 91  
         /**
 92  
          * Sets whether the classpath should be used to locate the templates.
 93  
          * 
 94  
          * @param templatePath
 95  
          *            the path to Torque's templates.
 96  
          */
 97  
         public void setUseClasspath(boolean useClasspath) {
 98  0
                 this.useClasspath = useClasspath;
 99  0
         }
 100  
 
 101  
         /**
 102  
          * Returns whether the classpath is used to locate the templates.
 103  
          * 
 104  
          * @return true if the classpath is used to locate the templates, false otherwise
 105  
          */
 106  
         public boolean getUseClasspath() {
 107  0
                 return this.useClasspath;
 108  
         }
 109  
 
 110  
         /**
 111  
          * Sets the path to the generated property file used as Texen's context properties.
 112  
          * 
 113  
          * @param generatedPropertyFilePath
 114  
          *            the path to the generated context properties file.
 115  
          */
 116  
         public void setContextPropertiesPath(String contextPropertiesPath) {
 117  0
                 this.contextPropertiesPath = contextPropertiesPath;
 118  0
         }
 119  
 
 120  
         /**
 121  
          * Returns the path to the generated property file used as Texen's context properties.
 122  
          * 
 123  
          * @return the path to the generated context properties file.
 124  
          */
 125  
         public String getContextPropertiesPath() {
 126  0
                 return this.contextPropertiesPath;
 127  
         }
 128  
 
 129  
         /**
 130  
          * Sets the map which defines user-defined context properties. The settings override all other mojo configuration
 131  
          * settings which are mapped to context properties.
 132  
          * 
 133  
          * @param contextProperties
 134  
          *            the user-defined context properties.
 135  
          */
 136  
         public void setUserContextProperties(Map<?, ?> userContextProperties) {
 137  0
                 this.userContextProperties = userContextProperties;
 138  0
         }
 139  
 
 140  
         /**
 141  
          * Returns the map which defines user-defined context properties.
 142  
          * 
 143  
          * @return the map containing user-defined context properties, or null if not set.
 144  
          */
 145  
         public Map<?, ?> getUserContextProperties() {
 146  0
                 return userContextProperties;
 147  
         }
 148  
 
 149  
         /**
 150  
          * returns the generator Task for this mojo.
 151  
          * 
 152  
          * @return the generator Task, not null.
 153  
          */
 154  
         protected TexenTask getGeneratorTask() {
 155  0
                 return (TexenTask) getAntTask();
 156  
         }
 157  
 
 158  
         /**
 159  
          * Generates the context properties file for Texen. The file is written to the path contextPropertiesPath.
 160  
          * 
 161  
          * @throws MojoExecutionException
 162  
          *             if an error occurs.
 163  
          */
 164  
         protected void generateContextProperties() throws MojoExecutionException {
 165  
                 try {
 166  0
                         FileConfiguration configuration = getMojoContextProperties();
 167  0
                         if (userContextProperties != null) {
 168  0
                                 for (Iterator<?> contextPropertyIt = userContextProperties.entrySet().iterator(); contextPropertyIt.hasNext();) {
 169  0
                                         Map.Entry<?, ?> entry = (Map.Entry<?, ?>) contextPropertyIt.next();
 170  0
                                         configuration.addProperty(entry.getKey().toString(), entry.getValue().toString());
 171  0
                                 }
 172  
                         }
 173  0
                         configuration.save(contextPropertiesPath);
 174  0
                 } catch (ConfigurationException e) {
 175  0
                         getLog().error("Error writing temporary context properties: " + e.getMessage());
 176  0
                         throw new MojoExecutionException(e.getMessage());
 177  0
                 }
 178  0
         }
 179  
 
 180  
         /**
 181  
          * Configures the Texen task wrapped by this mojo.
 182  
          */
 183  
         protected void configureTask() throws MojoExecutionException {
 184  0
                 super.configureTask();
 185  0
                 TexenTask task = getGeneratorTask();
 186  0
                 task.setContextProperties(contextPropertiesPath);
 187  0
                 task.setUseClasspath(useClasspath);
 188  
                 try {
 189  0
                         task.setTemplatePath(templatePath);
 190  0
                 } catch (Exception e) {
 191  0
                         throw new MojoExecutionException("Error setting template path", e);
 192  0
                 }
 193  
 
 194  0
                 File outputDirectory = new File(outputDir);
 195  0
                 outputDirectory.mkdirs();
 196  0
                 getGeneratorTask().setOutputDirectory(outputDirectory);
 197  0
         }
 198  
 
 199  
         /**
 200  
          * Executes the wrapped Texen task. Before this is done, the context properties file is generated and the Texen task
 201  
          * is configured.
 202  
          * 
 203  
          * @throws MojoExecutionException
 204  
          *             if an error occurs during execution.
 205  
          * 
 206  
          * @see org.apache.maven.plugin.Mojo#execute()
 207  
          */
 208  
         public void executeMojo() throws MojoExecutionException {
 209  0
                 generateContextProperties();
 210  0
                 super.executeMojo();
 211  0
         }
 212  
 
 213  
         /**
 214  
          * Returns the context properties for the Texen task which are defined in the configuration of the child mojo. This
 215  
          * method needs to be overwritten in subclasses.
 216  
          * 
 217  
          * @return The PropertiesConfiguration containing all context properties, not null.
 218  
          */
 219  
         protected abstract PropertiesConfiguration getMojoContextProperties();
 220  
 }