You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2010/07/12 18:44:01 UTC
svn commit: r963341 - in /felix/sandbox/rickhall/vb2: composite/pom.xml
composite/src/main/java/org/apache/felix/sandbox/composite/Manager.java
framework-vb/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java
Author: rickhall
Date: Mon Jul 12 16:44:01 2010
New Revision: 963341
URL: http://svn.apache.org/viewvc?rev=963341&view=rev
Log:
Add support for generic capabilities/requirements.
Modified:
felix/sandbox/rickhall/vb2/composite/pom.xml
felix/sandbox/rickhall/vb2/composite/src/main/java/org/apache/felix/sandbox/composite/Manager.java
felix/sandbox/rickhall/vb2/framework-vb/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java
Modified: felix/sandbox/rickhall/vb2/composite/pom.xml
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/vb2/composite/pom.xml?rev=963341&r1=963340&r2=963341&view=diff
==============================================================================
--- felix/sandbox/rickhall/vb2/composite/pom.xml (original)
+++ felix/sandbox/rickhall/vb2/composite/pom.xml Mon Jul 12 16:44:01 2010
@@ -54,6 +54,7 @@
<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
<Bundle-Activator>org.apache.felix.sandbox.composite.Activator</Bundle-Activator>
<Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
+ <Provide-Capability>manager; class=org.apache.felix.sandbox.composite.Manager</Provide-Capability>
</instructions>
</configuration>
</plugin>
Modified: felix/sandbox/rickhall/vb2/composite/src/main/java/org/apache/felix/sandbox/composite/Manager.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/vb2/composite/src/main/java/org/apache/felix/sandbox/composite/Manager.java?rev=963341&r1=963340&r2=963341&view=diff
==============================================================================
--- felix/sandbox/rickhall/vb2/composite/src/main/java/org/apache/felix/sandbox/composite/Manager.java (original)
+++ felix/sandbox/rickhall/vb2/composite/src/main/java/org/apache/felix/sandbox/composite/Manager.java Mon Jul 12 16:44:01 2010
@@ -86,6 +86,9 @@ public class Manager
"Bundle-Activator",
"org.apache.felix.sandbox.composite.activator.Activator");
headers.setProperty(MANAGER_HEADER, MANAGER_VALUE);
+ headers.setProperty(
+ "Require-Capability",
+ "manager; class=org.apache.felix.sandbox.composite.Manager");
}
finally
{
Modified: felix/sandbox/rickhall/vb2/framework-vb/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/vb2/framework-vb/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java?rev=963341&r1=963340&r2=963341&view=diff
==============================================================================
--- felix/sandbox/rickhall/vb2/framework-vb/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java (original)
+++ felix/sandbox/rickhall/vb2/framework-vb/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java Mon Jul 12 16:44:01 2010
@@ -134,7 +134,7 @@ public class ManifestParser
List<ParsedHeaderClause> requireClauses =
parseStandardHeader((String) headerMap.get(Constants.REQUIRE_BUNDLE));
requireClauses = normalizeRequireClauses(m_logger, requireClauses, getManifestVersion());
- List<Requirement> requireReqs = convertRequires(requireClauses, owner);
+ List<Requirement> bundleReqs = convertRequires(requireClauses, owner);
//
// Parse Import-Package.
@@ -155,6 +155,20 @@ public class ManifestParser
m_dynamicRequirements = convertImports(dynamicClauses, owner);
//
+ // Parse Require-Capability.
+ //
+
+ List<Requirement> requireReqs = parseRequireCapability(
+ logger, owner, (String) headerMap.get("Require-Capability"));
+
+ //
+ // Parse Provide-Capability.
+ //
+
+ List<Capability> provideCaps = parseProvideCapability(
+ logger, owner, (String) headerMap.get("Provide-Capability"));
+
+ //
// Parse Export-Package.
//
@@ -185,16 +199,18 @@ public class ManifestParser
// Combine all capabilities.
m_capabilities = new ArrayList(
- capList.size() + exportCaps.size());
+ capList.size() + exportCaps.size() + provideCaps.size());
m_capabilities.addAll(capList);
m_capabilities.addAll(exportCaps);
+ m_capabilities.addAll(provideCaps);
// Combine all requirements.
m_requirements = new ArrayList(
- importReqs.size() + requireReqs.size() + hostReqs.size());
+ importReqs.size() + bundleReqs.size() + hostReqs.size() + requireReqs.size());
m_requirements.addAll(importReqs);
m_requirements.addAll(requireReqs);
m_requirements.addAll(hostReqs);
+ m_requirements.addAll(requireReqs);
//
// Parse Bundle-NativeCode.
@@ -1184,6 +1200,56 @@ public class ManifestParser
return reqs;
}
+ public static List<Capability> parseProvideCapability(
+ Logger logger, Module owner, String header)
+ {
+ List<Capability> caps = new ArrayList<Capability>();
+ if (header != null)
+ {
+ List<ParsedHeaderClause> clauses = parseStandardHeader(header);
+ for (int clauseIdx = 0; clauseIdx < clauses.size(); clauseIdx++)
+ {
+ for (int pathIdx = 0;
+ pathIdx < clauses.get(clauseIdx).m_paths.size();
+ pathIdx++)
+ {
+ caps.add(
+ new CapabilityImpl(
+ owner,
+ clauses.get(clauseIdx).m_paths.get(pathIdx),
+ clauses.get(clauseIdx).m_dirs,
+ clauses.get(clauseIdx).m_attrs));
+ }
+ }
+ }
+ return caps;
+ }
+
+ public static List<Requirement> parseRequireCapability(
+ Logger logger, Module owner, String header)
+ {
+ List<Requirement> reqs = new ArrayList<Requirement>();
+ if (header != null)
+ {
+ List<ParsedHeaderClause> clauses = parseStandardHeader(header);
+ for (int clauseIdx = 0; clauseIdx < clauses.size(); clauseIdx++)
+ {
+ for (int pathIdx = 0;
+ pathIdx < clauses.get(clauseIdx).m_paths.size();
+ pathIdx++)
+ {
+ reqs.add(
+ new RequirementImpl(
+ owner,
+ clauses.get(clauseIdx).m_paths.get(pathIdx),
+ clauses.get(clauseIdx).m_dirs,
+ clauses.get(clauseIdx).m_attrs));
+ }
+ }
+ }
+ return reqs;
+ }
+
public static List<Capability> parseExportHeader(
Logger logger, Module owner, String header, String bsn, Version bv)
{