<?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>
    <Match>
        <Package name="org.apache.hadoop.yarn.proto" />
    </Match>
    <Match>
        <class name="org.apache.hadoop.yarn.service.utils.ServiceApiUtil" />
        <Bug pattern="MS_CANNOT_BE_FINAL" />
    </Match>
    <Match>
        <Class name="org.apache.hadoop.yarn.service.utils.JsonSerDeser" />
        <Bug pattern="OBL_UNSATISFIED_OBLIGATION" />
    </Match>
    <Match>
        <Class name="org.apache.hadoop.yarn.service.utils.JsonSerDeser" />
        <Bug pattern="UI_INHERITANCE_UNSAFE_GETRESOURCE" />
    </Match>
    <Match>
        <Package name="org.apache.hadoop.yarn.service.client.params"/>
        <Bug pattern="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/>
    </Match>
    <Match>
        <Package name="org.apache.hadoop.yarn.service.client.params"/>
        <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
    </Match>
    <Match>
        <Class name="org.apache.hadoop.yarn.service.client.ServiceClient"/>
        <Field name="registryClient" />
        <Bug pattern="IS2_INCONSISTENT_SYNC"/>
    </Match>
    <Match>
        <Class name="org.apache.hadoop.yarn.service.ClientAMPolicyProvider"/>
        <Bug pattern="EI_EXPOSE_REP"/>
    </Match>
    <!-- SE_BAD_FIELD -->
    <Match>
      <Class name="org.apache.hadoop.yarn.service.api.records.Resource" />
      <Or>
        <Field name="additional"/>
      </Or>
      <Bug pattern="SE_BAD_FIELD" />
  </Match>
</FindBugsFilter>
