@Test
  public void testRequireBundleWithFilter() throws Exception {

    XRequirementBuilder builder = XRequirementBuilder.create(BundleNamespace.BUNDLE_NAMESPACE);
    builder
        .getDirectives()
        .put(BundleNamespace.REQUIREMENT_FILTER_DIRECTIVE, "(osgi.wiring.bundle=org.acme.pool)");
    XRequirement req = builder.getRequirement();

    Collection<Capability> providers = storage.findProviders(req);
    Assert.assertNotNull("Providers not null", providers);
    Assert.assertEquals("One provider", 1, providers.size());
  }
  @Test
  public void testRepositoryService() throws Exception {

    Repository repo = getRepository();
    MavenCoordinates coordinates =
        MavenCoordinates.parse("org.apache.felix:org.apache.felix.eventadmin:1.2.6");
    Requirement req = XRequirementBuilder.createArtifactRequirement(coordinates);
    assertNotNull("Requirement not null", req);

    Collection<Capability> caps = repo.findProviders(Collections.singleton(req)).get(req);
    assertEquals("Capability not null", 1, caps.size());

    XIdentityCapability xcap = (XIdentityCapability) caps.iterator().next();
    assertEquals("org.apache.felix.eventadmin", xcap.getSymbolicName());
    InputStream content = ((XResource) xcap.getResource()).getContent();
    try {
      Bundle bundle = context.installBundle(xcap.getSymbolicName(), content);
      try {
        bundle.start();
        Assert.assertEquals(Bundle.ACTIVE, bundle.getState());
        ServiceReference sref = context.getServiceReference("org.osgi.service.event.EventAdmin");
        assertNotNull("EventAdmin service not null", sref);
      } finally {
        bundle.uninstall();
      }
    } finally {
      content.close();
    }
  }
  @Test
  public void testRequireBundle() throws Exception {

    RepositoryReader reader = storage.getRepositoryReader();
    XResource resource = reader.nextResource();
    Assert.assertNotNull("Resource not null", resource);
    Assert.assertNull("One resource only", reader.nextResource());

    XRequirementBuilder builder =
        XRequirementBuilder.create(BundleNamespace.BUNDLE_NAMESPACE, "org.acme.pool");
    XRequirement req = builder.getRequirement();

    Collection<Capability> providers = storage.findProviders(req);
    Assert.assertNotNull("Providers not null", providers);
    Assert.assertEquals("One provider", 1, providers.size());

    XCapability cap = (XCapability) providers.iterator().next();
    Assert.assertNotNull("Capability not null", cap);
    Assert.assertSame(resource, cap.getResource());
  }