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)
     {