Author: peter_firmstone
Date: Thu Aug 18 02:41:09 2011
New Revision: 1158998

URL: http://svn.apache.org/viewvc?rev=1158998&view=rev
Log:
Minor refactoring to make compile, this code is to provide a new CodeSource 
that contains permissions required to execute, these permissions are not 
granted, but are instead included for debugging information and to allow the 
client to check which permissions a proxy requires.

Modified:
    
river/jtsk/skunk/peterConcurrentPolicy/src/net/jini/loader/pref/PreferredClassLoader.java
    
river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/LocalPermissions.java
    
river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/PermissionInfo.java

Modified: 
river/jtsk/skunk/peterConcurrentPolicy/src/net/jini/loader/pref/PreferredClassLoader.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/net/jini/loader/pref/PreferredClassLoader.java?rev=1158998&r1=1158997&r2=1158998&view=diff
==============================================================================
--- 
river/jtsk/skunk/peterConcurrentPolicy/src/net/jini/loader/pref/PreferredClassLoader.java
 (original)
+++ 
river/jtsk/skunk/peterConcurrentPolicy/src/net/jini/loader/pref/PreferredClassLoader.java
 Thu Aug 18 02:41:09 2011
@@ -1011,6 +1011,18 @@ public class PreferredClassLoader extend
            return getPackage(name);
        }
     }
+    
+    protected Class<?> findClass(final String name)
+        throws ClassNotFoundException
+    {   
+        /* TODO: Override and create our own CodeSource
+         * implementation that contains permissions.perm
+         * After we retrieve the manifest, class bytes and
+         * certificates, create the CodeSource we call
+         * defineClass(String name, byte[]b, int off, int len, CodeSource cs)
+         */
+        return super.findClass(name);
+    }
 
     /**
      * {@inheritDoc}

Modified: 
river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/LocalPermissions.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/LocalPermissions.java?rev=1158998&r1=1158997&r2=1158998&view=diff
==============================================================================
--- 
river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/LocalPermissions.java
 (original)
+++ 
river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/LocalPermissions.java
 Thu Aug 18 02:41:09 2011
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.framework.security.util;
+package org.apache.river.impl.security;
 
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
 import java.security.AllPermission;
 import java.security.Permission;
 import java.util.ArrayList;
@@ -29,9 +31,7 @@ import java.util.Map;
 import java.util.WeakHashMap;
 
 //import org.apache.felix.moduleloader.IContent;
-import org.apache.felix.framework.resolver.Content;
-import org.osgi.framework.Bundle;
-import org.osgi.service.permissionadmin.PermissionInfo;
+
 
 /**
  * A cache for local permissions. Local permissions are read from a given 
bundle
@@ -43,97 +43,61 @@ public final class LocalPermissions
     private static final PermissionInfo[] ALL_PERMISSION = new 
PermissionInfo[] { new PermissionInfo(
         AllPermission.class.getName(), "", "") };
 
-    private final Map m_cache = new WeakHashMap();
-    private final Permissions m_permissions;
+    private static final String perm = "META-INF/permissions.perm";
 
-    public LocalPermissions(Permissions permissions) throws IOException
+    public LocalPermissions()
     {
-        m_permissions = permissions;
+        
     }
 
-    /**
-     * Return true in case that the given permission is implied by the local
-     * permissions of the given bundle or if there are none otherwise, false.
-     * See core spec 9.2.1.
-     * 
-     * @param root
-     *            the root to use for cacheing as a key
-     * @param loader
-     *            the loader to get the content of the bundle from
-     * @param bundle
-     *            the bundle in quesiton
-     * @param permission
-     *            the permission to check
-     * @return true if implied by local permissions.
-     */
-    public boolean implies(Content content, Bundle bundle,
-        Permission permission)
+    public PermissionInfo[] getPerms(URL content)
     {
         PermissionInfo[] permissions = null;
-
-        synchronized (m_cache)
+        InputStream in = null;
+        try
         {
-            if (!m_cache.containsKey(content))
-            {
-                InputStream in = null;
-                try
-                {
-                    in = content.getEntryAsStream("OSGI-INF/permissions.perm");
-                    if (in != null)
-                    {
-                        ArrayList perms = new ArrayList();
 
-                        BufferedReader reader = new BufferedReader(
-                            new InputStreamReader(in, "UTF-8"));
-                        for (String line = reader.readLine(); line != null; 
line = reader
-                            .readLine())
-                        {
-                            String trim = line.trim();
-                            if (trim.startsWith("#") || trim.startsWith("//")
-                                || (trim.length() == 0))
-                            {
-                                continue;
-                            }
-                            perms.add(new PermissionInfo(line));
-                        }
+//                    in = content.("META-INF/permissions.perm");
+            if (in != null)
+            {
+                ArrayList perms = new ArrayList();
 
-                        permissions = (PermissionInfo[]) perms
-                            .toArray(new PermissionInfo[perms.size()]);
-                    }
-                }
-                catch (Exception ex)
+                BufferedReader reader = new BufferedReader(
+                    new InputStreamReader(in, "UTF-8"));
+                for (String line = reader.readLine(); line != null; line = 
reader
+                    .readLine())
                 {
-                }
-                finally
-                {
-                    if (in != null)
+                    String trim = line.trim();
+                    if (trim.startsWith("#") || trim.startsWith("//")
+                        || (trim.length() == 0))
                     {
-                        try
-                        {
-                            in.close();
-                        }
-                        catch (IOException ex)
-                        {
-                            // TODO Auto-generated catch block
-                            ex.printStackTrace();
-                        }
+                        continue;
                     }
+                    perms.add(new PermissionInfo(line));
                 }
 
-                if (permissions == null)
-                {
-                    permissions = ALL_PERMISSION;
-                }
-
-                m_cache.put(content, permissions);
+                permissions = (PermissionInfo[]) perms
+                    .toArray(new PermissionInfo[perms.size()]);
             }
-            else
+        }
+        catch (Exception ex)
+        {
+        }
+        finally
+        {
+            if (in != null)
             {
-                permissions = (PermissionInfo[]) m_cache.get(content);
+                try
+                {
+                    in.close();
+                }
+                catch (IOException ex)
+                {
+                    // TODO Auto-generated catch block
+                    ex.printStackTrace();
+                }
             }
         }
-
-        return m_permissions.getPermissions(permissions).implies(permission,
-            bundle);
+        return permissions; //possibly null.
     }
 }

Modified: 
river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/PermissionInfo.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/PermissionInfo.java?rev=1158998&r1=1158997&r2=1158998&view=diff
==============================================================================
--- 
river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/PermissionInfo.java
 (original)
+++ 
river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/PermissionInfo.java
 Thu Aug 18 02:41:09 2011
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.osgi.service.permissionadmin;
+package org.apache.river.impl.security;
 
 /**
  * Permission representation used by the Permission Admin service.


Reply via email to