private void parseJar(ResourcesRepository repo, URI jar, File go) throws IOException, NoSuchAlgorithmException, Exception { SHA256.digest(go); ResourceBuilder rb = new ResourceBuilder(); rb.addFile(go, jar); Resource resource = rb.build(); repo.add(resource); }
@Override public ResourceBuilder addCapability(Capability capability) throws Exception { return ResourceBuilder.this.addCapability(capability); }
public void addRequirements(List<Requirement> requires) throws Exception { for (Requirement req : requires) { addRequirement(req); } }
ResourceBuilder builder = new ResourceBuilder(); resource = builder. url("https://host/api"). build(Resource.class); client = resource.get();
public void setInputRequirements(Requirement... reqs) throws Exception { ResourceBuilder rb = new ResourceBuilder(); for (Requirement r : reqs) { rb.addRequirement(r); } setInputResource(rb.build()); }
public void addAllExecutionEnvironments(EE ee) throws Exception { addExportPackages(ee.getPackages()); addExecutionEnvironment(ee); for (EE compatibleEE : ee.getCompatible()) { addExecutionEnvironment(compatibleEE); } }
addCapability(identity.buildCapability()); provideBundle.addAttribute(BundleNamespace.BUNDLE_NAMESPACE, bsn.getKey()); provideBundle.addAttribute(AbstractWiringNamespace.CAPABILITY_BUNDLE_VERSION_ATTRIBUTE, version); addCapability(provideBundle.buildCapability()); addImportServices(importServices); addExportServices(exportServices); addRequireBundles(requireBundle); addFragmentHost(fragmentHost.getKey(), fragmentHost.getValue()); } else { addFragmentHostCap(bsn.getKey(), version); addExportPackages(manifest.getExportPackage()); addImportPackages(manifest.getImportPackage()); addProvideCapabilities(manifest.getProvideCapability()); addRequireCapabilities(manifest.getRequireCapability()); addRequirement(getNativeCode(manifest.getBundleNative()));
private Promise<Resource> parseFile(File file) { Promise<Resource> resource = promiseFactory.submit(() -> { if (!file.isFile()) { return null; } ResourceBuilder rb = new ResourceBuilder(); try (JarFile jar = new JarFile(file)) { Domain manifest = Domain.domain(jar.getManifest()); boolean hasIdentity = rb.addManifest(manifest); if (!hasIdentity) { return null; } } catch (Exception f) { return null; } logger.debug("{}: parsing {}", getName(), file); Attrs attrs = new Attrs(); attrs.put(ContentNamespace.CAPABILITY_URL_ATTRIBUTE, file.toURI() .toString()); attrs.putTyped(ContentNamespace.CAPABILITY_SIZE_ATTRIBUTE, file.length()); attrs.put(ContentNamespace.CONTENT_NAMESPACE, SHA256.digest(file) .asHex()); rb.addCapability(CapReqBuilder.createCapReqBuilder(ContentNamespace.CONTENT_NAMESPACE, attrs)); return rb.build(); }); if (logger.isDebugEnabled()) { resource.onFailure(failure -> logger.debug("{}: failed to parse {}", getName(), file, failure)); } return resource; }
.async(a.uri) .map(file -> { ResourceBuilder rb = new ResourceBuilder(); rb.addFile(file, a.uri); if (a.md5 != null) { rb.addCapability( new CapabilityBuilder(P2_CAPABILITY_NAMESPACE).addAttribute(MD5_ATTRIBUTE, a.md5)); return rb.build(); }) .recover(failed -> {
/** * Add a path to the system resource. This is done by the bnd launcher for * -runpath and it is also used for -distro. */ @Override public void loadPath(ResourceBuilder system, String path, String what) throws Exception { if (project != null) { List<Container> containers = Container.flatten(project.getBundles(Strategy.HIGHEST, path, what)); for (Container c : containers) { Manifest manifest = c.getManifest(); if (manifest != null) { ResourceBuilder rb = new ResourceBuilder(); rb.addManifest(Domain.domain(manifest)); addSystemResource(system, rb.build()); } } } else { super.loadPath(system, path, what); } }
Resource constructInputRequirements() throws Exception { ResourceBuilder resBuilder = new ResourceBuilder(); CapReqBuilder identity = new CapReqBuilder(IdentityNamespace.IDENTITY_NAMESPACE) .addAttribute(IdentityNamespace.IDENTITY_NAMESPACE, IDENTITY_INITIAL_RESOURCE); resBuilder.addCapability(identity); Parameters inputRequirements = new Parameters(properties.mergeProperties(Constants.RUNREQUIRES), project); if (inputRequirements != null && !inputRequirements.isEmpty()) { List<Requirement> requires = CapReqBuilder.getRequirementsFrom(inputRequirements); resBuilder.addRequirements(requires); } return resBuilder.build(); }
private void parseResource(List<Resource> resources) throws Exception { ResourceBuilder resourceBuilder = new ResourceBuilder(); next(); while (reader.isStartElement()) { parseCapabilityOrRequirement(resourceBuilder); } Resource resource = resourceBuilder.build(); resources.add(resource); tagEnd(TAG_RESOURCE); }
ResourceBuilder system = new ResourceBuilder(); EE ee = (tmp != null) ? tmp : EE.JavaSE_1_6; system.addAllExecutionEnvironments(ee); system.addExportPackages(systemPackages); system.addProvideCapabilities(systemCapabilities); setSystemResource(system.build()); } catch (Exception e) { log.log(LogService.LOG_ERROR, e.getMessage(), e);
private Resource indexFile(File file) { try { ResourceBuilder resourceBuilder = new ResourceBuilder(); if (resourceBuilder.addFile(file, relativize(file))) { if (analyzer != null) { analyzer.analyzeFile(file, resourceBuilder.safeResourceBuilder()); } return resourceBuilder.build(); } } catch (Exception e) { reporter.exception(e, "Could not index file %s", file); } return null; }
private void executeAugmentOperations(Map<Requirement, Collection<Capability>> allBundles, Requirement bundleRequirement, List<Augment> augments) throws Exception { Collection<Capability> matchedBundleCapabilities = allBundles.get(bundleRequirement); Collection<Resource> bundles = ResourceUtils.getResources(matchedBundleCapabilities); for (Resource bundle : bundles) { ResourceBuilder wrappedBundleBuilder = new ResourceBuilder(); Map<Capability, Capability> originalToWrapper = wrappedBundleBuilder.from(bundle); wrapped.putAll(originalToWrapper); List<Augment> bundleAugments = augments; for (Augment augment : bundleAugments) { List<Capability> addedCapabilities = augment(augment, wrappedBundleBuilder); augmentedCapabilities.addAll(addedCapabilities); } Resource wrappedBundle = wrappedBundleBuilder.build(); augmentedBundles.add(wrappedBundle); } }
public void analyzeResource(Jar resource, ResourceBuilder rb) throws Exception { Resource fwkFactorySvc = resource.getResource(SERVICE_FRAMEWORK_FACTORY); if (fwkFactorySvc != null) { CapReqBuilder builder = new CapReqBuilder(Namespaces.NS_CONTRACT).addAttribute(Namespaces.NS_CONTRACT, Namespaces.CONTRACT_OSGI_FRAMEWORK); Version specVersion = null; StringBuilder uses = new StringBuilder(); boolean firstPkg = true; for (Capability cap : rb.getCapabilities()) { if (Namespaces.NS_WIRING_PACKAGE.equals(cap.getNamespace())) { // Add to the uses directive if (!firstPkg) uses.append(','); String pkgName = (String) cap.getAttributes().get(Namespaces.NS_WIRING_PACKAGE); uses.append(pkgName); firstPkg = false; // If it's org.osgi.framework, get the package version and // map to OSGi spec version if (FRAMEWORK_PACKAGE.equals(pkgName)) { Version frameworkPkgVersion = (Version) cap.getAttributes().get(Namespaces.ATTR_VERSION); specVersion = mapFrameworkPackageVersion(frameworkPkgVersion); } } } if (specVersion != null) builder.addAttribute(Namespaces.ATTR_VERSION, specVersion); builder.addDirective(Namespaces.DIRECTIVE_USES, uses.toString()); rb.addCapability(builder); } }
system.addCapabilities(framework.getCapabilities(null)); cap.addAttribute(cap.getNamespace(), Constants.SYSTEM_BUNDLE_SYMBOLICNAME); cap.addAttribute(ResourceUtils.getVersionAttributeForNamespace(cap.getNamespace()), frameworkVersion); system.addCapability(cap); system.addCapability(cap); cap.addAttribute(ResourceUtils.getVersionAttributeForNamespace(cap.getNamespace()), frameworkVersion); cap.addAttribute(IdentityNamespace.CAPABILITY_TYPE_ATTRIBUTE, IdentityNamespace.TYPE_BUNDLE); system.addCapability(cap);
public ResourceBuilder(Resource source) throws Exception { addCapabilities(source.getCapabilities(null)); addRequirements(source.getRequirements(null)); }
public boolean addFile(File file, URI uri) throws Exception { if (uri == null) uri = file.toURI(); Domain manifest = Domain.domain(file); String mime = BUNDLE_MIME_TYPE; boolean hasIdentity = false; if (manifest != null) hasIdentity = addManifest(manifest); else mime = JAR_MIME_TYPE; String sha256 = SHA256.digest(file) .asHex(); addContentCapability(uri, sha256, file.length(), mime); return hasIdentity; }