javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionResolver.java
changeset 47 f40128debb5d
parent 21 2a9601315dfc
child 64 0ea12c182930
equal deleted inserted replaced
35:85266cc22c7f 47:f40128debb5d
   201                         .equals(newSettings.getName()))
   201                         .equals(newSettings.getName()))
   202                 {
   202                 {
   203                     // add new settings
   203                     // add new settings
   204                     newPermissionInstancesAndSettings.addElement(
   204                     newPermissionInstancesAndSettings.addElement(
   205                         new PermisionInstanceAndSettings(
   205                         new PermisionInstanceAndSettings(
   206                             p.getPermissionInstance(), newSettings));
   206                             p.getPermissionInstance(), 
       
   207                             p.getType(),
       
   208                             newSettings));
   207                 }
   209                 }
   208                 else
   210                 else
   209                 {
   211                 {
   210                     // keep the old settings
   212                     // keep the old settings
   211                     newPermissionInstancesAndSettings.addElement(p);
   213                     newPermissionInstancesAndSettings.addElement(p);
   238             {
   240             {
   239                 resolvedPermissions.addElement(
   241                 resolvedPermissions.addElement(
   240                     getResolvedPermission(
   242                     getResolvedPermission(
   241                         requestedPermission,
   243                         requestedPermission,
   242                         policyPermission,
   244                         policyPermission,
       
   245                         p.getType(),
   243                         p.getSettings(),
   246                         p.getSettings(),
   244                         requestedPermission.getClass().getName(),
   247                         requestedPermission.getClass().getName(),
   245                         requestedPermission.getName(),
   248                         requestedPermission.getName(),
   246                         requestedPermission.getActions()));
   249                         requestedPermission.getActions()));
   247                 return resolvedPermissions;
   250                 return resolvedPermissions;
   272                             permissionResolved = true;
   275                             permissionResolved = true;
   273                             // add the permission to the result only of not found among the existing ones
   276                             // add the permission to the result only of not found among the existing ones
   274                             PolicyBasedPermissionImpl permission1 =
   277                             PolicyBasedPermissionImpl permission1 =
   275                                 getResolvedPermission(requestedPermission,
   278                                 getResolvedPermission(requestedPermission,
   276                                                       policyPermission,
   279                                                       policyPermission,
       
   280                                                       p.getType(),
   277                                                       p.getSettings(),
   281                                                       p.getSettings(),
   278                                                       requestedPermission.getClass().getName(),
   282                                                       requestedPermission.getClass().getName(),
   279                                                       requestedPermission.getName(),
   283                                                       requestedPermission.getName(),
   280                                                       actions[i]);
   284                                                       actions[i]);
   281                             if (permission1.getActionList() == null
   285                             if (permission1.getActionList() == null
   305                                     {
   309                                     {
   306                                         // replace element at position k with another one having
   310                                         // replace element at position k with another one having
   307                                         // the combined actions
   311                                         // the combined actions
   308                                         resolvedPermissions.setElementAt(getResolvedPermission(
   312                                         resolvedPermissions.setElementAt(getResolvedPermission(
   309                                                                              permission1.getPromptDetails(),
   313                                                                              permission1.getPromptDetails(),
       
   314                                                                              p.getType(),
   310                                                                              p.getSettings(),
   315                                                                              p.getSettings(),
   311                                                                              requestedPermission.getClass().getName(),
   316                                                                              requestedPermission.getClass().getName(),
   312                                                                              requestedPermission.getName(),
   317                                                                              requestedPermission.getName(),
   313                                                                              permission2.getActionList() + "," + permission1.getActionList()),
   318                                                                              permission2.getActionList() + "," + permission1.getActionList()),
   314                                                                          k);
   319                                                                          k);
   356         {
   361         {
   357             PermisionInstanceAndSettings instance1 =
   362             PermisionInstanceAndSettings instance1 =
   358                 (PermisionInstanceAndSettings)tmp.elementAt(0);
   363                 (PermisionInstanceAndSettings)tmp.elementAt(0);
   359             tmp.removeElementAt(0);
   364             tmp.removeElementAt(0);
   360             Permission permission1 = (Permission)instance1.getPermissionInstance();
   365             Permission permission1 = (Permission)instance1.getPermissionInstance();
       
   366             int type = instance1.getType();
   361             UserSecuritySettings settings1 = instance1.getSettings();
   367             UserSecuritySettings settings1 = instance1.getSettings();
   362             String compositeAction = "";
   368             String compositeAction = "";
   363             // put the individual actions into a vector so that the composite
   369             // put the individual actions into a vector so that the composite
   364             // action is made only by unique actions (duplicates are discarded)
   370             // action is made only by unique actions (duplicates are discarded)
   365             Vector uniqueActions = new Vector();
   371             Vector uniqueActions = new Vector();
   421                     {
   427                     {
   422                         resolvedPermissions.addElement(
   428                         resolvedPermissions.addElement(
   423                             getResolvedPermission(
   429                             getResolvedPermission(
   424                                 requestedPermission,
   430                                 requestedPermission,
   425                                 permission1,
   431                                 permission1,
       
   432                                 type,
   426                                 settings1,
   433                                 settings1,
   427                                 requestedPermission.getClass().getName(),
   434                                 requestedPermission.getClass().getName(),
   428                                 requestedPermission.getName(),
   435                                 requestedPermission.getName(),
   429                                 requestedPermission.getActions()));
   436                                 requestedPermission.getActions()));
   430                         return resolvedPermissions;
   437                         return resolvedPermissions;
   450         return resolvePermission(requestedPermission, permissionInstances);
   457         return resolvePermission(requestedPermission, permissionInstances);
   451     }
   458     }
   452 
   459 
   453     private static PolicyBasedPermissionImpl getResolvedPermission(
   460     private static PolicyBasedPermissionImpl getResolvedPermission(
   454         PermissionBase securityPromptDetails,
   461         PermissionBase securityPromptDetails,
       
   462         int type,
   455         UserSecuritySettings userSettings,
   463         UserSecuritySettings userSettings,
   456         String permissionName,
   464         String permissionName,
   457         String targetName,
   465         String targetName,
   458         String actionList)
   466         String actionList)
   459     {
   467     {
   477         }
   485         }
   478         return new PolicyBasedPermissionImpl(
   486         return new PolicyBasedPermissionImpl(
   479                    permissionName,
   487                    permissionName,
   480                    targetName,
   488                    targetName,
   481                    actionList,
   489                    actionList,
       
   490                    type,
   482                    userSettings,
   491                    userSettings,
   483                    securityPromptDetails2);
   492                    securityPromptDetails2);
   484     }
   493     }
   485 
   494 
   486     private static PolicyBasedPermissionImpl getResolvedPermission(
   495     private static PolicyBasedPermissionImpl getResolvedPermission(
   487         Permission requestedPermission,
   496         Permission requestedPermission,
   488         Object policyPermission,
   497         Object policyPermission,
       
   498         int type,
   489         UserSecuritySettings userSettings,
   499         UserSecuritySettings userSettings,
   490         String permissionName,
   500         String permissionName,
   491         String targetName,
   501         String targetName,
   492         String actionList)
   502         String actionList)
   493     {
   503     {
   512         }
   522         }
   513         return new PolicyBasedPermissionImpl(
   523         return new PolicyBasedPermissionImpl(
   514                    permissionName,
   524                    permissionName,
   515                    targetName,
   525                    targetName,
   516                    actionList,
   526                    actionList,
       
   527                    type,
   517                    userSettings,
   528                    userSettings,
   518                    securityPromptDetails);
   529                    securityPromptDetails);
   519     }
   530     }
   520 
   531 
   521     private static Vector getPolicyPermissionInstances(Uid msUID, PolicyBasedPermission[] policyPermissions)
   532     private static Vector getPolicyPermissionInstances(Uid msUID, PolicyBasedPermission[] policyPermissions)
   543                                policyPermissions[i].getName(),
   554                                policyPermissions[i].getName(),
   544                                policyPermissions[i].getTarget(),
   555                                policyPermissions[i].getTarget(),
   545                                policyPermissions[i].getActionList());
   556                                policyPermissions[i].getActionList());
   546                 policyPermissionInstancesAndSettings.addElement(
   557                 policyPermissionInstancesAndSettings.addElement(
   547                     new PermisionInstanceAndSettings(p,
   558                     new PermisionInstanceAndSettings(p,
   548                                                      policyPermissions[i].getUserSecuritySettings()));
   559                         policyPermissions[i].getType(),
       
   560                         policyPermissions[i].getUserSecuritySettings()));
   549             }
   561             }
   550             catch (InstantiationException e)
   562             catch (InstantiationException e)
   551             {
   563             {
   552                 // This should not be leaked outside
   564                 // This should not be leaked outside
   553                 Logger.logError("getPolicyPermissionInstances failed: " + e.toString());
   565                 Logger.logError("getPolicyPermissionInstances failed: " + e.toString());
   588                                grantedPermission.getName(),
   600                                grantedPermission.getName(),
   589                                grantedPermission.getTarget(),
   601                                grantedPermission.getTarget(),
   590                                grantedPermission.getActionList());
   602                                grantedPermission.getActionList());
   591                 grantedPermissionInstancesAndSettings.addElement(
   603                 grantedPermissionInstancesAndSettings.addElement(
   592                     new PermisionInstanceAndSettings(p,
   604                     new PermisionInstanceAndSettings(p,
   593                                                      grantedPermission.getUserSecuritySettings()));
   605                     grantedPermission.getType(),
       
   606                     grantedPermission.getUserSecuritySettings()));
   594             }
   607             }
   595             catch (InstantiationException e)
   608             catch (InstantiationException e)
   596             {
   609             {
   597                 // This should not be leaked outside
   610                 // This should not be leaked outside
   598             }
   611             }
   701     }
   714     }
   702 
   715 
   703     private static class PermisionInstanceAndSettings
   716     private static class PermisionInstanceAndSettings
   704     {
   717     {
   705         private Object permissionObject;
   718         private Object permissionObject;
       
   719         private int type;
   706         private UserSecuritySettings settings;
   720         private UserSecuritySettings settings;
   707 
   721 
   708         public PermisionInstanceAndSettings(Object permissionObject, UserSecuritySettings settings)
   722         public PermisionInstanceAndSettings(Object permissionObject, int type, UserSecuritySettings settings)
   709         {
   723         {
   710             this.permissionObject = permissionObject;
   724             this.permissionObject = permissionObject;
       
   725             this.type = type;
   711             this.settings = settings;
   726             this.settings = settings;
   712         }
   727         }
   713 
   728 
   714         public Object getPermissionInstance()
   729         public Object getPermissionInstance()
   715         {
   730         {
   718 
   733 
   719         public UserSecuritySettings getSettings()
   734         public UserSecuritySettings getSettings()
   720         {
   735         {
   721             return settings;
   736             return settings;
   722         }
   737         }
       
   738         
       
   739         public int getType()
       
   740         {
       
   741             return type;
       
   742         }
   723     }
   743     }
   724 }
   744 }