harmony-commits mailing list archives

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

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

Alexey Varlamov commented on HARMONY-6021:
------------------------------------------

I still do not see the problem. 
1) If user has a specific contract for particular Permission (sub)class, (s)he rules it freely
via custom impl of PermissionCollection.implies(). 
2) Otherwise, if (s)he wants custom contract for implying permissions in general, that means
(s)he have to implement custom Policy provider.
Did I miss smth? Do you have any application that caused the issue?

> [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