All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.appland.appmap.process.hooks.http.ServletContext Maven / Gradle / Ivy

package com.appland.appmap.process.hooks.http;

import java.util.EnumSet;
import java.util.EventListener;

import com.appland.appmap.reflect.ReflectiveType;

public class ServletContext extends ReflectiveType {
  private static String GET_SERVLET_CONTEXT_NAME = "getServletContextName";
  private static String ADD_LISTENER = "addListener";
  private static String ADD_FILTER = "addFilter";
  private static String GET_ATTRIBUTE = "getAttribute";
  private static String SET_ATTRIBUTE = "setAttribute";

  public static class FilterRegistration extends ReflectiveType {
    private static String ADD_MAPPING_FOR_URL_PATTERNS = "addMappingForUrlPatterns";

    public FilterRegistration(Object self) {
      super(self);
      addMethod(ADD_MAPPING_FOR_URL_PATTERNS, EnumSet.class, Boolean.TYPE, String[].class);
    }

    public void addMappingForUrlPatterns(EnumSet types, boolean isMatchAfter, String... patterns) {
      invokeVoidMethod(ADD_MAPPING_FOR_URL_PATTERNS, types, isMatchAfter, patterns);
    }
  }

  public ServletContext(Object self) {
    super(self);

    addMethods(GET_SERVLET_CONTEXT_NAME);
    addMethod(ADD_LISTENER, EventListener.class);
    if (!addMethod(ADD_FILTER, "java.lang.String", "javax.servlet.Filter")
        && !addMethod(ADD_FILTER, "java.lang.String", "jakarta.servlet.Filter")) {
      throw new InternalError("no addFilter method");
    }
    addMethod(GET_ATTRIBUTE, String.class);
    addMethod(SET_ATTRIBUTE, String.class, Object.class);
  }

  public String getServletContextName() {
    return invokeStringMethod(GET_SERVLET_CONTEXT_NAME);
  }

  public void addListener(Object listener) {
    invokeVoidMethod(ADD_LISTENER, listener);
  }

  public FilterRegistration addFilter(Object filterName, Object filter) {
    return new FilterRegistration(invokeObjectMethod(ADD_FILTER, filterName, filter));
  }

  public Object getAttribute(String name) {
    return invokeObjectMethod(GET_ATTRIBUTE, name);
  }

  public void setAttribute(String name, Object value) {
    invokeVoidMethod(SET_ATTRIBUTE, name, value);
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy