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.