Search in sources :

Example 1 with SimpleIndexer

use of aQute.bnd.osgi.repository.SimpleIndexer in project bndtools by bndtools.

the class GenerateIndexJob method run.

@Override
protected IStatus run(IProgressMonitor monitor) {
    SubMonitor progress = SubMonitor.convert(monitor);
    // Generate index
    try {
        new SimpleIndexer().files(files).base(base).compress(compress).name(name).index(outputFile);
    } catch (Exception e) {
        return new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Error indexing files.", e);
    }
    // Make eclipse aware of the new/changed resource
    final IWorkspace ws = ResourcesPlugin.getWorkspace();
    final IWorkspaceRunnable runnable = new IWorkspaceRunnable() {

        @Override
        public void run(IProgressMonitor monitor) throws CoreException {
            IFile[] outputResources = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocationURI(outputFile.toURI());
            if (outputResources != null) {
                for (IFile resource : outputResources) {
                    resource.refreshLocal(IResource.DEPTH_ZERO, monitor);
                }
            }
        }
    };
    try {
        ws.run(runnable, progress.newChild(1, SubMonitor.SUPPRESS_NONE));
    } catch (CoreException e) {
        return new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Error refreshing workspace files.", e);
    }
    return Status.OK_STATUS;
}
Also used : Status(org.eclipse.core.runtime.Status) IStatus(org.eclipse.core.runtime.IStatus) IWorkspaceRunnable(org.eclipse.core.resources.IWorkspaceRunnable) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) IFile(org.eclipse.core.resources.IFile) CoreException(org.eclipse.core.runtime.CoreException) SimpleIndexer(aQute.bnd.osgi.repository.SimpleIndexer) IWorkspace(org.eclipse.core.resources.IWorkspace) SubMonitor(org.eclipse.core.runtime.SubMonitor) CoreException(org.eclipse.core.runtime.CoreException)

Example 2 with SimpleIndexer

use of aQute.bnd.osgi.repository.SimpleIndexer in project bndtools by bndtools.

the class BuiltBundleIndexer method builtBundles.

@Override
public void builtBundles(final IProject project, IPath[] paths) {
    IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot();
    final URI workspaceRootUri = wsroot.getLocationURI();
    Set<File> files = new HashSet<File>();
    for (IPath path : paths) {
        try {
            IFile ifile = wsroot.getFile(path);
            IPath location = ifile.getLocation();
            if (location != null)
                files.add(location.toFile());
        } catch (IllegalArgumentException e) {
            System.err.println("### Error processing path: " + path);
            e.printStackTrace();
        }
    }
    // Generate the index file
    File indexFile;
    try {
        Project model = Central.getProject(project);
        File target = model.getTarget();
        indexFile = new File(target, INDEX_FILENAME);
        IFile indexPath = wsroot.getFile(Central.toPath(indexFile));
        new SimpleIndexer().files(files).base(project.getLocation().toFile().toURI()).name(project.getName()).analyzer((f, rb) -> {
            Capability cap = new CapabilityBuilder("bndtools.workspace").addAttribute("bndtools.workspace", workspaceRootUri.toString()).addAttribute("project.path", project.getFullPath().toString()).buildSyntheticCapability();
            rb.addCapability(cap);
        }).index(indexFile);
        indexPath.refreshLocal(IResource.DEPTH_ZERO, null);
        if (indexPath.exists())
            indexPath.setDerived(true, null);
    } catch (Exception e) {
        logger.logError(MessageFormat.format("Failed to generate index file for bundles in project {0}.", project.getName()), e);
        return;
    }
    // Parse the index and add to the workspace repository
    try (InputStream input = IO.stream(indexFile)) {
        WorkspaceR5Repository workspaceRepo = Central.getWorkspaceR5Repository();
        workspaceRepo.loadProjectIndex(project, input, project.getLocation().toFile().toURI());
    } catch (Exception e) {
        logger.logError("Failed to update workspace index.", e);
    }
}
Also used : AbstractBuildListener(org.bndtools.build.api.AbstractBuildListener) SimpleIndexer(aQute.bnd.osgi.repository.SimpleIndexer) ResourcesPlugin(org.eclipse.core.resources.ResourcesPlugin) Project(aQute.bnd.build.Project) CapabilityBuilder(aQute.bnd.osgi.resource.CapabilityBuilder) Central(bndtools.central.Central) WorkspaceR5Repository(bndtools.central.WorkspaceR5Repository) Set(java.util.Set) File(java.io.File) MessageFormat(java.text.MessageFormat) IWorkspaceRoot(org.eclipse.core.resources.IWorkspaceRoot) HashSet(java.util.HashSet) Capability(org.osgi.resource.Capability) IProject(org.eclipse.core.resources.IProject) IPath(org.eclipse.core.runtime.IPath) IResource(org.eclipse.core.resources.IResource) IFile(org.eclipse.core.resources.IFile) IO(aQute.lib.io.IO) URI(java.net.URI) Logger(org.bndtools.api.Logger) InputStream(java.io.InputStream) ILogger(org.bndtools.api.ILogger) IFile(org.eclipse.core.resources.IFile) IPath(org.eclipse.core.runtime.IPath) Capability(org.osgi.resource.Capability) InputStream(java.io.InputStream) CapabilityBuilder(aQute.bnd.osgi.resource.CapabilityBuilder) URI(java.net.URI) WorkspaceR5Repository(bndtools.central.WorkspaceR5Repository) Project(aQute.bnd.build.Project) IProject(org.eclipse.core.resources.IProject) IWorkspaceRoot(org.eclipse.core.resources.IWorkspaceRoot) SimpleIndexer(aQute.bnd.osgi.repository.SimpleIndexer) File(java.io.File) IFile(org.eclipse.core.resources.IFile) HashSet(java.util.HashSet)

Aggregations

SimpleIndexer (aQute.bnd.osgi.repository.SimpleIndexer)2 IFile (org.eclipse.core.resources.IFile)2 Project (aQute.bnd.build.Project)1 CapabilityBuilder (aQute.bnd.osgi.resource.CapabilityBuilder)1 IO (aQute.lib.io.IO)1 Central (bndtools.central.Central)1 WorkspaceR5Repository (bndtools.central.WorkspaceR5Repository)1 File (java.io.File)1 InputStream (java.io.InputStream)1 URI (java.net.URI)1 MessageFormat (java.text.MessageFormat)1 HashSet (java.util.HashSet)1 Set (java.util.Set)1 ILogger (org.bndtools.api.ILogger)1 Logger (org.bndtools.api.Logger)1 AbstractBuildListener (org.bndtools.build.api.AbstractBuildListener)1 IProject (org.eclipse.core.resources.IProject)1 IResource (org.eclipse.core.resources.IResource)1 IWorkspace (org.eclipse.core.resources.IWorkspace)1 IWorkspaceRoot (org.eclipse.core.resources.IWorkspaceRoot)1