in maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/MakeConvertersMojo.java [270:408]
private void generateConverters(Model model, Properties cachedInfo, long lastModifiedMetadata) throws IOException,
MojoExecutionException
{
// Make sure generated source directory
// is added to compilation source path
//project.addCompileSourceRoot(generatedSourceDirectory.getCanonicalPath());
File tf = new File(templateSourceDirectory, _getTemplateName());
if (isCachingEnabled())
{
boolean upToDate = true;
for (Iterator it = model.getConverters().iterator(); it.hasNext();)
{
ConverterMeta converter = (ConverterMeta) it.next();
if (converter.getClassName() != null)
{
File f = new File(mainSourceDirectory, StringUtils.replace(
converter.getClassName(), ".", "/")+".java");
if (!f.exists() && canGenerateConverter(converter))
{
if (mainSourceDirectory2 != null)
{
File f2 = new File(mainSourceDirectory2, StringUtils.replace(
converter.getClassName(), ".", "/")+".java");
if (f2.exists())
{
//Skip
continue;
}
}
File outFile = new File(generatedSourceDirectory, StringUtils.replace(
converter.getClassName(), ".", "/")+".java");
String lastModifiedString = cachedInfo.getProperty(outFile.getAbsolutePath());
if (lastModifiedString == null)
{
upToDate = false;
break;
}
else if (!outFile.exists())
{
upToDate = false;
break;
}
else
{
Long lastModified = Long.valueOf(lastModifiedString);
if (lastModified != null && lastModifiedMetadata > lastModified.longValue())
{
upToDate = false;
break;
}
}
}
}
}
if (upToDate && tf != null && tf.exists())
{
upToDate = isFileUpToDate(cachedInfo, tf);
}
if (upToDate)
{
getLog().info("generated converter files are up to date");
return;
}
}
//Init Qdox for extract code
JavaDocBuilder builder = new JavaDocBuilder();
List sourceDirs = project.getCompileSourceRoots();
// need a File object representing the original source tree
for (Iterator i = sourceDirs.iterator(); i.hasNext();)
{
String srcDir = (String) i.next();
builder.addSourceTree(new File(srcDir));
}
//Init velocity
VelocityEngine velocityEngine = initVelocity();
VelocityContext baseContext = new VelocityContext();
baseContext.put("utils", new MyfacesUtils());
for (Iterator it = model.getConverters().iterator(); it.hasNext();)
{
ConverterMeta converter = (ConverterMeta) it.next();
if (converter.getClassName() != null)
{
File f = new File(mainSourceDirectory, StringUtils.replace(
converter.getClassName(), ".", "/")+".java");
if (!f.exists() && canGenerateConverter(converter))
{
if (mainSourceDirectory2 != null)
{
File f2 = new File(mainSourceDirectory2, StringUtils.replace(
converter.getClassName(), ".", "/")+".java");
if (f2.exists())
{
//Skip
continue;
}
}
getLog().info("Generating converter class:"+converter.getClassName());
try
{
_generateConverter(velocityEngine, builder,converter,baseContext,
cachedInfo, lastModifiedMetadata);
}
catch(MojoExecutionException e)
{
if (force)
{
getLog().error(e.getMessage());
}
else
{
//Stop execution throwing exception
throw e;
}
}
}
}
}
if (isCachingEnabled())
{
if (tf != null && tf.exists())
{
cachedInfo.put(tf.getAbsolutePath(), Long.toString(tf.lastModified()));
}
}
}