<?xml version="1.0" encoding="UTF-8"?>
<!--
    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.
-->
<FindBugsFilter>
  <Match>
    <Bug pattern="SE_BAD_FIELD"/>
    <Class name="org.apache.sling.clam.http.internal.ClamEventsServlet"/>
    <Field name="clients"/>
  </Match>
  <Match>
    <Bug pattern="VA_FORMAT_STRING_USES_NEWLINE"/>
    <Class name="org.apache.sling.clam.http.internal.ClamEventsServlet$Client"/>
    <Method name="onWritePossible"/>
  </Match>
  <Match>
    <Bug pattern="REC_CATCH_EXCEPTION"/>
    <Class name="org.apache.sling.clam.oak.internal.NodeObservingJcrPropertyDigger$DigTask"/>
    <Method name="run"/>
  </Match>
  <Match>
    <!-- https://github.com/spotbugs/spotbugs/issues/868 -->
    <Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE"/>
    <Class name="org.apache.sling.clam.http.internal.ResponseUtil"/>
    <Method name="handleError"/>
  </Match>
</FindBugsFilter>
