package aQute.bnd.osgi.repository;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.osgi.resource.Capability;
import org.osgi.resource.Requirement;
import org.osgi.resource.Resource;
import org.osgi.service.repository.Repository;
import aQute.bnd.osgi.resource.ResourceUtils;
import aQute.lib.io.IO;
import junit.framework.TestCase;
public class XMLResourceGeneratorTest extends TestCase {
private static final Requirement WILDCARD = ResourceUtils.createWildcardRequirement();
File tmp = IO.getFile("generated/tmp");
{
IO.delete(tmp);
tmp.mkdirs();
}
public void testBasic() throws URISyntaxException, Exception {
Repository repository = getTestRepository();
File location = new File(tmp, "index.xml");
new XMLResourceGenerator().name("test").repository(repository).save(location);
Repository other = getRepository(location.toURI());
Map<Requirement,Collection<Capability>> findProviders = other.findProviders(Collections.singleton(WILDCARD));
Set<Resource> resources = ResourceUtils.getResources(findProviders.get(WILDCARD));
assertEquals(1, resources.size());
Resource r = resources.iterator().next();
assertEquals(
"http://macbadge-updates.s3.amazonaws.com/plugins/name.njbartlett.eclipse.macbadge_1.0.0.201110100042.jar",
ResourceUtils.getContentCapability(r).url().toString());
}
private Repository getTestRepository() throws URISyntaxException, Exception {
return getRepository(XMLResourceGeneratorTest.class.getResource("data/macbadge.xml").toURI());
}
private Repository getRepository(URI uri) throws IOException, Exception {
try (XMLResourceParser p = new XMLResourceParser(uri);) {
List<Resource> parse = p.parse();
assertEquals(1, parse.size());
return new ResourcesRepository(parse);
}
}
}