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 2007/06/18 17:14:46 UTC

svn commit: r548377 - in /felix/trunk/framework/src/main/java/org/apache/felix/framework: BundleContextImpl.java Felix.java ext/FelixBundleContext.java searchpolicy/ModuleDefinition.java

Author: rickhall
Date: Mon Jun 18 08:14:44 2007
New Revision: 548377

URL: http://svn.apache.org/viewvc?view=rev&rev=548377
Log:
Implementing an experimental feature to help with dynamic code generation.

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleContextImpl.java
    felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
    felix/trunk/framework/src/main/java/org/apache/felix/framework/ext/FelixBundleContext.java
    felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleDefinition.java

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleContextImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleContextImpl.java?view=diff&rev=548377&r1=548376&r2=548377
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleContextImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleContextImpl.java Mon Jun 18 08:14:44 2007
@@ -20,9 +20,7 @@
 
 import java.io.File;
 import java.io.InputStream;
-import java.util.ArrayList;
 import java.util.Dictionary;
-import java.util.List;
 
 import org.apache.felix.framework.ext.FelixBundleContext;
 import org.osgi.framework.*;
@@ -44,22 +42,24 @@
         m_valid = false;
     }
 
-    public void addImportPackage() throws BundleException
+    public void addRequirement(String s) throws BundleException
     {
-        throw new BundleException("Not implemented yet.");
+        // TODO: EXPERIMENTAL - Experimental implicit wire concept to try
+        //       to deal with code generation.
+        m_felix.addRequirement(m_bundle, s);
     }
 
-    public void removeImportPackage() throws BundleException
+    public void removeRequirement() throws BundleException
     {
         throw new BundleException("Not implemented yet.");
     }
 
-    public void addExportPackage() throws BundleException
+    public void addCapability() throws BundleException
     {
         throw new BundleException("Not implemented yet.");
     }
 
-    public void removeExportPackage() throws BundleException
+    public void removeCapability() throws BundleException
     {
         throw new BundleException("Not implemented yet.");
     }

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java?view=diff&rev=548377&r1=548376&r2=548377
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java Mon Jun 18 08:14:44 2007
@@ -1865,6 +1865,31 @@
     // Implementation of BundleContext interface methods.
     //
 
+    protected void addRequirement(BundleImpl bundle, String s) throws BundleException
+    {
+        // TODO: EXPERIMENTAL - Experimental implicit wire concept to try
+        //       to deal with code generation.
+        synchronized (m_factory)
+        {
+            IRequirement[] reqs = ManifestParser.parseImportHeader(s);
+            IRequirement[] dynamics = bundle.getInfo().getCurrentModule()
+                .getDefinition().getDynamicRequirements();
+            if (dynamics == null)
+            {
+                dynamics = reqs;
+            }
+            else
+            {
+                IRequirement[] tmp = new IRequirement[dynamics.length + reqs.length];
+                System.arraycopy(dynamics, 0, tmp, 0, dynamics.length);
+                System.arraycopy(reqs, 0, tmp, dynamics.length, reqs.length);
+                dynamics = tmp;
+            }
+            ((ModuleDefinition) bundle.getInfo().getCurrentModule().getDefinition())
+                .setDynamicRequirements(dynamics);
+        }
+    }
+
     /**
      * Implementation for BundleContext.getProperty(). Returns
      * environment property associated with the framework.

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/ext/FelixBundleContext.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ext/FelixBundleContext.java?view=diff&rev=548377&r1=548376&r2=548377
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/ext/FelixBundleContext.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/ext/FelixBundleContext.java Mon Jun 18 08:14:44 2007
@@ -23,8 +23,8 @@
 
 public interface FelixBundleContext extends BundleContext
 {
-    public void addImportPackage() throws BundleException;
-    public void removeImportPackage() throws BundleException;
-    public void addExportPackage() throws BundleException;
-    public void removeExportPackage() throws BundleException;
+    public void addRequirement(String s) throws BundleException;
+    public void removeRequirement() throws BundleException;
+    public void addCapability() throws BundleException;
+    public void removeCapability() throws BundleException;
 }

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleDefinition.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleDefinition.java?view=diff&rev=548377&r1=548376&r2=548377
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleDefinition.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleDefinition.java Mon Jun 18 08:14:44 2007
@@ -54,6 +54,13 @@
         return m_dynamicRequirements;
     }
 
+    // TODO: EXPERIMENTAL - Experimental implicit wire concept to try
+    //       to deal with code generation.
+    public void setDynamicRequirements(IRequirement[] reqs)
+    {
+        m_dynamicRequirements = reqs;
+    }
+
     public R4Library[] getLibraries()
     {
         return m_libraries;