Пример #1
0
  /**
   * Returns true if any of the condition sets match an inventoried Resource.
   *
   * @param context
   * @return
   */
  public boolean isActive(GlobalActivationContext context) {
    ResourceManagerLocal resourceManager = LookupUtil.getResourceManager();
    Subject subject = context.getSubject();

    for (ResourceConditionSet rcs : this.resourceConditionSets) {
      ResourceCriteria criteria = new ResourceCriteria();

      criteria.addFilterPluginName(rcs.getPluginName());
      criteria.addFilterResourceTypeName(rcs.getResourceTypeName());
      Set<Permission> requiredPermissions = rcs.getPermissions();
      if (!((null == requiredPermissions) || requiredPermissions.isEmpty())) {
        Permission[] arr = requiredPermissions.toArray(new Permission[requiredPermissions.size()]);
        criteria.addRequiredPermissions(arr);
      }

      PageList<Resource> resources =
          resourceManager.findResourcesByCriteria(context.getSubject(), criteria);
      if (!((null == resources) || resources.isEmpty())) {
        return ActivatorHelper.areTraitsSatisfied(
            subject, rcs.getTraitMatchers(), resources, false);
      }
    }

    return false;
  }