<?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
        xmlns="https://spotbugs.readthedocs.io/en/stable/filter.html"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://github.com/spotbugs/filter/4.0.0 https://raw.githubusercontent.com/spotbugs/spotbugs/4.0.0/spotbugs/etc/findbugsfilter.xsd">


    <!--  SpotBugs erroneously flags this error for try-with-resources in JDK11 (possibly limited to OpenJDK): -->
    <!-- https://github.com/spotbugs/spotbugs/issues/756 -->
    <Match>
        <Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE"/>
    </Match>

    <!-- Ignore RV_RETURN_VALUE_IGNORED_BAD_PRACTICE for directory/file creation during test setup -->
    <Match>
        <Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE" />
        <Or>
            <Class name="org.apache.cassandra.sidecar.snapshots.AbstractSnapshotPathBuilderTest" />
            <Class name="org.apache.cassandra.sidecar.routes.SStableUploadsHandlerTest" />
        </Or>
    </Match>

    <!-- Ignore RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT for classes that executes in the fire and forget fashion -->
    <Match>
        <Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT" />
        <Or>
            <Class name="org.apache.cassandra.sidecar.concurrent.ExecutorPools$TaskExecutorPool" />
            <Class name="org.apache.cassandra.sidecar.CassandraSidecarDaemon" />
            <Class name="org.apache.cassandra.sidecar.utils.SSTableImporter" />
        </Or>
    </Match>

    <!-- Ignore GC call in CassandraTestTemplate as we want to GC after cluster shutdown -->
    <Match>
        <Class name="org.apache.cassandra.sidecar.testing.CassandraTestTemplate" />
        <Bug pattern="DM_GC" />
    </Match>

    <!-- Ignore DMI_HARDCODED_ABSOLUTE_FILENAME for testing SnapshotDirectory.of with strings that are paths -->
    <Match>
        <Class name="org.apache.cassandra.sidecar.snapshots.SnapshotDirectoryTest" />
        <Bug pattern="DMI_HARDCODED_ABSOLUTE_FILENAME" />
    </Match>

    <Match>
        <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE" />
        <Class name="org.apache.cassandra.sidecar.utils.SSTableUploader" />
    </Match>

    <Match>
        <Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD" />
        <Class name="org.apache.cassandra.sidecar.routes.RingHandlerTest" />
    </Match>

    <Match>
        <Bug pattern="EI_EXPOSE_REP" />
        <Class name="org.apache.cassandra.sidecar.client.HttpResponseImpl" />
    </Match>

    <Match>
        <Bug pattern="EI_EXPOSE_REP2" />
        <Class name="org.apache.cassandra.sidecar.client.HttpResponseImpl" />
    </Match>

    <Match>
        <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE" />
        <Class name="org.apache.cassandra.sidecar.common.ResourceUtils" />
    </Match>

</FindBugsFilter>
