harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sean Qiu (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-6021) [java6][classlib][security] Policy getPermissions(ProtectionDomain) may return different type of PermissionCollection from RI
Date Thu, 15 Jan 2009 02:05:59 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-6021?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12663980#action_12663980
] 

Sean Qiu commented on HARMONY-6021:
-----------------------------------

Thank you for paying attention. :-)
Yes, according to the spec, we should need a mutable instance.
But as the test case indicated, if user extends their own PermissionCollection's implies method,
the "new Permissions" wouldn't follow the same contract.  That's a problem.

Is there a compromised approach to care both of them? If permissions support clone.

> [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
>
>         Attachments: HARMONY-6021.diff
>
>   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.


Mime
View raw message