001package com.esri.arcgis.enterprise.interceptor;
002
003import com.esri.arcgis.enterprise.interceptor.server.IServerInterceptorLogger;
004import com.esri.arcgis.enterprise.interceptor.server.IServerServicesInterceptor;
005import com.esri.arcgis.enterprise.interceptor.server.IServerServicesInterceptorHelper;
006
007import java.util.Map;
008
009/**
010 * Configuration of the Interceptor passed during the interceptor
011 * initialization {@link IServerServicesInterceptor#init(IInterceptorConfig, IServerServicesInterceptorHelper, IServerInterceptorLogger)}
012 */
013public interface IInterceptorConfig {
014
015    /**
016     * Get name of the interceptor
017     */
018    String getInterceptorName();
019
020    /**
021     * Get display name of the interceptor
022     */
023    String getDisplayName();
024
025    /**
026     * Get description of the interceptor
027     */
028    String getDescription();
029
030    /**
031     * Get interceptor class
032     */
033    String getInterceptorClass();
034
035    /**
036     * Get URL pattern configuration of the interceptor. Requests matching the URL pattern will be intercepted by
037     * this interceptor
038     *
039     * @return Array of URL pattern
040     */
041    String[] getUrlPatterns();
042
043    /**
044     * Get custom properties of the interceptor. These properties can be changed through the Admin API and passed to
045     * the interceptor init method
046     *
047     * @return Map of custom interceptor properties
048     */
049    Map<String, String> getProperties();
050
051    /**
052     * Get chaining order of the interceptor. Chaining order controls the order of execution when there are more
053     * interceptors matching a given URL. This order can be updated using Admin API
054     *
055     * @return Configured chaining order of the interceptor
056     */
057    int getChainingOrder();
058}