code: @Override
      public String evaluate(String[] requests) throws PEPException {
          logger.debug("evaluating array of String requests");
  
          long a, b;
  
          Set<Result> finalResults = new HashSet<Result>();
          for (int i = 0; i < requests.length; i++) {
              String r = requests[i];
              if (r == null) continue;
              ResponseCtx resCtx = null;
  
              a = System.currentTimeMillis();
  
              if (responseCache != null) {
                  resCtx = responseCache.getCacheItem(r);
              }
  
              if (resCtx == null) {
                  logger.debug("No item found in cache. Sending to PDP for evaluation.");
  
                  org.fcrepo.server.security.RequestCtx req = null;
                  try {
                      req = m_contextUtil.makeRequestCtx(r);
                  } catch (MelcoeXacmlException e) {
                      throw new PEPException(e);
                  }
                  resCtx = client.evaluate(req);
  
                  // Add this new result to the cache if caching is enabled
                  logger.debug("Adding PDP evaluation results to cache");
                  if (responseCache != null) {
                      responseCache.addCacheItem(r, resCtx);
                  }
              } else {
                  logger.debug("Item found in cache");
              }
  
              b = System.currentTimeMillis();
              logger.debug("Time taken for XACML Evaluation: {}ms", (b - a));
  
              @SuppressWarnings("unchecked")
              Set<Result> results = resCtx.getResults();
  
              finalResults.addAll(results);
          }
  
          ResponseCtx resultCtx = new ResponseCtx(finalResults);
  
          return m_contextUtil.makeResponseCtx(resultCtx);
      }
docs: /*
  (non-Javadoc)
  @see org.fcrepo.server.security.xacml.pep.EvaluationEngine#evaluate(java.lang.String[])