in maven-xrts-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/xrts/AbstractGenerateSourcesMojo.java [76:159]
private void generateBundles() throws IOException, MojoExecutionException
{
File sourceDirectory = getSourceDirectory();
if (sourceDirectory.exists())
{
// Include generated sources in compilation
addCompileSourceRoot();
// Scan for .xrts sources
DirectoryScanner scanner = new DirectoryScanner();
scanner.setBasedir(sourceDirectory);
scanner.addDefaultExcludes();
String[] excludes = getExcludes();
scanner.setExcludes(excludes);
scanner.setIncludes(new String[] { "**/*.xrts" });
scanner.scan();
String[] xrtsFiles = scanner.getIncludedFiles();
if (xrtsFiles.length > 0)
{
RTSWriter writer = getRTSWriter();
Map<String, Object> params = new HashMap<String, Object>();
List<String> dirtyXRTS = new LinkedList<String>(Arrays.asList(xrtsFiles));
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(false);
for (Iterator<String> i = dirtyXRTS.iterator(); i.hasNext();)
{
String xrtsFile = i.next();
File targetFile = getTargetFile(xrtsFile);
if (targetFile.exists())
{
File sourceFile = getSourceFile(xrtsFile);
if (targetFile.lastModified() >= sourceFile.lastModified())
{
i.remove();
}
}
}
if (dirtyXRTS.isEmpty())
{
getLog().info("Nothing to generate - all XRTS bundles are up to date");
}
else
{
getLog().info("Generating " + dirtyXRTS.size() + " XRTS bundles to " + getTargetDirectory());
for (Iterator<String> i = dirtyXRTS.iterator(); i.hasNext();)
{
String xrtsFile = i.next();
File sourceFile = getSourceFile(xrtsFile);
File targetFile = getTargetFile(xrtsFile);
String baseName = getBasename(xrtsFile);
params.put("outFile", targetFile);
params.put("outName", baseName);
params.put("srcName", baseName);
params.put("quietMode", Boolean.TRUE);
params.put("defaultLocales", getDefaultLocales());
InputSource source = new InputSource(new FileInputStream(sourceFile));
// setup relative systemId resolution for local rts.dtd files.
source.setSystemId(sourceFile.getParentFile().toURL().toString());
try
{
if (targetFile.exists())
targetFile.delete();
SAXParser parser = factory.newSAXParser();
targetFile.getParentFile().mkdirs();
XRTSGenerator.generate(parser, source, writer, params);
targetFile.setReadOnly();
}
catch (Throwable t)
{
throw new MojoExecutionException(t.getMessage());
}
}
}
}
}
}