<?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://github.com/spotbugs/filter/3.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://github.com/spotbugs/filter/3.0.0 https://raw.githubusercontent.com/spotbugs/spotbugs/3.1.0/spotbugs/etc/findbugsfilter.xsd">
    <Match>
        <Package name="~.*\.domain"/>
    </Match>
    <Match>
        <Package name="~.*\.domain\..*"/>
    </Match>
    <Match>
        <Package name="~.*\.data"/>
    </Match>
    <Match>
        <Package name="~org\.apache\.fineract\.integrationtests.*"/>
    </Match>
    <Match>
        <Package name="~.*\.self\..*"/>
        <Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD" />
    </Match>
    <Match>
        <Package name="~.*\.api"/>
        <Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD" />
    </Match>
    <Match>
        <Package name="~.*\.api"/>
        <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD" />
    </Match>
    <Match>
        <Package name="~.*\.api"/>
        <Bug pattern="UUF_UNUSED_FIELD" />
    </Match>
    <Match>
        <Bug pattern="MS_EXPOSE_REP" />
    </Match>
    <Match>
        <Bug pattern="EI_EXPOSE_REP" />
    </Match>
    <Match>
        <Bug pattern="EI_EXPOSE_REP2" />
    </Match>
    <Match>
        <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE" />
    </Match>
    <Match>
        <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE" />
    </Match>
    <Match>
        <Bug pattern="NP_NULL_ON_SOME_PATH" />
    </Match>
    <Match>
        <Bug pattern="NP_NULL_PARAM_DEREF" />
    </Match>
    <Match>
        <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE" />
    </Match>
    <Match>
        <Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE" />
    </Match>
    <Match>
        <Bug pattern="REC_CATCH_EXCEPTION" />
    </Match>
    <Match>
        <Bug pattern="OBL_UNSATISFIED_OBLIGATION" />
    </Match>
    <Match>
        <Bug pattern="OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE" />
    </Match>
    <Match>
        <Bug pattern="MS_MUTABLE_COLLECTION_PKGPROTECT" />
    </Match>
    <Match>
        <Bug pattern="BX_UNBOXING_IMMEDIATELY_REBOXED" />
    </Match>
    <Match>
        <Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE" />
    </Match>
    <Match>
        <Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT" />
    </Match>
    <Match>
        <Bug pattern="UR_UNINIT_READ" />
    </Match>
</FindBugsFilter>
