<!--
  Licensed 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. See accompanying LICENSE file.
-->
<FindBugsFilter>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.api\.client\.rpc\.DAGClientAMProtocolRPC\$.*Proto"/>
    <Field name="unknownFields"/>
    <Bug pattern="SE_BAD_FIELD"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.api\.records\.DAGProtos\$.*"/>
    <Field name="unknownFields"/>
    <Bug pattern="SE_BAD_FIELD"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.runtime\.api\.events\.EventProtos\$.*Proto"/>
    <Field name="unknownFields"/>
    <Bug pattern="SE_BAD_FIELD"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez.dag\.api\.client\.rpc\.DAGClientAMProtocolRPC\$.*Proto"/>
    <Field name="PARSER"/>
    <Bug pattern="MS_SHOULD_BE_FINAL"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.api\.records\.DAGProtos\$.*"/>
    <Field name="PARSER"/>
    <Bug pattern="MS_SHOULD_BE_FINAL"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.runtime\.api\.events\.EventProtos\$*.*Proto"/>
    <Field name="PARSER"/>
    <Bug pattern="MS_SHOULD_BE_FINAL"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.api\.client\.rpc\.DAGClientAMProtocolRPC\$.*Proto\$Builder"/>
    <Method name="maybeForceBuilderInitialization"/>
    <Bug pattern="UCF_USELESS_CONTROL_FLOW"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.api\.records\.DAGProtos\$.*\$Builder"/>
    <Method name="maybeForceBuilderInitialization"/>
    <Bug pattern="UCF_USELESS_CONTROL_FLOW"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.runtime\.api\.events\.EventProtos\$*.*Proto\$Builder"/>
    <Method name="maybeForceBuilderInitialization"/>
    <Bug pattern="UCF_USELESS_CONTROL_FLOW"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.common.VersionInfo"/>
    <Method name="&lt;init&gt;" params="java.lang.String" returns="void"/>
    <Bug pattern="UI_INHERITANCE_UNSAFE_GETRESOURCE"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.common.ReflectionUtils"/>
    <Method name="addResourcesToClasspath" params="java.util.List" returns="void"/>
    <Bug pattern="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.client.TezClient"/>
    <Method name="waitTillReady"/>
    <Bug pattern="SWL_SLEEP_WITH_LOCK_HELD"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.dag.api.EdgeManagerPluginOnDemand$EventRouteMetadata"/>
    <Method name="getSourceIndices"/>
    <Bug pattern="EI_EXPOSE_REP"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.dag.api.EdgeManagerPluginOnDemand$EventRouteMetadata"/>
    <Method name="getTargetIndices"/>
    <Bug pattern="EI_EXPOSE_REP"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.serviceplugins.api.ServicePluginsDescriptor" />
    <Method name="getTaskSchedulerDescriptors" />
    <Bug pattern="EI_EXPOSE_REP" />
  </Match>

  <Match>
    <Class name="org.apache.tez.serviceplugins.api.ServicePluginsDescriptor" />
    <Method name="getContainerLauncherDescriptors" />
    <Bug pattern="EI_EXPOSE_REP" />
  </Match>

  <Match>
    <Class name="org.apache.tez.serviceplugins.api.ServicePluginsDescriptor" />
    <Method name="getTaskCommunicatorDescriptors" />
    <Bug pattern="EI_EXPOSE_REP" />
  </Match>

</FindBugsFilter>
