* want one apps by value content being used to resolve another. I'll ask for an OBR enhancement.
*/
public synchronized Set<BundleInfo> resolve(AriesApplication app, ResolveConstraint... constraints) throws ResolverException
{
log.trace("resolving {}", app);
Resolver obrResolver = repositoryAdmin.resolver();
ApplicationMetadata appMeta = app.getApplicationMetadata();
String appName = appMeta.getApplicationSymbolicName();
Version appVersion = appMeta.getApplicationVersion();
List<Content> appContent = appMeta.getApplicationContents();
// add a resource describing the requirements of the application metadata.
obrResolver.add(new ApplicationResourceImpl(appName, appVersion, appContent));
URL appRepoURL = null;
try {
Document doc = RepositoryDescriptorGenerator.generateRepositoryDescriptor(appName + "_" + appVersion, app.getBundleInfo());
File f = File.createTempFile(appName + "_" + appVersion, "repository.xml");
TransformerFactory.newInstance().newTransformer().transform(new DOMSource(doc), new StreamResult(f));
appRepoURL = f.toURI().toURL();
repositoryAdmin.addRepository(appRepoURL);
f.delete();
} catch (Exception e) {
throw new ResolverException(e);
}
try {
if (obrResolver.resolve()) {
Set<BundleInfo> result = new HashSet<BundleInfo>();
for (Resource resource: obrResolver.getRequiredResources()) {
BundleInfo bundleInfo = toBundleInfo(resource);
result.add(bundleInfo);
}
for (Resource resource: obrResolver.getOptionalResources()) {
BundleInfo bundleInfo = toBundleInfo(resource);
result.add(bundleInfo);
}
return result;
} else {