/**
  * Constructs a legacy response provider based on the information in this adapter.
  *
  * @return the legacy response provider
  * @throws EntitlementException if an error occurs constructing the response provider.
  */
 @JsonIgnore
 public ResponseProvider getResponseProvider() throws EntitlementException {
   try {
     ResponseProvider rp =
         Class.forName(className).asSubclass(ResponseProvider.class).newInstance();
     Map<String, Set<String>> properties = new HashMap<String, Set<String>>();
     properties.put(propertyName, propertyValues);
     rp.setProperties(properties);
     return rp;
   } catch (Exception ex) {
     throw new EntitlementException(510, ex);
   }
 }
  /**
   * Called by the entitlements framework to fetch its resource attributes; cascades the call
   * through to the configured response provider implementation
   *
   * @param adminSubject The admin user executing the policy eval
   * @param realm The realm of the policy eval
   * @param subject The user who is subject to the policy eval
   * @param resourceName The resource name of the policy eval
   * @param environment environment map from the policy eval client
   * @return The attributes (only one since resource attributes are singled)
   * @throws EntitlementException
   */
  public Map<String, Set<String>> evaluate(
      Subject adminSubject,
      String realm,
      Subject subject,
      String resourceName,
      Map<String, Set<String>> environment)
      throws EntitlementException {
    try {
      ResponseProvider rp = getResponseProvider();
      SSOToken token = (subject != null) ? getSSOToken(subject) : null;
      Map<String, Set<String>> result = rp.getResponseDecision(token, environment);

      return result;
    } catch (SSOException ex) {
      throw new EntitlementException(510, ex);
    } catch (PolicyException ex) {
      throw new EntitlementException(510, ex);
    }
  }