<?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" />
            <Class name="org.apache.cassandra.sidecar.tasks.HealthCheckPeriodicTask" />
        </Or>
    </Match>

    <!-- Ignore GC call in CassandraTestTemplate as we want to GC after cluster shutdown -->
    <Match>
        <Class name="org.apache.cassandra.sidecar.test.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>
