Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 package org.apache.sling.engine.impl.log;
 
 
 
 
 @Component(immediate = true, policy = .)
 @Service(value = Filter.class)
         name = "RequestLoggerService",
         referenceInterface = RequestLoggerService.class,
         cardinality = .,
         policy = .)
     @Property(name = "pattern", value = "/.*"),
     @Property(name = ., intValue = 0x8000),
     @Property(name = "service.description", value = "Request Logger Filter"),
     @Property(name = "service.vendor", value = "The Apache Software Foundation")
 })
 public final class RequestLoggerFilter implements Filter {
 
     private static final RequestLoggerService[] NONE = new RequestLoggerService[0];
 
     private RequestLoggerService[] requestEntry = ;
 
     private RequestLoggerService[] requestExit = ;
 
     public void init(FilterConfig filterConfig) {
     }
 
     public void doFilter(ServletRequest requestServletResponse responseFilterChain chainthrows IOException,
             ServletException {
 
         final RequestLoggerRequest rlreq = new RequestLoggerRequest((HttpServletRequestrequest);
         final RequestLoggerResponse rlres = new RequestLoggerResponse((HttpServletResponseresponse);
 
         log(this.rlreqrlres);
         try {
             chain.doFilter(rlreqrlres);
         } finally {
             rlres.requestEnd();
             log(this.rlreqrlres);
         }
     }
 
     public void destroy() {
         FileRequestLog.dispose();
     }
 
     // ---------- SCR Integration ----------------------------------------------
 
     @SuppressWarnings("unused")
     private void bindRequestLoggerService(RequestLoggerService requestLoggerService) {
         if (requestLoggerService.isOnEntry()) {
             this. = this.addService(this.requestLoggerService);
         } else {
             this. = this.addService(this.requestLoggerService);
         }
     }
 
     @SuppressWarnings("unused")
     private void unbindRequestLoggerService(RequestLoggerService requestLoggerService) {
         if (requestLoggerService.isOnEntry()) {
            this. = this.removeService(this.requestLoggerService);
        } else {
            this. = this.removeService(this.requestLoggerService);
        }
    }
    private RequestLoggerService[] addService(RequestLoggerService[] listRequestLoggerService requestLoggerService) {
        if (list.length == 0) {
            return new RequestLoggerService[] {
                requestLoggerService
            };
        }
        // add the service to the list, must not be in the list yet due to
        // the SCR contract
        RequestLoggerService[] newList = new RequestLoggerService[list.length + 1];
        System.arraycopy(list, 0, newList, 0, list.length);
        newList[list.length] = requestLoggerService;
        return newList;
    }
    private RequestLoggerService[] removeService(RequestLoggerService[] listRequestLoggerService requestLoggerService) {
        RequestLoggerService[] newList = ;
        for (int i = 0; i < list.lengthi++) {
            if (list[i] == requestLoggerService) {
                newList = new RequestLoggerService[list.length - 1];
                // if not first take over the leading elements
                if (i > 0) {
                    System.arraycopy(list, 0, newList, 0, i);
                }
                // if not the last element, shift rest to the left
                if (i < list.length - 1) {
                    System.arraycopy(listi + 1, newList, 0, newList.length - i);
                }
            }
        }
        // return the new list if at least one entry is contained
        return (newList.length > 0) ? newList : ;
    }
    private void log(RequestLoggerService[] servicesfinal RequestLoggerRequest request,
            final RequestLoggerResponse response) {
        for (RequestLoggerService service : services) {
            try {
                service.log(requestresponse);
            } catch (Exception e) {
                LoggerFactory.getLogger(getClass()).debug("log: RequestLoggerService failed logging"e);
            }
        }
    }
New to GrepCode? Check out our FAQ X