synchronized Bundle deploy(Resource resource) {
final Resolver resolver = getRepositoryAdmin().resolver(getRepositories());
boolean resolved = resolve(resolver, resource);
if (resolved) {
final int flags = !deployOptionalRequirements ? Resolver.NO_OPTIONAL_RESOURCES : 0;
resolver.deploy(flags);
return getBundle(resource);
} else {
Reason[] reqs = resolver.getUnsatisfiedRequirements();
logger.logp(Level.WARNING, "ObrHandler", "deploy",
"Unable to satisfy the requirements: {0}", new Object[]{Arrays.toString(reqs)});