@Override
    public void setAttribute(String name, Object value) {
      if (value == null) {
        this.removeAttribute(name);
      } else if (name != null) {
        Object oldValue = this.getAttribute(name);
        super.setAttribute(name, value);

        if (oldValue == null) {
          requestAttributeListener.attributeAdded(
              new ServletRequestAttributeEvent(servletContext, this, name, value));
        } else {
          requestAttributeListener.attributeReplaced(
              new ServletRequestAttributeEvent(servletContext, this, name, oldValue));
        }
      }
    }
    @Override
    public void removeAttribute(String name) {
      Object oldValue = this.getAttribute(name);
      super.removeAttribute(name);

      if (oldValue != null) {
        requestAttributeListener.attributeRemoved(
            new ServletRequestAttributeEvent(servletContext, this, name, oldValue));
      }
    }