<?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>
  <!-- Workaround bugs in findbugs 1.3.9. See http://sourceforge.net/p/findbugs/bugs/918 for more details. -->
  <Match>
    <Or>
      <Package name="org.apache.hadoop.streaming" />
    </Or>
    <Bug pattern="NP_ALWAYS_NULL"/>
  </Match>
  <Match>
    <Class name="org.apache.hadoop.streaming.JarBuilder" />
    <Bug pattern="NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS"/>
  </Match>

  <Match>
    <Or>
      <Class name="org.apache.hadoop.streaming.PipeMapper" />
      <Class name="org.apache.hadoop.streaming.PipeReducer"/>
    </Or>
    <Or>
      <Method name="getFieldSeparator"/>
      <Method name="getInputSeparator"/>
    </Or>
    <Bug pattern="EI_EXPOSE_REP"/>
  </Match>

  <Match>
    <Package name="org.apache.hadoop.record" />
    <Or>
      <Bug pattern="EI_EXPOSE_REP" />
      <Bug pattern="EI_EXPOSE_REP2" />
      <Bug pattern="MS_PKGPROTECT" />
    </Or>
  </Match>
</FindBugsFilter>
