<!--
  Copyright (c) 2006 LibJ

  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files (the "Software"), to deal
  in the Software without restriction, including without limitation the rights
  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  copies of the Software, and to permit persons to whom the Software is
  furnished to do so, subject to the following conditions:

  The above copyright notice and this permission notice shall be included in
  all copies or substantial portions of the Software.

  You should have received a copy of The MIT License (MIT) along with this
  program. If not, see <http://opensource.org/licenses/MIT/>.
-->
<project
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.libj</groupId>
    <artifactId>libj</artifactId>
    <version>0.9.7</version>
  </parent>
  <artifactId>util</artifactId>
  <version>0.8.1</version>
  <name>LibJ Util</name>
  <description>
    Supplementary utilities for classes that belong to java.util, or are considered essential as to justify existence in java.util.
  </description>
  <build>
    <plugins>
      <plugin>
        <groupId>org.openjax.codegen</groupId>
        <artifactId>codegen-maven-plugin</artifactId>
        <version>0.2.5</version>
        <executions>
          <execution>
            <id>characterClasses</id>
            <goals>
              <goal>radixtree</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <inFile>src/main/resources/characterClasses.txt</inFile>
              <destDir>${project.build.directory}/generated-sources/codegen</destDir>
              <className>org.libj.util.CharacterClassEnum</className>
            </configuration>
          </execution>
          <execution>
            <id>primitive-sources</id>
            <goals>
              <goal>template</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <templates>
                <template>src/main/resources/primitive/&lt;X&gt;Collection.java</template>
                <template>src/main/resources/primitive/&lt;X&gt;Comparator.java</template>
                <template>src/main/resources/primitive/&lt;X&gt;Iterable.java</template>
                <template>src/main/resources/primitive/&lt;X&gt;Iterator.java</template>
                <template>src/main/resources/primitive/&lt;X&gt;List.java</template>
                <template>src/main/resources/primitive/&lt;X&gt;ListIterator.java</template>
                <template>src/main/resources/primitive/&lt;X&gt;Set.java</template>
                <template>src/main/resources/primitive/Array&lt;X&gt;List.java</template>
                <template>src/main/resources/primitive/Hash&lt;X&gt;Set.java</template>
              </templates>
              <destDir>${project.build.directory}/generated-sources/codegen/org/libj/util/primitive</destDir>
              <parameters>
                <boolean>
                  <skip>true</skip>
                </boolean>
              </parameters>
            </configuration>
          </execution>
          <execution>
            <id>all-function-sources</id>
            <goals>
              <goal>template</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <templates>
                <template>src/main/resources/function/Bi&lt;X&gt;Consumer.java</template>
                <template>src/main/resources/function/BiObj&lt;X&gt;Consumer.java</template>
                <template>src/main/resources/function/BiObjBi&lt;X&gt;Consumer.java</template>
                <template>src/main/resources/function/Obj&lt;X&gt;Function.java</template>
                <template>src/main/resources/function/ObjBi&lt;X&gt;Consumer.java</template>
                <template>src/main/resources/function/Tri&lt;X&gt;Consumer.java</template>
              </templates>
              <destDir>${project.build.directory}/generated-sources/codegen/org/libj/util/function</destDir>
            </configuration>
          </execution>
          <execution>
            <id>missing-function-sources</id>
            <goals>
              <goal>template</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <templates>
                <template>src/main/resources/function/&lt;X&gt;Consumer.java</template>
                <template>src/main/resources/function/&lt;X&gt;Predicate.java</template>
                <template>src/main/resources/function/&lt;X&gt;UnaryOperator.java</template>
                <template>src/main/resources/function/To&lt;X&gt;Function.java</template>
              </templates>
              <destDir>${project.build.directory}/generated-sources/codegen/org/libj/util/function</destDir>
              <parameters>
                <int>
                  <skip>true</skip>
                </int>
                <long>
                  <skip>true</skip>
                </long>
                <double>
                  <skip>true</skip>
                </double>
              </parameters>
            </configuration>
          </execution>
          <execution>
            <id>primitive-sort-sources</id>
            <goals>
              <goal>template</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <templates>
                <template>src/main/resources/primitive/&lt;X&gt;TimSort.java</template>
              </templates>
              <destDir>${project.build.directory}/generated-sources/codegen/org/libj/util/primitive</destDir>
              <parameters>
                <boolean>
                  <skip>true</skip>
                </boolean>
              </parameters>
            </configuration>
          </execution>
          <execution>
            <id>paired-sort-sources</id>
            <goals>
              <goal>template</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <templates>
                <template>src/main/resources/primitive/&lt;X&gt;PairedTimSort.java</template>
              </templates>
              <destDir>${project.build.directory}/generated-sources/codegen/org/libj/util/primitive</destDir>
              <parameters>
                <boolean>
                  <skip>true</skip>
                </boolean>
                <object>
                  <types>
                    <X></X>
                    <Y>Object</Y>
                    <y>Object</y>
                    <_>//</_>
                  </types>
                  <imports>
                    <import>java.util.Comparator</import>
                  </imports>
                </object>
              </parameters>
            </configuration>
          </execution>
          <execution>
            <id>primitive-test-sources</id>
            <goals>
              <goal>template</goal>
            </goals>
            <phase>generate-test-sources</phase>
            <configuration>
              <templates>
                <template>src/test/resources/Array&lt;X&gt;ListTest.java</template>
                <template>src/test/resources/Hash&lt;X&gt;SetTest.java</template>
              </templates>
              <destDir>${project.build.directory}/generated-test-sources/codegen/org/libj/util/primitive</destDir>
              <parameters>
                <boolean>
                  <skip>true</skip>
                </boolean>
              </parameters>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <parameters>
            <boolean>
              <types>
                <X>Boolean</X>
                <Y>Boolean</Y>
                <y>boolean</y>
                <_>//</_>
              </types>
              <imports>
                <import>org.libj.util.function.BooleanConsumer</import>
                <import>org.libj.util.function.BooleanPredicate</import>
                <import>org.libj.util.primitive.BooleanComparator</import>
              </imports>
            </boolean>
            <byte>
              <types>
                <X>Byte</X>
                <Y>Byte</Y>
                <y>byte</y>
                <_>//</_>
              </types>
              <imports>
                <import>org.libj.util.function.ByteConsumer</import>
                <import>org.libj.util.function.BytePredicate</import>
                <import>org.libj.util.function.ByteUnaryOperator</import>
                <import>org.libj.util.primitive.ByteComparator</import>
                <import>org.libj.util.primitive.BytePairedTimSort</import>
              </imports>
            </byte>
            <char>
              <types>
                <X>Char</X>
                <Y>Character</Y>
                <y>char</y>
                <_>//</_>
              </types>
              <imports>
                <import>org.libj.util.function.CharConsumer</import>
                <import>org.libj.util.function.CharPredicate</import>
                <import>org.libj.util.function.CharUnaryOperator</import>
                <import>org.libj.util.primitive.CharComparator</import>
                <import>org.libj.util.primitive.CharPairedTimSort</import>
              </imports>
            </char>
            <short>
              <types>
                <X>Short</X>
                <Y>Short</Y>
                <y>short</y>
                <_>//</_>
              </types>
              <imports>
                <import>org.libj.util.function.ShortConsumer</import>
                <import>org.libj.util.function.ShortPredicate</import>
                <import>org.libj.util.function.ShortUnaryOperator</import>
                <import>org.libj.util.primitive.ShortComparator</import>
                <import>org.libj.util.primitive.ShortPairedTimSort</import>
              </imports>
            </short>
            <int>
              <types>
                <X>Int</X>
                <Y>Integer</Y>
                <y>int</y>
                <_></_>
              </types>
              <imports>
                <import>java.util.function.IntConsumer</import>
                <import>java.util.function.IntPredicate</import>
                <import>java.util.function.IntUnaryOperator</import>
                <import>java.util.Spliterator</import>
                <import>java.util.stream.IntStream</import>
                <import>java.util.stream.StreamSupport</import>
                <import>org.libj.util.primitive.IntComparator</import>
                <import>org.libj.util.primitive.IntPairedTimSort</import>
              </imports>
            </int>
            <long>
              <types>
                <X>Long</X>
                <Y>Long</Y>
                <y>long</y>
                <_></_>
              </types>
              <imports>
                <import>java.util.function.LongConsumer</import>
                <import>java.util.function.LongPredicate</import>
                <import>java.util.function.LongUnaryOperator</import>
                <import>java.util.Spliterator</import>
                <import>java.util.stream.LongStream</import>
                <import>java.util.stream.StreamSupport</import>
                <import>org.libj.util.primitive.LongComparator</import>
                <import>org.libj.util.primitive.LongPairedTimSort</import>
              </imports>
            </long>
            <float>
              <types>
                <X>Float</X>
                <Y>Float</Y>
                <y>float</y>
                <_>//</_>
              </types>
              <imports>
                <import>org.libj.util.function.FloatConsumer</import>
                <import>org.libj.util.function.FloatPredicate</import>
                <import>org.libj.util.function.FloatUnaryOperator</import>
                <import>org.libj.util.primitive.FloatComparator</import>
                <import>org.libj.util.primitive.FloatPairedTimSort</import>
              </imports>
            </float>
            <double>
              <types>
                <X>Double</X>
                <Y>Double</Y>
                <y>double</y>
                <_></_>
              </types>
              <imports>
                <import>java.util.function.DoubleConsumer</import>
                <import>java.util.function.DoublePredicate</import>
                <import>java.util.function.DoubleUnaryOperator</import>
                <import>java.util.Spliterator</import>
                <import>java.util.stream.DoubleStream</import>
                <import>java.util.stream.StreamSupport</import>
                <import>org.libj.util.primitive.DoubleComparator</import>
                <import>org.libj.util.primitive.DoublePairedTimSort</import>
              </imports>
            </double>
          </parameters>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>javax.annotation</groupId>
      <artifactId>javax.annotation-api</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>diff_match_patch</groupId>
      <artifactId>diff_match_patch</artifactId>
      <version>current</version>
    </dependency>
    <dependency>
      <groupId>org.openjax.codegen</groupId>
      <artifactId>radixtree</artifactId>
      <version>0.2.5</version>
    </dependency>
    <dependency>
      <groupId>org.libj</groupId>
      <artifactId>lang</artifactId>
      <version>0.7.5</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.libj</groupId>
      <artifactId>test</artifactId>
      <version>0.7.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.libj</groupId>
      <artifactId>logging</artifactId>
      <version>0.4.5</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <repositories>
    <repository>
      <id>redhat</id>
      <name>Redhat GA Repository</name>
      <url>https://maven.repository.redhat.com/ga/</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
</project>