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 2009/01/21 17:55:18 UTC

svn commit: r736339 - in /felix/trunk/framework/src/main/java/org/apache/felix/framework: BundleImpl.java BundleProtectionDomain.java ExtensionManager.java Felix.java searchpolicy/ModuleImpl.java

Author: rickhall
Date: Wed Jan 21 08:55:17 2009
New Revision: 736339

URL: http://svn.apache.org/viewvc?rev=736339&view=rev
Log:
More refactoring. (FELIX-851)

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java
    felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleProtectionDomain.java
    felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
    felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
    felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java?rev=736339&r1=736338&r2=736339&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java Wed Jan 21 08:55:17 2009
@@ -34,7 +34,7 @@
 
 class BundleImpl implements Bundle
 {
-    private final Felix m_feli;
+    private final Felix m_felix;
 
     private final BundleArchive m_archive;
     private IModule[] m_modules = new IModule[0];
@@ -62,30 +62,30 @@
 
     BundleImpl(Felix felix, BundleArchive archive) throws Exception
     {
-        m_feli = felix;
+        m_felix = felix;
         m_archive = archive;
         m_state = Bundle.INSTALLED;
         m_stale = false;
         m_activator = null;
         m_context = null;
 
-        // TODO: REFACTOR - Null check is a hHack due to system bundle.
+        // TODO: REFACTOR - Null check is a hack due to system bundle.
         if (m_archive != null)
         {
-            createAndAddModule();
+            addModule(createModule());
         }
     }
 
     // TODO: REFACTOR - We need this method so the system bundle can override it.
     Felix getFramework()
     {
-        return m_feli;
+        return m_felix;
     }
 
-    void reset() throws Exception
+    synchronized void reset() throws Exception
     {
         m_modules = new IModule[0];
-        createAndAddModule();
+        addModule(createModule());
         m_state = Bundle.INSTALLED;
         m_stale = false;
         m_cachedHeaders.clear();
@@ -93,15 +93,6 @@
         m_removalPending = false;
     }
 
-    // TODO: REFACTOR - This method is sort of a hack. Since the system bundle
-    //       doesn't have an archive, it can override this method to return its
-    //       manifest.
-    Map getCurrentManifestFromArchive() throws Exception
-    {
-        return m_archive.getRevision(
-            m_archive.getRevisionCount() - 1).getManifestHeader();
-    }
-
     synchronized BundleActivator getActivator()
     {
         return m_activator;
@@ -884,7 +875,7 @@
     {
         // This operation will increase the revision count for the bundle.
         m_archive.revise(location, is);
-        createAndAddModule();
+        addModule(createModule());
     }
 
     synchronized boolean rollbackRevise() throws Exception
@@ -892,7 +883,7 @@
         return m_archive.rollbackRevise();
     }
 
-    // TODO: REFACTOR - Hack for the system bundle.
+    // TODO: REFACTOR - This module is only visible for the system bundle.
     synchronized void addModule(IModule module)
     {
         ((ModuleImpl) module).setBundle(this);
@@ -903,11 +894,12 @@
         m_modules = dest;
     }
 
-    synchronized void createAndAddModule() throws Exception
+    private synchronized IModule createModule() throws Exception
     {
         // Get and parse the manifest from the most recent revision to
         // create an associated module for it.
-        Map headerMap = getCurrentManifestFromArchive();
+        Map headerMap = m_archive.getRevision(
+            m_archive.getRevisionCount() - 1).getManifestHeader();
         ManifestParser mp = new ManifestParser(
             getFramework().getLogger(), getFramework().getConfig(), headerMap);
 
@@ -947,8 +939,6 @@
             Long.toString(getBundleId()) + "." + Integer.toString(revision),
             m_archive.getRevision(revision).getContent(),
             headerMap,
-// TODO: REFACTOR - Karl, does this work correctly if the module is updated to
-//       an extension bundle or vice versa?
             (ExtensionManager.isExtensionBundle(headerMap)) ? null : mp.getCapabilities(),
             mp.getRequirements(),
             mp.getDynamicRequirements(),
@@ -984,12 +974,7 @@
             }
         }
 
-        ((ModuleImpl) module).setBundle(this);
-
-        IModule[] dest = new IModule[m_modules.length + 1];
-        System.arraycopy(m_modules, 0, dest, 0, m_modules.length);
-        dest[m_modules.length] = module;
-        m_modules = dest;
+        return module;
     }
 
     void setProtectionDomain(ProtectionDomain pd)

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleProtectionDomain.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleProtectionDomain.java?rev=736339&r1=736338&r2=736339&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleProtectionDomain.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleProtectionDomain.java Wed Jan 21 08:55:17 2009
@@ -30,6 +30,7 @@
     private final Felix m_felix;
     private final BundleImpl m_bundle;
 
+    // TODO: SECURITY - This should probably take a module, not a bundle.
     BundleProtectionDomain(Felix felix, BundleImpl bundle)
         throws MalformedURLException
     {

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java?rev=736339&r1=736338&r2=736339&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java Wed Jan 21 08:55:17 2009
@@ -122,8 +122,7 @@
     // classloader.
     private ExtensionManager()
     {
-// TODO: REFACTOR - Karl, is this correct?
-        m_module = new ExtensionManagerModule();
+        m_module = null;
         m_extensions = new ArrayList();
         m_names = new HashSet();
         m_sourceToExtensions = new HashMap();

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?rev=736339&r1=736338&r2=736339&view=diff
==============================================================================
--- 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 Wed Jan 21 08:55:17 2009
@@ -357,14 +357,6 @@
         return this;
     }
 
-    // TODO: REFACTOR - This method is sort of a hack. Since the system bundle
-    //       doesn't have an archive, it can override this method to return its
-    //       manifest.
-    Map getCurrentManifestFromArchive() throws Exception
-    {
-        return getCurrentModule().getHeaders();
-    }
-
     public long getBundleId()
     {
         return 0;
@@ -2061,7 +2053,6 @@
 
                 addSecurity(bundle);
 
-// TODO: REFACTOR - Karl, why do we do this check so late?
                 if (!bundle.isExtension())
                 {
                     Object sm = System.getSecurityManager();
@@ -3081,13 +3072,15 @@
         return true;
     }
 
+    // TODO: SECURITY - This should probably take a module, not a bundle.
     void addSecurity(final BundleImpl bundle) throws Exception
     {
         if (m_securityProvider != null)
         {
             m_securityProvider.checkBundle(bundle);
         }
-        bundle.setProtectionDomain(new BundleProtectionDomain(this, bundle));
+        bundle.getCurrentModule().setSecurityContext(
+            new BundleProtectionDomain(this, bundle));
     }
 
     private BundleActivator createBundleActivator(BundleImpl impl)
@@ -3139,6 +3132,7 @@
             // would be incorrect, because this is a refresh operation
             // and should not trigger bundle REMOVE events.
             IModule[] modules = bundle.getModules();
+// TODO: REFACTOR - It kind of sucks we need to remember this steps.
             for (int i = 0; i < modules.length; i++)
             {
                 m_resolverState.removeModule(modules[i]);
@@ -3803,7 +3797,7 @@
                     // Add new module to resolver state.
 // TODO: REFACTOR - It is not clean to have to remember these steps.
                     m_resolverState.addModule(oldImpl.getCurrentModule());
-// TODO: REFACTOR - Seems like we don't need to repeat this.
+// TODO: REFACTOR - Could we set this when we add the module to the bundle?.
                     addSecurity(m_bundle);
                     fireBundleEvent(BundleEvent.UNRESOLVED, m_bundle);
                 }

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java?rev=736339&r1=736338&r2=736339&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java Wed Jan 21 08:55:17 2009
@@ -101,7 +101,7 @@
 
         // Read the boot delegation property and parse it.
 // TODO: REFACTOR - This used to be per framework, now it is per module
-//       which doesn't really make sense.
+//       which doesn't really make sense. Maybe pass in the arrays.
         String s = (m_configMap == null)
             ? null
             : (String) m_configMap.get(Constants.FRAMEWORK_BOOTDELEGATION);