You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pa...@apache.org on 2008/03/05 14:10:06 UTC

svn commit: r633839 - /felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java

Author: pauls
Date: Wed Mar  5 05:10:04 2008
New Revision: 633839

URL: http://svn.apache.org/viewvc?rev=633839&view=rev
Log:
Make the framework check for valid bundles on install as per spec.

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java

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=633839&r1=633838&r2=633839&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 Mar  5 05:10:04 2008
@@ -39,7 +39,7 @@
     static SecureAction m_secureAction = new SecureAction();
 
     // The extension manager to handle extension bundles
-    private ExtensionManager m_extensionManager;
+    ExtensionManager m_extensionManager;
 
     // Logging related member variables.
     private Logger m_logger = null; // TODO: KARL - Why package private?
@@ -1653,7 +1653,8 @@
         // to import the necessary packages.
         if (System.getSecurityManager() != null)
         {
-            ProtectionDomain pd = bundle.getInfo().getProtectionDomain();
+            BundleProtectionDomain pd = (BundleProtectionDomain) 
+                bundle.getInfo().getProtectionDomain();
 
             IRequirement[] imports =
                 bundle.getInfo().getCurrentModule().getDefinition().getRequirements();
@@ -1671,7 +1672,7 @@
                         imports[i].???,
                         PackagePermission.IMPORT);
 
-                    if (!pd.implies(perm))
+                    if (!pd.impliesDirect(perm))
                     {
                         throw new java.security.AccessControlException(
                             "PackagePermission.IMPORT denied for import: " +
@@ -1690,7 +1691,7 @@
                     PackagePermission perm = new PackagePermission(
                         (String) exports[i].getProperties().get(ICapability.PACKAGE_PROPERTY), PackagePermission.EXPORT);
 
-                    if (!pd.implies(perm))
+                    if (!pd.impliesDirect(perm))
                     {
                         throw new java.security.AccessControlException(
                             "PackagePermission.EXPORT denied for export: " +
@@ -3380,8 +3381,12 @@
         return true;
     }
 
-    void addSecurity(final FelixBundle bundle)
+    void addSecurity(final FelixBundle bundle) throws Exception
     {
+        if (m_securityProvider != null)
+        {
+            m_securityProvider.checkBundle(bundle);
+        }
         bundle.getInfo().setProtectionDomain(new BundleProtectionDomain(this, bundle));
     }
 
@@ -3922,23 +3927,19 @@
             }
 
             // Next, stop all system bundle activators.
-            if (m_activatorList != null)
+            for (int i = 0; i < m_activatorList.size(); i++)
             {
-                // Stop all activators.
-                for (int i = 0; i < m_activatorList.size(); i++)
+                try
                 {
-                    try
-                    {
-                        Felix.m_secureAction.stopActivator((BundleActivator) 
-                            m_activatorList.get(i), getInfo().getBundleContext());
-                    }
-                    catch (Throwable throwable)
-                    {
-                        m_logger.log(
-                            Logger.LOG_WARNING,
-                            "Exception stopping a system bundle activator.",
-                            throwable);
-                    }
+                    Felix.m_secureAction.stopActivator((BundleActivator) 
+                        m_activatorList.get(i), getInfo().getBundleContext());
+                }
+                catch (Throwable throwable)
+                {
+                    m_logger.log(
+                        Logger.LOG_WARNING,
+                        "Exception stopping a system bundle activator.",
+                        throwable);
                 }
             }