// Path: netty-framework-api/src/main/java/com/netflix/zuul/proxy/framework/api/FrameworkHttpRequest.java
// public interface FrameworkHttpRequest {
// 
//     /**
//      * Returns the method of this request.
//      */
//     HttpMethod getMethod();
//     
//     /**
//      * Returns the URI (or path) of this request.
//      */
//     String getUri();
//     
//     /**
//      * Sets the URI (or path) of this request.
//      */
//     void setUri(String uri);
//     
//     /**
//      * Returns the header value with the specified header name.  If there are
//      * more than one header value for the specified header name, the first
//      * value is returned.
//      *
//      * @return the header value or {@code null} if there is no such header
//      */
//     String getHeader(String name);
//     
//     /**
//      * Returns {@code true} if and only if there is a header with the specified
//      * header name.
//      */
//     boolean containsHeader(String name);
//     
//     /**
//      * Adds a new header with the specified name and value.
//      */
//     void addHeader(String name, Object value);
//     
//     /**
//      * Returns the all header names and values that this message contains.
//      *
//      * @return the {@link List} of the header name-value pairs.  An empty list
//      *         if there is no header in this message.
//      */
//     List<Map.Entry<String, String>> getHeaders();
//     
// }


import com.netflix.zuul.proxy.framework.api.FrameworkHttpRequest;
package com.netflix.zuul.netty.filter;


/**
 * @author HWEB
 */
public abstract class AbstractZuulPreFilter implements ZuulPreFilter {

    private final String type = "pre";
    private final int order;

    public AbstractZuulPreFilter(int order) {
        this.order = order;
    }

    @Override
    public String type() {
        return type;
    }

    @Override
    public int order() {
        return order;
    }

    @Override
// Path: netty-framework-api/src/main/java/com/netflix/zuul/proxy/framework/api/FrameworkHttpRequest.java
// public interface FrameworkHttpRequest {
// 
//     /**
//      * Returns the method of this request.
//      */
//     HttpMethod getMethod();
//     
//     /**
//      * Returns the URI (or path) of this request.
//      */
//     String getUri();
//     
//     /**
//      * Sets the URI (or path) of this request.
//      */
//     void setUri(String uri);
//     
//     /**
//      * Returns the header value with the specified header name.  If there are
//      * more than one header value for the specified header name, the first
//      * value is returned.
//      *
//      * @return the header value or {@code null} if there is no such header
//      */
//     String getHeader(String name);
//     
//     /**
//      * Returns {@code true} if and only if there is a header with the specified
//      * header name.
//      */
//     boolean containsHeader(String name);
//     
//     /**
//      * Adds a new header with the specified name and value.
//      */
//     void addHeader(String name, Object value);
//     
//     /**
//      * Returns the all header names and values that this message contains.
//      *
//      * @return the {@link List} of the header name-value pairs.  An empty list
//      *         if there is no header in this message.
//      */
//     List<Map.Entry<String, String>> getHeaders();
//     
// }


// Path: zuul-core/src/main/java/com/netflix/zuul/netty/filter/AbstractZuulPreFilter.java
import com.netflix.zuul.proxy.framework.api.FrameworkHttpRequest;

package com.netflix.zuul.netty.filter;


/**
 * @author HWEB
 */
public abstract class AbstractZuulPreFilter implements ZuulPreFilter {

    private final String type = "pre";
    private final int order;

    public AbstractZuulPreFilter(int order) {
        this.order = order;
    }

    @Override
    public String type() {
        return type;
    }

    @Override
    public int order() {
        return order;
    }

    @Override
    public boolean shouldFilter(FrameworkHttpRequest request) {