code: public static Object getContext(String key) throws PolicyContextException
     {
        if (key == null || handlerMap.containsKey(key) == false)
           throw new IllegalArgumentException("No PolicyContextHandler for key=" + key);
        SecurityManager sm = System.getSecurityManager();
        if (sm != null)
           sm.checkPermission(getPolicy);
  
        PolicyContextHandler handler = handlerMap.get(key);
        if (handler.supports(key) == false)
           throw new IllegalArgumentException("PolicyContextHandler does not support key=" + key);
        Object data = handlerDataLocal.get();
        Object context = handler.getContext(key, data);
        return context;
     }
docs: <p>
  This method may be used by a {@code Policy} provider to activate the {@code PolicyContextHandler} registered to
  the context object key and cause it to return the corresponding policy context object from the container. When
  this method activates a handler, it passes to the handler the context object key and the handler data associated
  with the calling thread.
  </p>
  
  @param key
  - a {@code String} that identifies the PolicyContextHandler to activate and the context object to be
  acquired from the handler. The value of this parameter must not be null.
  @return the container and handler specific object containing the desired context. A {@code null} value is returned
  if the corresponding handler has been registered, and the value of the corresponding context is null.
  @throws IllegalArgumentException
  - if a {@code PolicyContextHandler} has not been registered for the key or the registered handler no
  longer supports the key.
  @throws SecurityException
  - if the calling {@code AccessControlContext} is not authorized by the container to call this method.
  @throws PolicyContextException
  - if an operation by this method on the identified {@code PolicyContextHandler} causes it to throw a
  checked exception that is not accounted for in the signature of this method.