Search in sources :

Example 1 with ResourceIndexer

use of org.osgi.service.indexer.ResourceIndexer in project bndtools by bndtools.

the class ResourceIndexerTracker method index.

public void index(Set<File> files, OutputStream out, Map<String, String> config) throws Exception {
    ResourceIndexer indexer = doGetIndexer();
    indexer.index(files, out, config);
}
Also used : ResourceIndexer(org.osgi.service.indexer.ResourceIndexer)

Example 2 with ResourceIndexer

use of org.osgi.service.indexer.ResourceIndexer in project bndtools by bndtools.

the class ResourceIndexerTracker method indexFragment.

public void indexFragment(Set<File> files, Writer out, Map<String, String> config) throws Exception {
    ResourceIndexer indexer = doGetIndexer();
    indexer.indexFragment(files, out, config);
}
Also used : ResourceIndexer(org.osgi.service.indexer.ResourceIndexer)

Example 3 with ResourceIndexer

use of org.osgi.service.indexer.ResourceIndexer in project bnd by bndtools.

the class RepoIndexTask method execute.

@Override
public void execute() throws BuildException {
    printCopyright(System.err);
    if (repositoryFile == null)
        throw new BuildException("Output file not specified");
    try {
        // Configure PojoSR
        Map<String, Object> pojoSrConfig = new HashMap<String, Object>();
        pojoSrConfig.put(PojoServiceRegistryFactory.BUNDLE_DESCRIPTORS, new ClasspathScanner());
        // Start PojoSR 'framework'
        Framework framework = new PojoServiceRegistryFactoryImpl().newFramework(pojoSrConfig);
        framework.init();
        framework.start();
        if (knownBundles) {
            registerKnownBundles(framework.getBundleContext());
        }
        // Look for indexer and run index generation
        ServiceTracker<ResourceIndexer, ResourceIndexer> tracker = new ServiceTracker<ResourceIndexer, ResourceIndexer>(framework.getBundleContext(), ResourceIndexer.class, null);
        tracker.open();
        ResourceIndexer index = tracker.waitForService(1000);
        if (index == null)
            throw new IllegalStateException("Timed out waiting for ResourceIndexer service.");
        // Flatten the file sets into a single list
        Set<File> fileList = new LinkedHashSet<File>();
        for (FileSet fileSet : fileSets) {
            DirectoryScanner ds = fileSet.getDirectoryScanner(getProject());
            File basedir = ds.getBasedir();
            String[] files = ds.getIncludedFiles();
            for (int i = 0; i < files.length; i++) fileList.add(new File(basedir, files[i]));
        }
        // Run
        try (OutputStream fos = Files.newOutputStream(repositoryFile.toPath())) {
            index.index(fileList, fos, config);
        }
    } catch (Exception e) {
        throw new BuildException(e);
    }
}
Also used : LinkedHashSet(java.util.LinkedHashSet) FileSet(org.apache.tools.ant.types.FileSet) HashMap(java.util.HashMap) ServiceTracker(org.osgi.util.tracker.ServiceTracker) OutputStream(java.io.OutputStream) ResourceIndexer(org.osgi.service.indexer.ResourceIndexer) IOException(java.io.IOException) BuildException(org.apache.tools.ant.BuildException) ClasspathScanner(de.kalpatec.pojosr.framework.launch.ClasspathScanner) PojoServiceRegistryFactoryImpl(de.kalpatec.pojosr.framework.PojoServiceRegistryFactoryImpl) DirectoryScanner(org.apache.tools.ant.DirectoryScanner) BuildException(org.apache.tools.ant.BuildException) File(java.io.File) Framework(org.osgi.framework.launch.Framework)

Example 4 with ResourceIndexer

use of org.osgi.service.indexer.ResourceIndexer in project bnd by bndtools.

the class Index method main.

/**
	 * Main entry point. See -help for options.
	 * 
	 * @param args Program arguments
	 */
public static void main(String[] args) {
    try {
        // Configure PojoSR
        Map<String, Object> pojoSrConfig = new HashMap<String, Object>();
        pojoSrConfig.put(PojoServiceRegistryFactory.BUNDLE_DESCRIPTORS, new ClasspathScanner());
        // Start PojoSR 'framework'
        Framework framework = new PojoServiceRegistryFactoryImpl().newFramework(pojoSrConfig);
        framework.init();
        framework.start();
        // Look for indexer and run index generation
        ServiceTracker<ResourceIndexer, ResourceIndexer> tracker = new ServiceTracker<ResourceIndexer, ResourceIndexer>(framework.getBundleContext(), ResourceIndexer.class, null);
        tracker.open();
        ResourceIndexer index = tracker.waitForService(1000);
        if (index == null)
            throw new IllegalStateException("Timed out waiting for ResourceIndexer service.");
        // Process arguments
        Set<File> fileList = new LinkedHashSet<File>();
        Map<String, String> config = new HashMap<String, String>();
        File outputFile = processArgs(args, System.err, config, fileList, framework.getBundleContext());
        if (outputFile == null) {
            System.exit(1);
        }
        boolean verbose = Boolean.parseBoolean(config.get(ResourceIndexer.VERBOSE));
        if (verbose) {
            printCopyright(System.err);
        }
        try (@SuppressWarnings("null") OutputStream fos = Files.newOutputStream(outputFile.toPath())) {
            index.index(fileList, fos, config);
        } catch (Exception e) {
            e.printStackTrace();
        }
    } catch (Exception e) {
        e.printStackTrace();
        System.err.println(e.getMessage());
        System.exit(1);
    }
    // We really need to ensure all non-daemon threads -- which may have
    // been started by a bundle -- are terminated.
    System.exit(0);
}
Also used : LinkedHashSet(java.util.LinkedHashSet) HashMap(java.util.HashMap) ServiceTracker(org.osgi.util.tracker.ServiceTracker) OutputStream(java.io.OutputStream) ResourceIndexer(org.osgi.service.indexer.ResourceIndexer) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException) CmdLineException(org.kohsuke.args4j.CmdLineException) ClasspathScanner(de.kalpatec.pojosr.framework.launch.ClasspathScanner) PojoServiceRegistryFactoryImpl(de.kalpatec.pojosr.framework.PojoServiceRegistryFactoryImpl) File(java.io.File) Framework(org.osgi.framework.launch.Framework)

Example 5 with ResourceIndexer

use of org.osgi.service.indexer.ResourceIndexer in project bnd by bndtools.

the class TestOSGiServices method testWhiteboardAnalyzer.

// Test whiteboard registration of Resource Analyzers.
public void testWhiteboardAnalyzer() throws Exception {
    ServiceRegistration<ResourceAnalyzer> reg = context.registerService(ResourceAnalyzer.class, new WibbleAnalyzer(), null);
    ServiceReference<ResourceIndexer> ref = context.getServiceReference(ResourceIndexer.class);
    ResourceIndexer indexer = context.getService(ref);
    StringWriter writer = new StringWriter();
    Map<String, String> config = new HashMap<String, String>();
    config.put(ResourceIndexer.ROOT_URL, tempDir.getAbsoluteFile().toURI().toString());
    indexer.indexFragment(Collections.singleton(copyToTempFile(tempDir, "testdata/01-bsn+version.jar")), writer, config);
    assertEquals(readStream(TestOSGiServices.class.getResourceAsStream("/testdata/fragment-wibble.txt")), writer.toString().trim());
    context.ungetService(ref);
    reg.unregister();
}
Also used : WibbleAnalyzer(org.example.tests.utils.WibbleAnalyzer) ResourceAnalyzer(org.osgi.service.indexer.ResourceAnalyzer) StringWriter(java.io.StringWriter) HashMap(java.util.HashMap) Matchers.anyString(org.mockito.Matchers.anyString) ResourceIndexer(org.osgi.service.indexer.ResourceIndexer)

Aggregations

ResourceIndexer (org.osgi.service.indexer.ResourceIndexer)10 HashMap (java.util.HashMap)8 File (java.io.File)6 StringWriter (java.io.StringWriter)6 Utils.copyToTempFile (org.example.tests.utils.Utils.copyToTempFile)4 Matchers.anyString (org.mockito.Matchers.anyString)4 LinkedHashSet (java.util.LinkedHashSet)3 ResourceAnalyzer (org.osgi.service.indexer.ResourceAnalyzer)3 PojoServiceRegistryFactoryImpl (de.kalpatec.pojosr.framework.PojoServiceRegistryFactoryImpl)2 ClasspathScanner (de.kalpatec.pojosr.framework.launch.ClasspathScanner)2 IOException (java.io.IOException)2 OutputStream (java.io.OutputStream)2 WibbleAnalyzer (org.example.tests.utils.WibbleAnalyzer)2 ServiceReference (org.osgi.framework.ServiceReference)2 Framework (org.osgi.framework.launch.Framework)2 RepoIndex (org.osgi.service.indexer.impl.RepoIndex)2 LogService (org.osgi.service.log.LogService)2 ServiceTracker (org.osgi.util.tracker.ServiceTracker)2 FileNotFoundException (java.io.FileNotFoundException)1 ArrayList (java.util.ArrayList)1