use of org.apache.felix.scrplugin.SCRDescriptorFailureException in project felix by apache.
the class SCRDescriptorTask method execute.
@Override
public void execute() throws BuildException {
// ensure we know the source
if (getImplicitFileSet().getDir() == null) {
throw new BuildException("srcdir attribute must be set!", getLocation());
}
// while debugging
final org.apache.felix.scrplugin.Log scrLog = new AntLog(this);
scrLog.debug("SCRDescriptorTask Configuration");
scrLog.debug(" implicitFileset: " + getImplicitFileSet());
scrLog.debug(" outputDirectory: " + destdir);
scrLog.debug(" classpath: " + classpath);
scrLog.debug(" generateAccessors: " + generateAccessors);
scrLog.debug(" strictMode: " + strictMode);
scrLog.debug(" specVersion: " + specVersion);
try {
final Path classPath = createClasspath();
final org.apache.felix.scrplugin.Project project = new org.apache.felix.scrplugin.Project();
project.setClassLoader(getClassLoader(this.getClass().getClassLoader()));
project.setDependencies(getDependencies(classPath));
project.setSources(getSourceFiles(getImplicitFileSet()));
project.setClassesDirectory(destdir.getAbsolutePath());
// create options
final Options options = new Options();
options.setOutputDirectory(destdir);
options.setGenerateAccessors(generateAccessors);
options.setStrictMode(strictMode);
options.setProperties(new HashMap<String, String>());
options.setSpecVersion(SpecVersion.fromName(specVersion));
if (specVersion != null && options.getSpecVersion() == null) {
throw new BuildException("Unknown spec version specified: " + specVersion);
}
final SCRDescriptorGenerator generator = new SCRDescriptorGenerator(scrLog);
// setup from plugin configuration
generator.setOptions(options);
generator.setProject(project);
generator.execute();
} catch (final SCRDescriptorException sde) {
if (sde.getSourceLocation() != null) {
final Location loc = new Location(sde.getSourceLocation(), -1, 0);
throw new BuildException(sde.getMessage(), sde.getCause(), loc);
}
throw new BuildException(sde.getMessage(), sde.getCause());
} catch (SCRDescriptorFailureException sdfe) {
throw new BuildException(sdfe.getMessage(), sdfe.getCause());
}
}
use of org.apache.felix.scrplugin.SCRDescriptorFailureException in project felix by apache.
the class SCRDescriptorMojo method execute.
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
final String projectType = project.getArtifact().getType();
// ignore unsupported project types, useful when bundleplugin is configured in parent pom
if (!supportedProjectTypes.contains(projectType)) {
getLog().debug("Ignoring project type " + projectType + " - supportedProjectTypes = " + supportedProjectTypes);
return;
}
// create the log for the generator
final org.apache.felix.scrplugin.Log scrLog = new MavenLog(getLog(), buildContext);
// create project
final MavenProjectScanner scanner = new MavenProjectScanner(this.buildContext, this.project, this.sourceIncludes, this.sourceExcludes, this.scanClasses, scrLog);
final Project project = new Project();
// create the class loader
project.setClassLoader(new URLClassLoader(getClassPath(), this.getClass().getClassLoader()));
project.setDependencies(scanner.getDependencies());
project.setSources(scanner.getSources());
project.setClassesDirectory(this.project.getBuild().getOutputDirectory());
// create options
final Options options = new Options();
options.setOutputDirectory(outputDirectory);
options.setGenerateAccessors(generateAccessors);
options.setStrictMode(strictMode);
options.setProperties(properties);
options.setSpecVersion(SpecVersion.fromName(specVersion));
options.setIncremental(this.buildContext.isIncremental());
options.setSkipVolatileCheck(this.skipVolatileCheck);
if (specVersion != null && options.getSpecVersion() == null) {
throw new MojoExecutionException("Unknown spec version specified: " + specVersion);
}
try {
final SCRDescriptorGenerator generator = new SCRDescriptorGenerator(scrLog);
// setup from plugin configuration
generator.setOptions(options);
generator.setProject(project);
this.removePossiblyStaleFiles(scanner.getSources(), options);
final Result result = generator.execute();
this.setServiceComponentHeader(options);
if (!this.updateProjectResources()) {
this.setIncludeResourceHeader(options);
}
this.cleanUpDeletedSources(scanner.getDeletedSources(), options);
this.refreshMessages(result.getProcessedSourceFiles());
this.updateBuildContext(result);
} catch (final SCRDescriptorException sde) {
throw new MojoExecutionException(sde.getSourceLocation() + " : " + sde.getMessage(), sde);
} catch (final SCRDescriptorFailureException sdfe) {
throw (MojoFailureException) new MojoFailureException(sdfe.getMessage()).initCause(sdfe);
}
}
use of org.apache.felix.scrplugin.SCRDescriptorFailureException in project felix by apache.
the class ClassScanner method scanSources.
/**
* Scan all source class files for annotations and process them.
*/
public List<ClassDescription> scanSources() throws SCRDescriptorFailureException, SCRDescriptorException {
final List<ClassDescription> result = new ArrayList<ClassDescription>();
for (final Source src : project.getSources()) {
if (src.getFile().getName().equals("package-info.java")) {
log.debug("Skipping file " + src.getClassName());
continue;
}
log.debug("Scanning class " + src.getClassName());
try {
// load the class
final Class<?> annotatedClass = project.getClassLoader().loadClass(src.getClassName());
this.process(annotatedClass, src, result);
} catch (final SCRDescriptorFailureException e) {
throw e;
} catch (final SCRDescriptorException e) {
throw e;
} catch (final ClassNotFoundException e) {
log.warn("ClassNotFoundException: " + e.getMessage());
} catch (final NoClassDefFoundError e) {
log.warn("NoClassDefFoundError: " + e.getMessage());
} catch (final Throwable t) {
throw new SCRDescriptorException("Unable to load compiled class: " + src.getClassName(), src.getFile().toString(), t);
}
}
return result;
}
Aggregations