Search in sources :

Example 1 with HeadlessBuildManager

use of org.bndtools.headless.build.manager.api.HeadlessBuildManager in project bndtools by bndtools.

the class HeadlessBuildManagerTracker method setup.

@Override
public void setup(Set<String> plugins, boolean cnf, File projectDir, boolean add, Set<String> enabledIgnorePlugins, List<String> warnings) {
    HeadlessBuildManager manager = this.manager.get();
    if (manager == null) {
        return;
    }
    manager.setup(plugins, cnf, projectDir, add, enabledIgnorePlugins, warnings);
}
Also used : HeadlessBuildManager(org.bndtools.headless.build.manager.api.HeadlessBuildManager)

Example 2 with HeadlessBuildManager

use of org.bndtools.headless.build.manager.api.HeadlessBuildManager in project bndtools by bndtools.

the class AbstractNewBndProjectWizard method processGeneratedProject.

/**
     * Modify the newly generated Java project; this method is executed from within a workspace operation so is free to
     * make workspace resource modifications.
     *
     * @throws CoreException
     */
protected void processGeneratedProject(ProjectPaths projectPaths, BndEditModel bndModel, IJavaProject project, IProgressMonitor monitor) throws CoreException {
    SubMonitor progress = SubMonitor.convert(monitor, 3);
    Document document = new Document("");
    bndModel.saveChangesTo(document);
    progress.worked(1);
    ByteArrayInputStream bndInput;
    try {
        bndInput = new ByteArrayInputStream(document.get().getBytes("UTF-8"));
    } catch (UnsupportedEncodingException e) {
        return;
    }
    IFile bndBndFile = project.getProject().getFile(Project.BNDFILE);
    if (bndBndFile.exists()) {
        bndBndFile.setContents(bndInput, false, false, progress.newChild(1));
    }
    BndProject proj = generateBndProject(project.getProject(), progress.newChild(1));
    progress.setWorkRemaining(proj.getResources().size());
    for (Map.Entry<String, BndProjectResource> resource : proj.getResources().entrySet()) {
        importResource(project.getProject(), resource.getKey(), resource.getValue(), progress.newChild(1));
    }
    if (!bndBndFile.exists()) {
        bndBndFile.create(bndInput, false, progress.newChild(1));
    }
    /* Version control ignores */
    VersionControlIgnoresManager versionControlIgnoresManager = Plugin.getDefault().getVersionControlIgnoresManager();
    Set<String> enabledIgnorePlugins = new BndPreferences().getVersionControlIgnoresPluginsEnabled(versionControlIgnoresManager, project, null);
    Map<String, String> sourceOutputLocations = JavaProjectUtils.getSourceOutputLocations(project);
    versionControlIgnoresManager.createProjectIgnores(enabledIgnorePlugins, project.getProject().getLocation().toFile(), sourceOutputLocations, projectPaths.getTargetDir());
    /* Headless build files */
    HeadlessBuildManager headlessBuildManager = Plugin.getDefault().getHeadlessBuildManager();
    Set<String> enabledPlugins = new BndPreferences().getHeadlessBuildPluginsEnabled(headlessBuildManager, null);
    headlessBuildManager.setup(enabledPlugins, false, project.getProject().getLocation().toFile(), true, enabledIgnorePlugins, new LinkedList<String>());
    /* refresh the project; files were created outside of Eclipse API */
    project.getProject().refreshLocal(IResource.DEPTH_INFINITE, progress);
    project.getProject().build(IncrementalProjectBuilder.CLEAN_BUILD, progress);
}
Also used : IFile(org.eclipse.core.resources.IFile) BndPreferences(bndtools.preferences.BndPreferences) VersionControlIgnoresManager(org.bndtools.versioncontrol.ignores.manager.api.VersionControlIgnoresManager) HeadlessBuildManager(org.bndtools.headless.build.manager.api.HeadlessBuildManager) SubMonitor(org.eclipse.core.runtime.SubMonitor) UnsupportedEncodingException(java.io.UnsupportedEncodingException) Document(aQute.bnd.properties.Document) BndProject(bndtools.editor.model.BndProject) ByteArrayInputStream(java.io.ByteArrayInputStream) Map(java.util.Map) BndProjectResource(org.bndtools.api.BndProjectResource)

Example 3 with HeadlessBuildManager

use of org.bndtools.headless.build.manager.api.HeadlessBuildManager in project bndtools by bndtools.

the class ToggleNatureAction method toggleNature.

/**
     * Toggles sample nature on a project
     *
     * @param project
     *            to have sample nature added or removed
     */
private static IStatus toggleNature(IJavaProject project) {
    try {
        /* Version control ignores */
        VersionControlIgnoresManager versionControlIgnoresManager = Plugin.getDefault().getVersionControlIgnoresManager();
        Set<String> enabledIgnorePlugins = new BndPreferences().getVersionControlIgnoresPluginsEnabled(versionControlIgnoresManager, project, null);
        /* Headless build files */
        HeadlessBuildManager headlessBuildManager = Plugin.getDefault().getHeadlessBuildManager();
        Set<String> enabledPlugins = new BndPreferences().getHeadlessBuildPluginsEnabled(headlessBuildManager, null);
        IProject iProject = project.getProject();
        IProjectDescription description = iProject.getDescription();
        String[] natures = description.getNatureIds();
        List<String> headlessBuildWarnings = new LinkedList<>();
        for (int i = 0; i < natures.length; ++i) {
            if (BndtoolsConstants.NATURE_ID.equals(natures[i])) {
                // Remove the nature
                String[] newNatures = new String[natures.length - 1];
                System.arraycopy(natures, 0, newNatures, 0, i);
                System.arraycopy(natures, i + 1, newNatures, i, natures.length - i - 1);
                description.setNatureIds(newNatures);
                iProject.setDescription(description, null);
                /* Remove the headless build files */
                headlessBuildManager.setup(enabledPlugins, false, iProject.getLocation().toFile(), false, enabledIgnorePlugins, headlessBuildWarnings);
                /* refresh the project; files were created outside of Eclipse API */
                iProject.refreshLocal(IResource.DEPTH_INFINITE, null);
                return createStatus("Obsolete build files may remain in the project. Please review the messages below.", Collections.<String>emptyList(), headlessBuildWarnings);
            }
        }
        /* Add the headless build files */
        headlessBuildManager.setup(enabledPlugins, false, iProject.getLocation().toFile(), true, enabledIgnorePlugins, headlessBuildWarnings);
        // Add the nature
        ensureBndBndExists(iProject);
        String[] newNatures = new String[natures.length + 1];
        System.arraycopy(natures, 0, newNatures, 0, natures.length);
        newNatures[natures.length] = BndtoolsConstants.NATURE_ID;
        description.setNatureIds(newNatures);
        iProject.setDescription(description, null);
        /* refresh the project; files were created outside of Eclipse API */
        iProject.refreshLocal(IResource.DEPTH_INFINITE, null);
        return createStatus("Some build files could not be generated. Please review the messages below.", Collections.<String>emptyList(), headlessBuildWarnings);
    } catch (CoreException e) {
        return new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Error occurred while toggling Bnd project nature", e);
    }
}
Also used : MultiStatus(org.eclipse.core.runtime.MultiStatus) IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) BndPreferences(bndtools.preferences.BndPreferences) VersionControlIgnoresManager(org.bndtools.versioncontrol.ignores.manager.api.VersionControlIgnoresManager) HeadlessBuildManager(org.bndtools.headless.build.manager.api.HeadlessBuildManager) IProject(org.eclipse.core.resources.IProject) LinkedList(java.util.LinkedList) CoreException(org.eclipse.core.runtime.CoreException) IProjectDescription(org.eclipse.core.resources.IProjectDescription)

Example 4 with HeadlessBuildManager

use of org.bndtools.headless.build.manager.api.HeadlessBuildManager in project bndtools by bndtools.

the class HeadlessBuildManagerTracker method setup.

@Override
@Deprecated
public void setup(Set<String> plugins, boolean cnf, File projectDir, boolean add, Set<String> enabledIgnorePlugins) {
    HeadlessBuildManager manager = this.manager.get();
    if (manager == null) {
        return;
    }
    manager.setup(plugins, cnf, projectDir, add, enabledIgnorePlugins);
}
Also used : HeadlessBuildManager(org.bndtools.headless.build.manager.api.HeadlessBuildManager)

Example 5 with HeadlessBuildManager

use of org.bndtools.headless.build.manager.api.HeadlessBuildManager in project bndtools by bndtools.

the class HeadlessBuildManagerTracker method addingService.

/*
     * ServiceTracker
     */
@Override
public HeadlessBuildManager addingService(ServiceReference<HeadlessBuildManager> reference) {
    HeadlessBuildManager manager = super.addingService(reference);
    this.managerReference.set(reference);
    this.manager.set(manager);
    return manager;
}
Also used : HeadlessBuildManager(org.bndtools.headless.build.manager.api.HeadlessBuildManager)

Aggregations

HeadlessBuildManager (org.bndtools.headless.build.manager.api.HeadlessBuildManager)5 BndPreferences (bndtools.preferences.BndPreferences)2 VersionControlIgnoresManager (org.bndtools.versioncontrol.ignores.manager.api.VersionControlIgnoresManager)2 Document (aQute.bnd.properties.Document)1 BndProject (bndtools.editor.model.BndProject)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 LinkedList (java.util.LinkedList)1 Map (java.util.Map)1 BndProjectResource (org.bndtools.api.BndProjectResource)1 IFile (org.eclipse.core.resources.IFile)1 IProject (org.eclipse.core.resources.IProject)1 IProjectDescription (org.eclipse.core.resources.IProjectDescription)1 CoreException (org.eclipse.core.runtime.CoreException)1 IStatus (org.eclipse.core.runtime.IStatus)1 MultiStatus (org.eclipse.core.runtime.MultiStatus)1 Status (org.eclipse.core.runtime.Status)1 SubMonitor (org.eclipse.core.runtime.SubMonitor)1