<?xml version="1.0" ?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.end2endlogic</groupId>
  <artifactId>quantum-framework</artifactId>
  <version>1.2.1</version>

  <parent>
    <groupId>com.end2endlogic</groupId>
    <artifactId>quantum-parent</artifactId>
    <version>1.2.1</version>
  </parent>

  <name>${project.groupId}:${project.artifactId}</name>
  <description
    >a REST / Mongodb framework for quickly building multi-tenant SAAS platforms</description>
  <url>https://github.com/end2endlogic-com/quantum-framework</url>

  <licenses>
    <license>
      <name>The Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <scm>
    <url>https://github.com/end2endlogic-com/quantum-framework</url>
    <connection
        >scm:git:https://github.com/end2endlogic-com/quantum-framework.git</connection>
    <developerConnection
        >scm:git:https://github.com/end2endlogic-com/quantum-framework.git</developerConnection>
  </scm>

  <developers>
    <developer>
      <name>Michael Ingardia</name>
      <email>mingardia@end2endlogic.com</email>
      <organization>End2Endlogic.com</organization>
      <organizationUrl>http://www.end2endlogic.com</organizationUrl>
    </developer>
  </developers>
  <properties>
    <maven.compiler.release>17</maven.compiler.release>
    <graalvm.version>24.1.0</graalvm.version>
    <quarkus-amazon-services.version>2.18.1</quarkus-amazon-services.version>
    <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss'Z'</maven.build.timestamp.format>
  </properties>

  <dependencyManagement>
         <dependencies>
         <dependency>
             <groupId>${quarkus.platform.group-id}</groupId>
             <artifactId>${quarkus.platform.artifact-id}</artifactId>
             <version>${quarkus.platform.version}</version>
             <type>pom</type>
             <scope>import</scope>
         </dependency>

         </dependencies>
   </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-arc</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-rest-jackson</artifactId>
    </dependency>

    <!-- comment out for local development, uncomment for sam deploy
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-amazon-lambda-http</artifactId>
    </dependency> -->

    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-security</artifactId>
    </dependency>

    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-smallrye-jwt-build</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-smallrye-jwt</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-smallrye-openapi</artifactId>
    </dependency>
    <dependency>
      <groupId>com.end2endlogic</groupId>
      <artifactId>quantum-extension</artifactId>
      <version>1.1.2</version>
    </dependency>
   <!--
    Not needed here is in the quantum extension
   <dependency>
      <groupId>dev.morphia.morphia</groupId>
      <artifactId>morphia-core</artifactId>
      <version>${morphia.version}</version>
    </dependency> -->
    <!--<dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-mongodb-client</artifactId>
    </dependency>
     -->

    <!--<dependency>
      <groupId>org.neo4j</groupId>
      <artifactId>neo4j-ogm-quarkus</artifactId>
      <version>1.5.1</version>
    </dependency>
    included transitively by ogm dependency <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-neo4j</artifactId>
    </dependency>
    -->
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-qute</artifactId>
    </dependency>

    <dependency>
      <groupId>com.end2endlogic</groupId>
      <artifactId>quantum-models</artifactId>
      <version>1.2.1-SNAPSHOT</version>
    </dependency>


    <dependency>
      <groupId>com.github.jnr</groupId>
      <artifactId>jnr-unixsocket</artifactId>
      <version>0.38.22</version>
      <scope>compile</scope>
    </dependency>
<!--
    <dependency>
      <groupId>com.kohlschutter.junixsocket</groupId>
      <artifactId>junixsocket-core</artifactId>
      <version>2.10.1</version>
      <type>pom</type>
    </dependency> -->
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-hibernate-validator</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-scheduler</artifactId>
    </dependency>
    <dependency>
      <groupId>com.end2endlogic</groupId>
      <artifactId>quarkus-moneta</artifactId>
      <version>2.1.0e</version>
    </dependency>
    <dependency>
      <groupId>com.end2endlogic</groupId>
      <artifactId>jakarta-transformer-extension</artifactId>
      <version>0.0.1</version>
    </dependency>

    <dependency>
      <groupId>io.github.jopenlibs</groupId>
      <artifactId>vault-java-driver</artifactId>
      <version>6.2.0</version>
    </dependency>

    <!-- Future dependencies for moving to newer graal version<dependency>-->
    <!-- this is dependent on the newest way to include polygot with out gu.  This is introduced in JDK 21 and above -->
  <dependency>
    <groupId>org.graalvm.truffle</groupId>
    <artifactId>truffle-api</artifactId>
    <version>${graalvm.version}</version>
  </dependency>
  <dependency>
    <groupId>org.graalvm.truffle</groupId>
    <artifactId>truffle-dsl-processor</artifactId>
    <version>${graalvm.version}</version>
    <scope>provided</scope>
  </dependency>
     <dependency>
      <groupId>org.graalvm.polyglot</groupId>
      <artifactId>polyglot</artifactId>
      <version>${graalvm.version}</version>
    </dependency>
    <!-- java script support -->
    <dependency>
      <groupId>org.graalvm.polyglot</groupId>
      <artifactId>js-community</artifactId>
      <version>${graalvm.version}</version>
      <type>pom</type>
    </dependency>
    <!-- python support -->
    <dependency>
      <groupId>org.graalvm.polyglot</groupId>
      <artifactId>python</artifactId>
      <version>${graalvm.version}</version>
      <type>pom</type>
    </dependency>

    <!-- this has been replaced by the polygot library <dependency>
       <groupId>org.graalvm.sdk</groupId>
       <artifactId>nativeimage</artifactId>
       <version>${graalvm.version}</version>
     </dependency> -->
    <dependency>
      <groupId>at.favre.lib</groupId>
      <artifactId>bcrypt</artifactId>
      <version>0.10.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcpkix-jdk18on</artifactId>
      <version>1.77</version>
    </dependency>  -->


    <!-- Distributed locks and Migration framework -->
    <dependency>
      <groupId>com.coditory.sherlock</groupId>
      <artifactId>sherlock-mongo</artifactId>
      <version>1.0.3</version>
    </dependency>

    <!-- Internationalization of messages -->
    <dependency>
      <groupId>com.coditory.quark</groupId>
      <artifactId>quark-i18n</artifactId>
      <version>0.0.14</version>
    </dependency>

    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>32.1.2-jre</version>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-container-image-docker</artifactId>
    </dependency>

    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
      <version>2.12.5</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.module</groupId>
      <artifactId>jackson-module-jsonSchema-jakarta</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-yaml</artifactId>
      <version>${jackson.version}</version>
    </dependency>

    <dependency>
      <groupId>com.github.wnameless.json</groupId>
      <artifactId>json-flattener</artifactId>
      <version>0.16.6</version>
    </dependency>

    <dependency>
      <groupId>net.sf.supercsv</groupId>
      <artifactId>super-csv</artifactId>
      <version>2.4.0</version>
    </dependency>
    <dependency>
      <groupId>net.sf.supercsv</groupId>
      <artifactId>super-csv-dozer</artifactId>
      <version>2.4.0</version>
    </dependency>
    <dependency>
      <groupId>net.sf.supercsv</groupId>
      <artifactId>super-csv-java8</artifactId>
      <version>2.4.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.18.0</version>
    </dependency>

    <dependency>
      <groupId>com.github.java-json-tools</groupId>
      <artifactId>json-schema-validator</artifactId>
      <version>2.2.14</version>
    </dependency>

    <!--Replaced by Fork com.end2endlogic.jsurfer <dependency>
      <groupId>com.github.jsurfer</groupId>
      <artifactId>jsurfer-jackson</artifactId>
      <version>1.6.4</version>
    </dependency> -->
    <!--
    <dependency>
      <groupId>com.end2endlogic.jsurfer</groupId>
      <artifactId>jsurfer-jackson</artifactId>
      <version>1.6.4</version>
    </dependency> -->
    <dependency>
      <groupId>org.zalando</groupId>
      <artifactId>jackson-datatype-money</artifactId>
      <version>1.3.0</version>
    </dependency>

    <dependency>
      <groupId>com.postmarkapp</groupId>
      <artifactId>postmark</artifactId>
      <version>1.11.1</version>
    </dependency>

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombrok.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.jetbrains</groupId>
      <artifactId>annotations</artifactId>
      <version>24.0.1</version>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-junit5</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.rest-assured</groupId>
      <artifactId>rest-assured</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>osgi.annotation</artifactId>
      <version>8.1.0</version> <!-- Use the appropriate version -->
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>${quarkus.platform.group-id}</groupId>
        <artifactId>quarkus-maven-plugin</artifactId>
        <extensions>true</extensions>
        <executions>
          <execution>
            <goals>
              <goal>build</goal>
              <goal>generate-code</goal>
              <goal>generate-code-tests</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
     <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>3.2.1</version>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>create</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <doCheck>false</doCheck>
          <doUpdate>true</doUpdate>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.3.1</version>
        <configuration>
          <encoding>UTF-8</encoding>
          <delimiters>
            <delimiter>${*}</delimiter>
          </delimiters>
          <useDefaultDelimiters>false</useDefaultDelimiters>
        </configuration>
        <executions>
          <execution>
            <id>default-resources</id>
            <phase>process-resources</phase>
            <goals>
              <goal>resources</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>io.smallrye</groupId>
        <artifactId>jandex-maven-plugin</artifactId>
        <version>3.2.2</version>
        <executions>
          <execution>
            <id>make-index</id>
            <goals>
              <goal>jandex</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <indexName>jandex.idx</indexName>
          <verbose>true</verbose>
          <fileSets>
            <fileSet>
              <dependency>
                <groupId>com.end2endlogic</groupId>
                <artifactId>quantum-models</artifactId>
              </dependency>
            </fileSet>
          </fileSets>
        </configuration>
      </plugin>
<plugin>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>${surefire-plugin.version}</version>
  <executions>
    <execution>
      <id>default-test</id>
      <phase>test</phase>
      <goals>
        <goal>test</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <systemPropertyVariables>
      <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
    </systemPropertyVariables>
  </configuration>
</plugin>
     <!-- <plugin>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4-maven-plugin</artifactId>
        <version>${antlr.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>antlr4</goal>
            </goals>
          </execution>
        </executions>
      </plugin> -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.5.0</version>
        <executions>
          <execution>
            <id>enforce-java</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <version>17</version>
                </requireJavaVersion>
                <requireMavenVersion>
                  <version>[3.9.8,)</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.sonatype.central</groupId>
        <artifactId>central-publishing-maven-plugin</artifactId>
        <version>0.7.0</version>
        <extensions>true</extensions>
        <configuration>
          <publishingServerId>central</publishingServerId>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>3.0.1</version>
        <executions>
          <execution>
            <id>sign-artifacts</id>
            <phase>verify</phase>
            <goals>
              <goal>sign</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <gpgArguments>
            <arg>--pinentry-mode</arg>
            <arg>loopback</arg>
          </gpgArguments>
          <passphraseServerId>gpg.passphrase</passphraseServerId>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.2.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.11.2</version>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>native</id>
      <activation>
        <property>
          <name>native</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.antlr</groupId>
            <artifactId>antlr4-maven-plugin</artifactId>
            <version>${antlr.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>antlr4</goal>
                </goals>
                <configuration>
                  <sourceDirectory
                                    >${project.basedir}/src/main/antlr4</sourceDirectory>
                  <outputDirectory
                                    >${project.build.directory}/generated-sources/antlr4</outputDirectory>
                </configuration>
              </execution>
            </executions>
          </plugin>
       <!-- seems to be failing in class scanner when present  -->
          <plugin>
            <groupId>io.smallrye</groupId>
            <artifactId>jandex-maven-plugin</artifactId>
            <version>3.2.2</version>
            <executions>
              <execution>
                <id>make-index</id>
                <goals>
                  <goal>jandex</goal>
                </goals>
                <configuration>
                  <fileSets>
                    <fileSet>
                      <dependency>
                        <groupId>com.end2endlogic</groupId>
                        <artifactId>quantum-models</artifactId>
                      </dependency>
                    </fileSet>
                  </fileSets>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>${surefire-plugin.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
                <configuration>
                  <systemPropertyVariables>
                    <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
                    <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                    <maven.home>${maven.home}</maven.home>
                  </systemPropertyVariables>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>3.11.2</version>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      <properties>
        <quarkus.native.enabled>true</quarkus.native.enabled>
        <quarkus.package.jar.enabled>false</quarkus.package.jar.enabled>
      </properties>
    </profile>
  </profiles>
  <repositories>
    <repository>
      <name>Central Portal Snapshots</name>
      <id>central-portal-snapshots</id>
      <url>https://central.sonatype.com/repository/maven-snapshots/</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>
  <!--<repositories>
    <repository>
      <id>io.cloudrepo</id>
      <url>https://end2endlogic.mycloudrepo.io/repositories/end2endlogic-opensource-release</url>
      <releases/>
    </repository>
  </repositories> -->
</project>
