<?xml version="1.0" encoding="UTF-8"?>
<supplementalDataModels>
  <!--
  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.
  -->
  <supplement>
    <project>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
      <name>Apache Commons CLI</name>
      <url>http://jakarta.apache.org/commons/cli/</url>
      <organization>
        <name>The Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
      </organization>
      <licenses>
        <license>
          <name>Apache License, Version 2.0</name>
          <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
          <distribution>repo</distribution>
        </license>
      </licenses>
    </project>
  </supplement>
  <supplement>
    <project>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <name>Apache Log4j</name>
      <url>http://logging.apache.org/log4j/</url>
      <organization>
        <name>The Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
      </organization>
      <licenses>
        <license>
          <name>Apache License, Version 2.0</name>
          <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
          <distribution>repo</distribution>
        </license>
      </licenses>
    </project>
  </supplement>
  <!-- Also added manually in pom.xml appeneded text because test
       dependencies are not automatically included by the NOTICE 
       generator -->
  <supplement>
    <project>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <name>JUnit</name>
      <url>http://www.junit.org/</url>
      <organization>
      	<name>Kent Beck, Erich Gamma, and David Saff</name>
      </organization>
      <licenses>
        <license>
          <name>Common Public License Version 1.0</name>
          <url>http://www.opensource.org/licenses/cpl.php</url>
        </license>
      </licenses>
    </project>
  </supplement>
  <supplement>
    <project>
      <groupId>dnsjava</groupId>
      <artifactId>dnsjava</artifactId>
      <name>DNSJava</name>
      <url>http://www.dnsjava.org/</url>
      <organization>
      	<name>Brian Wellington</name>
      </organization>
      <licenses>
        <license>
          <name>3 Clauses BSD license</name>
          <url>http://www.dnsjava.org/dnsjava-current/README</url>
        </license>
      </licenses>
    </project>
  </supplement>
  <supplement>
    <project>
      <groupId>uk.nominet</groupId>
      <artifactId>dnsjnio</artifactId>
      <name>DNSJnio</name>
      <url>http://sourceforge.net/projects/dnsjnio/</url>
      <organization>
      	<name>Alex D. and Nominet UK</name>
      </organization>
      <licenses>
        <license>
          <name>Apache License, Version 2.0</name>
          <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
          <distribution>repo</distribution>
        </license>
      </licenses>
    </project>
  </supplement>
  <supplement>
    <project>
      <groupId>org.jvyaml</groupId>
      <artifactId>jvyaml</artifactId>
      <name>JvYAML</name>
      <url>https://jvyaml.dev.java.net/</url>
      <organization>
      	<name>Ola Bini</name>
      </organization>
      <licenses>
        <license>
          <name>The MIT License</name>
          <url>http://www.opensource.org/licenses/mit-license.php</url>
        </license>
      </licenses>
    </project>
  </supplement>
</supplementalDataModels>