<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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">

    <parent>
        <groupId>org.eclipse.dirigible</groupId>
        <artifactId>dirigible-components-parent</artifactId>
        <version>13.6.0</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>dirigible-components-engine-java</artifactId>
    <packaging>jar</packaging>
    <name>Components - Engine - Java</name>
    <description>
        Runtime engine for client-supplied Java sources under the Dirigible registry.
        Discovers *.java files via a dedicated synchronizer, compiles them in-process
        with the JDK Java Compiler API, loads them under per-project isolated
        URLClassLoaders, and exposes them as REST endpoints with hot reload.
    </description>

    <properties>
        <license.header.location>../../../licensing-header.txt</license.header.location>
        <parent.pom.folder>../../../</parent.pom.folder>
    </properties>

    <dependencies>

        <!-- Synchronizer infrastructure, Artefact base, BaseEndpoint -->
        <dependency>
            <groupId>org.eclipse.dirigible</groupId>
            <artifactId>dirigible-components-core-base</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!--
          ClientClassLoader + ClientClassLoaderHolder. Hosted in core-java so engine-bpm-flowable
          can resolve client classes through the same holder without taking a compile dep on the
          whole engine-java module.
        -->
        <dependency>
            <groupId>org.eclipse.dirigible</groupId>
            <artifactId>dirigible-components-core-java</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!--
          Java SDK published to client .java code. Holds the annotations consumed by the
          ClassConsumer chain below (@Controller, @Get, @Inject, @Roles, @Scheduled, ...).
        -->
        <dependency>
            <groupId>org.eclipse.dirigible</groupId>
            <artifactId>dirigible-components-api-modules-java</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- Registry access (IRepository / IRepositoryStructure) -->
        <dependency>
            <groupId>org.eclipse.dirigible</groupId>
            <artifactId>dirigible-components-core-registry</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- Spring -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <!--
          OpenAPI artefact storage used by JavaControllerOpenApiPublisher to contribute fragments to
          /services/openapi. Optional at compile time, mandatory at runtime — the application's fat
          jar always pulls it in via group-engines.
        -->
        <dependency>
            <groupId>org.eclipse.dirigible</groupId>
            <artifactId>dirigible-components-engine-openapi</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!--
          ActiveMQ connection factory used by ListenerClassConsumer to register @Listener-annotated
          Java classes as JMS message listeners without going through the JS-handler path in
          ListenersManager.
        -->
        <dependency>
            <groupId>org.eclipse.dirigible</groupId>
            <artifactId>dirigible-components-engine-listeners</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!--
          Extension metadata persistence used by ExtensionClassConsumer to register @Extension
          contributions in the Dirigible extension registry.
        -->
        <dependency>
            <groupId>org.eclipse.dirigible</groupId>
            <artifactId>dirigible-components-core-extensions</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- Tests -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

</project>
