Search in sources :

Example 1 with SCRDescriptorFailureException

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());
    }
}
Also used : Path(org.apache.tools.ant.types.Path) Options(org.apache.felix.scrplugin.Options) SCRDescriptorFailureException(org.apache.felix.scrplugin.SCRDescriptorFailureException) SCRDescriptorGenerator(org.apache.felix.scrplugin.SCRDescriptorGenerator) Project(org.apache.tools.ant.Project) BuildException(org.apache.tools.ant.BuildException) SCRDescriptorException(org.apache.felix.scrplugin.SCRDescriptorException) Location(org.apache.tools.ant.Location)

Example 2 with SCRDescriptorFailureException

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);
    }
}
Also used : Options(org.apache.felix.scrplugin.Options) SCRDescriptorFailureException(org.apache.felix.scrplugin.SCRDescriptorFailureException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) MojoFailureException(org.apache.maven.plugin.MojoFailureException) SCRDescriptorGenerator(org.apache.felix.scrplugin.SCRDescriptorGenerator) Result(org.apache.felix.scrplugin.Result) Project(org.apache.felix.scrplugin.Project) MavenProject(org.apache.maven.project.MavenProject) URLClassLoader(java.net.URLClassLoader) SCRDescriptorException(org.apache.felix.scrplugin.SCRDescriptorException)

Example 3 with SCRDescriptorFailureException

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;
}
Also used : SCRDescriptorFailureException(org.apache.felix.scrplugin.SCRDescriptorFailureException) ArrayList(java.util.ArrayList) ClassDescription(org.apache.felix.scrplugin.description.ClassDescription) Source(org.apache.felix.scrplugin.Source) SCRDescriptorException(org.apache.felix.scrplugin.SCRDescriptorException)

Aggregations

SCRDescriptorException (org.apache.felix.scrplugin.SCRDescriptorException)3 SCRDescriptorFailureException (org.apache.felix.scrplugin.SCRDescriptorFailureException)3 Options (org.apache.felix.scrplugin.Options)2 SCRDescriptorGenerator (org.apache.felix.scrplugin.SCRDescriptorGenerator)2 URLClassLoader (java.net.URLClassLoader)1 ArrayList (java.util.ArrayList)1 Project (org.apache.felix.scrplugin.Project)1 Result (org.apache.felix.scrplugin.Result)1 Source (org.apache.felix.scrplugin.Source)1 ClassDescription (org.apache.felix.scrplugin.description.ClassDescription)1 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)1 MojoFailureException (org.apache.maven.plugin.MojoFailureException)1 MavenProject (org.apache.maven.project.MavenProject)1 BuildException (org.apache.tools.ant.BuildException)1 Location (org.apache.tools.ant.Location)1 Project (org.apache.tools.ant.Project)1 Path (org.apache.tools.ant.types.Path)1