package org.foo.shell; import java.io.PrintStream; import java.util.ArrayList; import java.util.List; import org.osgi.framework.Bundle; import org.osgi.framework.ServiceReference; import org.osgi.service.obr.*; public class ResolverCommand extends BasicCommand { public void exec(String args, PrintStream out, PrintStream err) throws Exception { RepositoryAdmin admin = getRepositoryAdmin(); Resolver resolver = admin.resolver(); Resource[] resources = admin.discoverResources(args); if ((resources != null) && (resources.length > 0)) { resolver.add(resources[0]); if (resolver.resolve()) { for (Resource res : resolver.getRequiredResources()) { out.println("Deploying dependency: " + res.getPresentationName() + " (" + res.getSymbolicName() + ") " + res.getVersion()); } resolver.deploy(true); } else { out.println("Can not resolve " + resources[0].getId() + " reason: "); for (Requirement req : resolver.getUnsatisfiedRequirements()) { out.println("missing " + req.getName() + " " + req.getFilter()); } } } else { out.println("No such resource"); } } private RepositoryAdmin getRepositoryAdmin() { ServiceReference ref = m_context.getServiceReference(RepositoryAdmin.class.getName()); if (ref != null) { return (RepositoryAdmin) m_context.getService(ref); } return null; } }