Class ResourceBuilder

java.lang.Object
aQute.bnd.osgi.resource.ResourceBuilder
Direct Known Subclasses:
ResourceBuilder.SafeResourceBuilder, SyntheticBuilder

public class ResourceBuilder extends Object
  • Field Details

    • resource

      private final ResourceImpl resource
    • capabilities

      private final Map<String,Set<org.osgi.resource.Capability>> capabilities
    • requirements

      private final Map<String,Set<org.osgi.resource.Requirement>> requirements
    • reporter

      private ReporterAdapter reporter
    • built

      private boolean built
  • Constructor Details

    • ResourceBuilder

      public ResourceBuilder(org.osgi.resource.Resource source)
    • ResourceBuilder

      public ResourceBuilder()
  • Method Details

    • addCapability

      public ResourceBuilder addCapability(org.osgi.resource.Capability capability)
    • addCapability

      public ResourceBuilder addCapability(CapReqBuilder builder)
    • addCapability0

      private org.osgi.resource.Capability addCapability0(CapReqBuilder builder)
    • add

      private static <CR> void add(Map<String,Set<CR>> map, String namespace, CR capreq)
    • flatten

      private static <CR> List<CR> flatten(Map<String,Set<CR>> map)
    • buildCapability

      protected org.osgi.resource.Capability buildCapability(CapReqBuilder builder)
    • addRequirement

      public ResourceBuilder addRequirement(org.osgi.resource.Requirement requirement)
    • addRequirement

      public ResourceBuilder addRequirement(CapReqBuilder builder)
    • addRequirement0

      private org.osgi.resource.Requirement addRequirement0(CapReqBuilder builder)
    • buildRequirement

      protected org.osgi.resource.Requirement buildRequirement(CapReqBuilder builder)
    • build

      public org.osgi.resource.Resource build()
    • getCapabilities

      public List<org.osgi.resource.Capability> getCapabilities()
    • getRequirements

      public List<org.osgi.resource.Requirement> getRequirements()
    • addManifest

      public boolean addManifest(Domain manifest)
      Parse the manifest and turn them into requirements & capabilities
      Parameters:
      manifest - The manifest to parse
    • addExportServices

      public void addExportServices(Parameters exportServices)
    • addImportServices

      public void addImportServices(Parameters importServices)
    • getNativeCode

      public RequirementBuilder getNativeCode(String header)
      Caclulate the requirement from a native code header
      Parameters:
      header - the Bundle-NativeCode header or null
      Returns:
      a Requirement Builder set to the requirements according tot he core spec
    • doOr

      private static void doOr(FilterBuilder sb, String key, String attribute, Attrs attrs)
    • addRequireBundles

      public void addRequireBundles(Parameters requireBundle)
      Add the Require-Bundle header
    • addRequireBundle

      public void addRequireBundle(String bsn, VersionRange range)
    • addRequireBundle

      public void addRequireBundle(String bsn, Attrs attrs)
    • addFragmentHost

      public void addFragmentHost(String bsn, Attrs attrs)
    • addRequireCapabilities

      public void addRequireCapabilities(Parameters required)
    • addRequireCapability

      public void addRequireCapability(String namespace, String name, Attrs attrs)
    • addProvideCapabilities

      public List<org.osgi.resource.Capability> addProvideCapabilities(Parameters capabilities)
    • addProvideCapabilities

      public List<org.osgi.resource.Capability> addProvideCapabilities(String clauses)
    • addProvideCapability

      public org.osgi.resource.Capability addProvideCapability(String namespace, Attrs attrs)
    • addExportPackages

      public void addExportPackages(Parameters exports)
      Add Exported Packages
    • addExportPackages

      public void addExportPackages(Parameters exports, String bundle_symbolic_name, org.osgi.framework.Version bundle_version)
    • addEE

      public void addEE(EE ee)
    • addExportPackage

      public void addExportPackage(String name, Attrs attrs, String bundle_symbolic_name, org.osgi.framework.Version bundle_version)
    • addExportPackage

      public void addExportPackage(String name, Attrs attrs)
    • addImportPackages

      public void addImportPackages(Parameters imports)
      Add imported packages
    • addImportPackage

      public org.osgi.resource.Requirement addImportPackage(String name, Attrs attrs)
    • addExecutionEnvironment

      public void addExecutionEnvironment(EE ee)
    • addAllExecutionEnvironments

      public void addAllExecutionEnvironments(EE ee)
    • copyCapabilities

      public void copyCapabilities(Set<String> ignoreNamespaces, org.osgi.resource.Resource r)
    • addCapabilities

      public void addCapabilities(List<org.osgi.resource.Capability> capabilities)
    • addRequirement

      public void addRequirement(List<org.osgi.resource.Requirement> requirements)
    • addRequirements

      public void addRequirements(List<org.osgi.resource.Requirement> requires)
    • findCapabilities

      public List<org.osgi.resource.Capability> findCapabilities(String ns, String filter)
    • from

      public Map<org.osgi.resource.Capability,org.osgi.resource.Capability> from(org.osgi.resource.Resource bundle)
    • getReporter

      public Reporter getReporter()
    • addContentCapability

      public void addContentCapability(URI uri, String sha256, long length, String mime)
    • addFile

      public boolean addFile(File file, URI uri) throws Exception
      Throws:
      Exception
    • addHashes

      public void addHashes(File file) throws IOException
      Add simple class name hashes to the exported packages. This should not be called before any package capabilities are set since we only hash class names in exports. So no exports, no hash.
      Throws:
      IOException
    • addHashes

      private void addHashes(Hierarchy index, org.osgi.resource.Capability cap, CapReqBuilder builder)
    • safeResourceBuilder

      public ResourceBuilder safeResourceBuilder()
    • addWorkspaceNamespace

      public void addWorkspaceNamespace(String name)
      A repository that implements the WorkspaceRepositoryMarker in the resolver must add a WORKSPACE_NAMESPACE capability to make its clear the resources are from the workspace. Ideally this would not be necessary but we're having two workspace repositories. One for Bndtools where the repository is interactive, the other is for resolving in Gradle, etc.
      Parameters:
      name - the project name
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • memoize

      public static Supplier<org.osgi.resource.Resource> memoize(Jar jar, URI uri, String projectName) throws Exception
      Create a deferred resource builder so that any expensive actions are deferred until the supplier is called to get the resource.
      Parameters:
      jar - a Jar, preferably with checksum calculated, or null
      uri - the uri to use or null (will use file uri as default)
      projectName - if in a workspace, the project name or otherwise null
      Returns:
      a memo for creating the corresponding resource
      Throws:
      Exception