View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one
    3    * or more contributor license agreements.  See the NOTICE file
    4    * distributed with this work for additional information
    5    * regarding copyright ownership.  The ASF licenses this file
    6    * to you under the Apache License, Version 2.0 (the
    7    * "License"); you may not use this file except in compliance
    8    * with the License.  You may obtain a copy of the License at
    9    *
    10   *   http://www.apache.org/licenses/LICENSE-2.0
    11   *
    12   * Unless required by applicable law or agreed to in writing,
    13   * software distributed under the License is distributed on an
    14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    15   * KIND, either express or implied.  See the License for the
    16   * specific language governing permissions and limitations
    17   * under the License.
    18   */
    19
    20  package org.apache.myfaces.orchestra.lib;
    21
    22  import java.io.IOException;
    23
    24  import javax.servlet.Filter;
    25  import javax.servlet.FilterChain;
    26  import javax.servlet.FilterConfig;
    27  import javax.servlet.ServletException;
    28  import javax.servlet.ServletRequest;
    29  import javax.servlet.ServletResponse;
    30
    31  /**
    32   * Compose two filter objects together, as if filter2 is nested within filter1.
    33   */
    34  public abstract class CompoundFilter implements Filter
    35  {
    36      private final Filter filter1;
    37      private final Filter filter2;
    38
    39      public CompoundFilter(Filter filter1, Filter filter2)
    40      {
    41          this.filter1 = filter1;
    42          this.filter2 = filter2;
    43      }
    44
    45      public void init(FilterConfig filterConfig) throws ServletException
    46      {
    47          filter1.init(filterConfig);
    48          filter2.init(filterConfig);
    49      }
    50
    51      public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
    52          final FilterChain filterChain) throws IOException, ServletException
    53      {
    54          FilterChain chain = new FilterChain()
    55          {
    56              public void doFilter(ServletRequest req, ServletResponse rsp) throws IOException, ServletException
    57              {
    58                  filter2.doFilter(req, rsp, filterChain);
    59              }
    60
    61          };
    62
    63          filter1.doFilter(servletRequest, servletResponse, chain);
    64      }
    65
    66      public void destroy()
    67      {
    68          filter2.destroy();
    69          filter1.destroy();
    70      }
    71  }