package com.agilejava.docbkx.maven;
import com.agilejava.docbkx.maven.DocbkxPdfMojo;
import junit.framework.TestCase;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
import org.apache.xml.resolver.Catalog;
import org.apache.xml.resolver.CatalogManager;
import org.apache.xml.resolver.tools.CatalogResolver;
import org.codehaus.plexus.configuration.PlexusConfiguration;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
/**
*
*/
public class AbstractTransformerMojoTest extends AbstractMojoTestCase {
protected void setUp() throws Exception {
// required for mojo lookups to work
super.setUp();
}
public void testNothing()
{
}
public void ZzzztestCreateCatalogManagerNoDep() throws Exception
{
final File pluginXml = new File(getBasedir(), "src/test/resources/catalog/pom-nodep.xml");
//AbstractTransformerMojo mojo = (AbstractTransformerMojo)lookupMojo("generate-pdf", pluginXml);
DocbkxPdfMojo mojo = new DocbkxPdfMojo();
PlexusConfiguration pluginConfiguration = extractPluginConfiguration("docbkx-maven-plugin", pluginXml);
configureMojo(mojo, pluginConfiguration);
//assertNotNull("Unable to find requested mojo", mojo);
mojo.execute();
CatalogManager manager = mojo.createCatalogManager();
//Catalog catalog = manager.getCatalog();
//catalog.parseAllCatalogs();
// should find the docbook XSL or is it needed to add docbook xsl as dependency?
//findDocbookXSLCatalog(catalog);
//printClassPath(mojo);
}
private void printClassPath(AbstractTransformerMojo mojo)
{
ClassLoader loader = mojo.getClass().getClassLoader();
URL[] urls = ((URLClassLoader)loader).getURLs();
for(int i=0; i< urls.length; i++)
{
System.out.println(urls[i].getFile());
}
}
private void findDocbookXSLCatalog(Catalog catalog) throws Exception {
findInCatalog(catalog, "http://docbook.sourceforge.net/release/xsl-ns/current");
}
private void findInCatalog(Catalog catalog, String uri) throws Exception {
try {
String res = catalog.resolveURI(uri);
if(res == null || res.length() == 0)
{
throw new Exception("Unable to resolve URI: "+uri);
}
res = catalog.resolveSystem(uri);
if(res == null || res.length() == 0)
{
throw new Exception("Unable to resolve System: "+uri);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}