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.
