<!--
  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.client.TezClient"/>
    <Method name="stop"/>
    <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>

  <Match>
    <Class name="org.apache.tez.client.TezClient"/>
    <Or>
      <Field name="clientTimeout"/>
      <Field name="frameworkClient"/>
      <Field name="sessionAppId"/>
    </Or>
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>

</FindBugsFilter>
