<!--
  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.8</version>
  </parent>
  <artifactId>util</artifactId>
  <version>0.9.0</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.6</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>
            </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/Bi&lt;X&gt;Function.java</template>
                <template>src/main/resources/function/Bi&lt;X&gt;To&lt;Y&gt;Function.java</template>
                <template>src/main/resources/function/BiObj&lt;X&gt;Consumer.java</template>
                <template>src/main/resources/function/BiObj&lt;X&gt;Function.java</template>
                <template>src/main/resources/function/BiObjBi&lt;X&gt;Consumer.java</template>
                <template>src/main/resources/function/BiObjBi&lt;X&gt;Function.java</template>
                <template>src/main/resources/function/BiObjTo&lt;X&gt;Function.java</template>
                <template>src/main/resources/function/Obj&lt;X&gt;Function.java</template>
                <template>src/main/resources/function/Obj&lt;X&gt;To&lt;Y&gt;Function.java</template>
                <template>src/main/resources/function/ObjBi&lt;X&gt;Consumer.java</template>
                <template>src/main/resources/function/ObjBi&lt;X&gt;Function.java</template>
                <template>src/main/resources/function/ObjBi&lt;X&gt;Predicate.java</template>
                <template>src/main/resources/function/BiObjBi&lt;X&gt;Predicate.java</template>
                <template>src/main/resources/function/Tri&lt;X&gt;Consumer.java</template>
                <template>src/main/resources/function/TriObj&lt;X&gt;Consumer.java</template>
                <template>src/main/resources/function/TriObj&lt;X&gt;Function.java</template>
                <template>src/main/resources/function/&lt;X&gt;&lt;Y&gt;Consumer.java</template>
              </templates>
              <destDir>${project.build.directory}/generated-sources/codegen/org/libj/util/function</destDir>
            </configuration>
          </execution>
          <execution>
            <id>missing-function-sources-X</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;Function.java</template>
                <template>src/main/resources/function/&lt;X&gt;Predicate.java</template>
                <template>src/main/resources/function/&lt;X&gt;Supplier.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>
              <skips>
                <skip>int</skip>
                <skip>long</skip>
                <skip>double</skip>
              </skips>
            </configuration>
          </execution>
          <execution>
            <id>missing-function-sources-XY</id>
            <goals>
              <goal>template</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <templates>
                <template>src/main/resources/function/&lt;X&gt;To&lt;Y&gt;Function.java</template>
              </templates>
              <destDir>${project.build.directory}/generated-sources/codegen/org/libj/util/function</destDir>
              <skips>
                <skip>int,long</skip>
                <skip>long,int</skip>
                <skip>double,int</skip>
                <skip>int,double</skip>
                <skip>double,long</skip>
                <skip>long,double</skip>
              </skips>
            </configuration>
          </execution>
          <execution>
            <id>missing-optional-sources</id>
            <goals>
              <goal>template</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <templates>
                <template>src/main/resources/Optional&lt;X&gt;.java</template>
              </templates>
              <destDir>${project.build.directory}/generated-sources/codegen/org/libj/util</destDir>
              <skips>
                <skip>int</skip>
                <skip>long</skip>
                <skip>double</skip>
              </skips>
            </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>
            </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>
                <object>
                  <types>
                    <X></X>
                    <x>Object</x>
                    <XX>Object</XX>
                    <_>//</_>
                  </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>
              <skips>
                <skip>boolean</skip>
              </skips>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <alias>
            <Y>X</Y>
            <y>x</y>
            <YY>XX</YY>
          </alias>
          <parameters>
            <boolean>
              <types>
                <X>Boolean</X>
                <x>boolean</x>
                <XX>Boolean</XX>
                <d>false</d>
                <M>TRUE</M>
                <_>//</_>
              </types>
              <imports>
                <import>org.libj.util.function.BooleanConsumer</import>
                <import>org.libj.util.function.BooleanPredicate</import>
                <import>org.libj.util.primitive.BooleanComparator</import>
                <import>org.libj.util.function.BooleanUnaryOperator</import>
              </imports>
            </boolean>
            <byte>
              <types>
                <X>Byte</X>
                <x>byte</x>
                <XX>Byte</XX>
                <d>0</d>
                <M>MAX_VALUE</M>
                <_>//</_>
              </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>
                <x>char</x>
                <XX>Character</XX>
                <d>0</d>
                <M>MAX_VALUE</M>
                <_>//</_>
              </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>
                <x>short</x>
                <XX>Short</XX>
                <d>0</d>
                <M>MAX_VALUE</M>
                <_>//</_>
              </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>
                <x>int</x>
                <XX>Integer</XX>
                <d>0</d>
                <M>MAX_VALUE</M>
                <_></_>
              </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>
                <x>long</x>
                <XX>Long</XX>
                <d>0</d>
                <M>MAX_VALUE</M>
                <_></_>
              </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>
                <x>float</x>
                <XX>Float</XX>
                <d>0</d>
                <M>MAX_VALUE</M>
                <_>//</_>
              </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>
                <x>double</x>
                <XX>Double</XX>
                <d>0</d>
                <M>MAX_VALUE</M>
                <_></_>
              </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>org.libj</groupId>
      <artifactId>lang</artifactId>
      <version>0.8.0</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.libj</groupId>
      <artifactId>logging</artifactId>
      <version>0.4.6</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.openjax.codegen</groupId>
      <artifactId>radixtree</artifactId>
      <version>0.2.6</version>
    </dependency>

    <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>
  </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>