You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Sean Qiu (JIRA)" <ji...@apache.org> on 2008/11/18 04:41:44 UTC
[jira] Updated: (HARMONY-6021) [java6][classlib][security] Policy
getPermissions(ProtectionDomain) may return different type of
PermissionCollection from RI
[ https://issues.apache.org/jira/browse/HARMONY-6021?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sean Qiu updated HARMONY-6021:
------------------------------
Summary: [java6][classlib][security] Policy getPermissions(ProtectionDomain) may return different type of PermissionCollection from RI (was: [classlib][security] Policy getPermissions(ProtectionDomain) may return different type of PermissionCollection from RI)
> [java6][classlib][security] Policy getPermissions(ProtectionDomain) may return different type of PermissionCollection from RI
> -----------------------------------------------------------------------------------------------------------------------------
>
> Key: HARMONY-6021
> URL: https://issues.apache.org/jira/browse/HARMONY-6021
> Project: Harmony
> Issue Type: Bug
> Components: Classlib
> Affects Versions: 5.0M8
> Reporter: Sean Qiu
> Assignee: Sean Qiu
> Fix For: 5.0M9
>
> Original Estimate: 72h
> Remaining Estimate: 72h
>
> ---------
> Test
> ---------
> private static class MockPermission extends BasicPermission{
> public MockPermission(String name) { super(name); }
> public MockPermission(String name, String action) { super(name,action); }
> }
> static class MockPermissions extends PermissionCollection{
> private Vector<Permission> permissions = new Vector();
> @Override
> public void add(Permission permission) {
> if(this.isReadOnly()){ throw new java.lang.SecurityException(); }
> if(permission instanceof MockPermission){ permissions.add(permission); }
> }
> @Override
> public Enumeration<Permission> elements() { return permissions.elements(); }
> @Override
> public boolean implies(Permission permission) {
> if(permissions.size()==0){ return false; }
> if(permission instanceof MockPermission){
> for(Permission perm : permissions){
> if( perm.implies(permission)){ return true; }
> }
> }
> return false;
> }
> }
> public void testGetPermissions() throws Exception{
> MockPermission read = new MockPermission("read");
> MockPermission write = new MockPermission("write");
> PermissionCollection readPC = new MockPermissions();
> readPC.add(read);
> ProtectionDomain pd = new ProtectionDomain(null, null);
> TestProvider policy = new TestProvider();
> policy.pc = readPC;
> PermissionCollection permissions = policy.getPermissions(pd);
> assertTrue(permissions instanceof MockPermissions);
> assertSame(permissions, readPC);
> assertTrue(permissions.implies(read));
> assertFalse(permissions.implies(write));
> }
> ----------------
> Description
> ----------------
> Harmony'll failed in this testcase since it returns a new Permissions instance rather than use the customized PermissionCollection.
> The new created Permissions have different implies contact which leads to the failures.
> It doesn't make sense to create a new Permissions here, since customer may extension the default permission and permission collection here.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.