Package aQute.bnd.osgi.resource
Class ResourceBuilder
- java.lang.Object
-
- aQute.bnd.osgi.resource.ResourceBuilder
-
- Direct Known Subclasses:
ResourceBuilder.SafeResourceBuilder
,SyntheticBuilder
public class ResourceBuilder extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
ResourceBuilder.NamespaceComparator
We order the wiring namespaces ahead of the other namespaces.private class
ResourceBuilder.SafeResourceBuilder
-
Field Summary
Fields Modifier and Type Field Description private boolean
built
private java.util.Map<java.lang.String,java.util.Set<org.osgi.resource.Capability>>
capabilities
private ReporterAdapter
reporter
private java.util.Map<java.lang.String,java.util.Set<org.osgi.resource.Requirement>>
requirements
private ResourceImpl
resource
-
Constructor Summary
Constructors Constructor Description ResourceBuilder()
ResourceBuilder(org.osgi.resource.Resource source)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static <CR> void
add(java.util.Map<java.lang.String,java.util.Set<CR>> map, java.lang.String namespace, CR capreq)
void
addAllExecutionEnvironments(EE ee)
void
addCapabilities(java.util.List<org.osgi.resource.Capability> capabilities)
ResourceBuilder
addCapability(CapReqBuilder builder)
ResourceBuilder
addCapability(org.osgi.resource.Capability capability)
private org.osgi.resource.Capability
addCapability0(CapReqBuilder builder)
void
addContentCapability(java.net.URI uri, java.lang.String sha256, long length, java.lang.String mime)
void
addEE(EE ee)
void
addExecutionEnvironment(EE ee)
void
addExportPackage(java.lang.String name, Attrs attrs)
void
addExportPackage(java.lang.String name, Attrs attrs, java.lang.String bundle_symbolic_name, org.osgi.framework.Version bundle_version)
void
addExportPackages(Parameters exports)
Add Exported Packagesvoid
addExportPackages(Parameters exports, java.lang.String bundle_symbolic_name, org.osgi.framework.Version bundle_version)
void
addExportServices(Parameters exportServices)
boolean
addFile(java.io.File file, java.net.URI uri)
void
addFragmentHost(java.lang.String bsn, Attrs attrs)
private void
addHashes(Hierarchy index, org.osgi.resource.Capability cap, CapReqBuilder builder)
void
addHashes(java.io.File file)
Add simple class name hashes to the exported packages.private void
addHashes(java.util.Map<java.lang.String,java.util.List<java.lang.Long>> hashes)
org.osgi.resource.Requirement
addImportPackage(java.lang.String name, Attrs attrs)
void
addImportPackages(Parameters imports)
Add imported packagesvoid
addImportServices(Parameters importServices)
boolean
addManifest(Domain manifest)
Parse the manifest and turn them into requirements & capabilitiesjava.util.List<org.osgi.resource.Capability>
addProvideCapabilities(Parameters capabilities)
java.util.List<org.osgi.resource.Capability>
addProvideCapabilities(java.lang.String clauses)
org.osgi.resource.Capability
addProvideCapability(java.lang.String namespace, Attrs attrs)
void
addRequireBundle(java.lang.String bsn, Attrs attrs)
void
addRequireBundle(java.lang.String bsn, VersionRange range)
void
addRequireBundles(Parameters requireBundle)
Add the Require-Bundle headervoid
addRequireCapabilities(Parameters required)
void
addRequireCapability(java.lang.String namespace, java.lang.String name, Attrs attrs)
ResourceBuilder
addRequirement(CapReqBuilder builder)
void
addRequirement(java.util.List<org.osgi.resource.Requirement> requirements)
ResourceBuilder
addRequirement(org.osgi.resource.Requirement requirement)
private org.osgi.resource.Requirement
addRequirement0(CapReqBuilder builder)
void
addRequirements(java.util.List<org.osgi.resource.Requirement> requires)
void
addWorkspaceNamespace(java.lang.String name)
A repository that implements theWorkspaceRepositoryMarker
in the resolver must add a WORKSPACE_NAMESPACE capability to make its clear the resources are from the workspace.org.osgi.resource.Resource
build()
protected org.osgi.resource.Capability
buildCapability(CapReqBuilder builder)
protected org.osgi.resource.Requirement
buildRequirement(CapReqBuilder builder)
void
copyCapabilities(java.util.Set<java.lang.String> ignoreNamespaces, org.osgi.resource.Resource r)
private static void
doOr(FilterBuilder sb, java.lang.String key, java.lang.String attribute, Attrs attrs)
java.util.List<org.osgi.resource.Capability>
findCapabilities(java.lang.String ns, java.lang.String filter)
private static <CR> java.util.List<CR>
flatten(java.util.Map<java.lang.String,java.util.Set<CR>> map)
java.util.Map<org.osgi.resource.Capability,org.osgi.resource.Capability>
from(org.osgi.resource.Resource bundle)
java.util.List<org.osgi.resource.Capability>
getCapabilities()
RequirementBuilder
getNativeCode(java.lang.String header)
Caclulate the requirement from a native code headerReporter
getReporter()
java.util.List<org.osgi.resource.Requirement>
getRequirements()
static java.util.function.Supplier<org.osgi.resource.Resource>
memoize(Jar jar, java.net.URI uri, java.lang.String projectName)
Create a deferred resource builder so that any expensive actions are deferred until the supplier is called to get the resource.ResourceBuilder
safeResourceBuilder()
java.lang.String
toString()
-
-
-
Field Detail
-
resource
private final ResourceImpl resource
-
capabilities
private final java.util.Map<java.lang.String,java.util.Set<org.osgi.resource.Capability>> capabilities
-
requirements
private final java.util.Map<java.lang.String,java.util.Set<org.osgi.resource.Requirement>> requirements
-
reporter
private ReporterAdapter reporter
-
built
private boolean built
-
-
Method Detail
-
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(java.util.Map<java.lang.String,java.util.Set<CR>> map, java.lang.String namespace, CR capreq)
-
flatten
private static <CR> java.util.List<CR> flatten(java.util.Map<java.lang.String,java.util.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 java.util.List<org.osgi.resource.Capability> getCapabilities()
-
getRequirements
public java.util.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(java.lang.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, java.lang.String key, java.lang.String attribute, Attrs attrs)
-
addRequireBundles
public void addRequireBundles(Parameters requireBundle)
Add the Require-Bundle header
-
addRequireBundle
public void addRequireBundle(java.lang.String bsn, VersionRange range)
-
addRequireBundle
public void addRequireBundle(java.lang.String bsn, Attrs attrs)
-
addFragmentHost
public void addFragmentHost(java.lang.String bsn, Attrs attrs)
-
addRequireCapabilities
public void addRequireCapabilities(Parameters required)
-
addRequireCapability
public void addRequireCapability(java.lang.String namespace, java.lang.String name, Attrs attrs)
-
addProvideCapabilities
public java.util.List<org.osgi.resource.Capability> addProvideCapabilities(Parameters capabilities)
-
addProvideCapabilities
public java.util.List<org.osgi.resource.Capability> addProvideCapabilities(java.lang.String clauses)
-
addProvideCapability
public org.osgi.resource.Capability addProvideCapability(java.lang.String namespace, Attrs attrs)
-
addExportPackages
public void addExportPackages(Parameters exports)
Add Exported Packages
-
addExportPackages
public void addExportPackages(Parameters exports, java.lang.String bundle_symbolic_name, org.osgi.framework.Version bundle_version)
-
addEE
public void addEE(EE ee)
-
addExportPackage
public void addExportPackage(java.lang.String name, Attrs attrs, java.lang.String bundle_symbolic_name, org.osgi.framework.Version bundle_version)
-
addExportPackage
public void addExportPackage(java.lang.String name, Attrs attrs)
-
addImportPackages
public void addImportPackages(Parameters imports)
Add imported packages
-
addImportPackage
public org.osgi.resource.Requirement addImportPackage(java.lang.String name, Attrs attrs)
-
addExecutionEnvironment
public void addExecutionEnvironment(EE ee)
-
addAllExecutionEnvironments
public void addAllExecutionEnvironments(EE ee)
-
copyCapabilities
public void copyCapabilities(java.util.Set<java.lang.String> ignoreNamespaces, org.osgi.resource.Resource r)
-
addCapabilities
public void addCapabilities(java.util.List<org.osgi.resource.Capability> capabilities)
-
addRequirement
public void addRequirement(java.util.List<org.osgi.resource.Requirement> requirements)
-
addRequirements
public void addRequirements(java.util.List<org.osgi.resource.Requirement> requires)
-
findCapabilities
public java.util.List<org.osgi.resource.Capability> findCapabilities(java.lang.String ns, java.lang.String filter)
-
from
public java.util.Map<org.osgi.resource.Capability,org.osgi.resource.Capability> from(org.osgi.resource.Resource bundle)
-
getReporter
public Reporter getReporter()
-
addContentCapability
public void addContentCapability(java.net.URI uri, java.lang.String sha256, long length, java.lang.String mime)
-
addFile
public boolean addFile(java.io.File file, java.net.URI uri) throws java.lang.Exception
- Throws:
java.lang.Exception
-
addHashes
public void addHashes(java.io.File file) throws java.io.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:
java.io.IOException
-
addHashes
private void addHashes(java.util.Map<java.lang.String,java.util.List<java.lang.Long>> hashes) throws java.io.IOException
- Throws:
java.io.IOException
-
addHashes
private void addHashes(Hierarchy index, org.osgi.resource.Capability cap, CapReqBuilder builder)
-
safeResourceBuilder
public ResourceBuilder safeResourceBuilder()
-
addWorkspaceNamespace
public void addWorkspaceNamespace(java.lang.String name)
A repository that implements theWorkspaceRepositoryMarker
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 java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
memoize
public static java.util.function.Supplier<org.osgi.resource.Resource> memoize(Jar jar, java.net.URI uri, java.lang.String projectName) throws java.lang.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 nulluri
- 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:
java.lang.Exception
-
-