if (file != null && file.isFile()) {
urls.add(file.getAbsolutePath());
}
}
getLog().debug("Compute classpath: " + urls);
Classpath classpath = new Classpath(urls);
if (isXML()) {
is = new ByteArrayInputStream(m_metadata.getBytes());
} else {
// If the metadata is not set,
// first check if ./src/main/ipojo exists, if so look into it.
if (m_metadata == null) {
File m = new File(m_project.getBasedir(), "src/main/ipojo");
if (m.isDirectory()) {
metadata = m;
getLog().info("Metadata directory : " + metadata.getAbsolutePath());
} else {
// Else check target/classes/metadata.xml
File meta = new File(m_outputDirectory + File.separator + "metadata.xml");
if (!meta.exists()) {
// If it still does not exist, try ./metadata.xml
meta = new File(m_project.getBasedir() + File.separator + "metadata.xml");
}
if (meta.exists()) {
metadata = meta;
getLog().info("Metadata file : " + metadata.getAbsolutePath());
}
// No metadata.
}
} else {
// metadata path set.
File m = new File(m_project.getBasedir(), m_metadata);
if (!m.exists()) {
throw new MojoExecutionException("The metadata file does not exist : " + m.getAbsolutePath());
}
metadata = m;
if (m.isDirectory()) {
getLog().info("Metadata directory : " + metadata.getAbsolutePath());
} else {
getLog().info("Metadata file : " + metadata.getAbsolutePath());
}
}
if (metadata == null) {
// Verify if annotations are ignored
if (m_ignoreAnnotations) {
getLog().info("No metadata file found - ignoring annotations");
return;
} else {
getLog().info("No metadata file found - trying to use only annotations");
}
}
}
// Get input bundle, we use the already create artifact.
File in = null;
if (m_inputClassifier == null) {
in = m_project.getArtifact().getFile();
getLog().info("Input Bundle File : " + in.getAbsolutePath());
if (!in.exists()) {
throw new MojoExecutionException("The specified bundle file does not exist : " + in.getAbsolutePath());
}
} else {
// Look from attached artifacts.
@SuppressWarnings("unchecked")
List<Artifact> attached = m_project.getAttachedArtifacts();
for (int i = 0; in == null && attached != null && i < attached.size(); i++) {
Artifact artifact = attached.get(i);
if (artifact.hasClassifier() && m_inputClassifier.equals(artifact.getClassifier())) {
in = artifact.getFile();
}
}
if (in == null) {
throw new MojoExecutionException("Cannot find the file to manipulate, " +
"no attached artifact with classifier " + m_inputClassifier);
}
getLog().info("Input Bundle File : " + in.getAbsolutePath());
if (!in.exists()) {
throw new MojoExecutionException("The specified bundle file does not exist : " + in.getAbsolutePath());
}
}
File out = new File(m_buildDirectory + File.separator + "_out.jar");
Reporter reporter = new MavenReporter(getLog());
Pojoization pojo = new Pojoization(reporter);
if (m_ignoreAnnotations) {
pojo.disableAnnotationProcessing();
}
if (!m_ignoreEmbeddedXSD) {
pojo.setUseLocalXSD();
}
// Executes the pojoization.
if (is == null) {
if (metadata == null) { // No metadata.
pojo.pojoization(in, out, (File) null, classpath.createClassLoader()); // Only annotations
} else {
pojo.pojoization(in, out, metadata, classpath.createClassLoader()); // Metadata set
}
} else { // In-Pom metadata.
pojo.pojoization(in, out, is, classpath.createClassLoader());
}
for (int i = 0; i < reporter.getWarnings().size(); i++) {
getLog().warn((String) reporter.getWarnings().get(i));
}