<?xml version="1.0" encoding="UTF-8"?>
<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.bidib.jbidib</groupId>
        <artifactId>bidibwizard</artifactId>
        <version>2.0.44</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    
    <artifactId>bidibwizard-api</artifactId>
    <packaging>jar</packaging>
    <name>jBiDiB :: BiDiB Wizard API</name>
    <description>jBiDiB BiDiB Wizard API POM</description>
    <properties>
        <maven.build.timestamp.format>dd.MM.yyyy HH:mm</maven.build.timestamp.format>
        <build-timestamp>${maven.build.timestamp}</build-timestamp>
    	<!-- replaced during release in separate profile -->
        <buildnumber-and-branch-info>${git.total.commit.count}, ${git.branch}</buildnumber-and-branch-info>
    </properties>
    <dependencies>
        <dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
        </dependency>
        <dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
		    <groupId>com.fasterxml.jackson.datatype</groupId>
		    <artifactId>jackson-datatype-jdk8</artifactId>
		</dependency>
		<dependency>
		    <groupId>com.fasterxml.jackson.datatype</groupId>
		    <artifactId>jackson-datatype-jsr310</artifactId>
		</dependency>
		<dependency>
			<groupId>com.github.akarnokd</groupId>
			<artifactId>rxjava3-extensions</artifactId>
		</dependency>
        <dependency>
            <groupId>com.jgoodies</groupId>
            <artifactId>jgoodies-binding</artifactId>
        </dependency>
        <dependency>
            <groupId>com.jgoodies</groupId>
            <artifactId>jgoodies-forms</artifactId>
        </dependency>
        <dependency>
            <groupId>com.jgoodies</groupId>
            <artifactId>jgoodies-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
		<dependency>
		    <groupId>io.reactivex.rxjava3</groupId>
		    <artifactId>rxjava</artifactId>
		</dependency>
		<dependency>
		  <groupId>javax.validation</groupId>
		  <artifactId>validation-api</artifactId>
		</dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-math3</artifactId>
        </dependency>
		<dependency>
		    <groupId>org.aspectj</groupId>
		    <artifactId>aspectjweaver</artifactId>
		</dependency>
        <dependency>
            <groupId>org.bidib.jbidib</groupId>
            <artifactId>bidibwizard-model</artifactId>
        </dependency>
        <dependency>
            <groupId>org.bidib.jbidib</groupId>
            <artifactId>jbidibc-exchange</artifactId>
        </dependency>
        <dependency>
            <groupId>org.bidib.jbidib</groupId>
            <artifactId>jbidibc-simulation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-indexer</artifactId>
			<optional>true</optional>
		</dependency>		
		        
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.bidib.jbidib</groupId>
            <artifactId>jbidibc-core</artifactId>
            <classifier>tests</classifier>
            <scope>test</scope>
        </dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-engine</artifactId>
			<scope>test</scope>
		</dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.xmlunit</groupId>
            <artifactId>xmlunit-assertj</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
    <build>
    	<plugins>
            <plugin>
                <groupId>org.jsonschema2pojo</groupId>
                <artifactId>jsonschema2pojo-maven-plugin</artifactId>
                <configuration>
					<!-- 
                    <sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
					 -->
					<sourcePaths>
						<sourcePath>${basedir}/src/main/resources/schema</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/action</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/debug</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/system</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/common</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/booster</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/commandstation</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/feature</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/firmware</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/switching</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/occupancy</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/node</sourcePath>
						<sourcePath>${basedir}/src/main/resources/schema/dccmapping</sourcePath>
					</sourcePaths>
					<sourceSortOrder>FILES_FIRST</sourceSortOrder>
                    <targetPackage>org.bidib.api.json.types</targetPackage>
                    <generateBuilders>true</generateBuilders>
                    <includeConstructors>true</includeConstructors>
                    <includeJsr303Annotations>true</includeJsr303Annotations>
                    <dateType>java.time.LocalDate</dateType>
                    <dateTimeType>java.time.LocalDateTime</dateTimeType>
                    <includeGeneratedAnnotation>true</includeGeneratedAnnotation>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            
            <plugin>
                <groupId>cz.habarta.typescript-generator</groupId>
                <artifactId>typescript-generator-maven-plugin</artifactId>
                <version>3.2.1263</version>
                <executions>
                    <execution>
                        <id>generate</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <phase>process-classes</phase>
                    </execution>
                </executions>
                <configuration>
                    <jsonLibrary>jackson2</jsonLibrary>
                    <mapEnum>asEnum</mapEnum>
                    <classPatterns>
                        <pattern>org.bidib.api.json.types.system.*</pattern>
                        <pattern>org.bidib.api.json.types.node.*</pattern>
                        <pattern>org.bidib.api.json.types.switching.*</pattern>
                        <pattern>org.bidib.api.json.types.occupancy.*</pattern>
                        <pattern>org.bidib.api.json.types.firmware.*</pattern>
                    </classPatterns>
                    <outputKind>module</outputKind>
					<customTypeMappings>
						<mapping>org.bidib.api.json.types.occupancy.OccupancyStatusResponse$FeedbackPortStatus:FeedbackPortStatus</mapping>
					</customTypeMappings>
					<stringQuotes>singleQuotes</stringQuotes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Implementation-Version>${project.version} (${buildnumber-and-branch-info})</Implementation-Version>
                            <Implementation-Build>${project.artifactId}-${project.version} (${buildnumber-and-branch-info})</Implementation-Build>
                            <BuildNumber>${git.total.commit.count}</BuildNumber>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
    	</plugins>
    	<pluginManagement>
    		<plugins>
    			<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
    			<plugin>
    				<groupId>org.eclipse.m2e</groupId>
    				<artifactId>lifecycle-mapping</artifactId>
    				<version>1.0.0</version>
    				<configuration>
    					<lifecycleMappingMetadata>
    						<pluginExecutions>
    							<pluginExecution>
    								<pluginExecutionFilter>
    									<groupId>
    										cz.habarta.typescript-generator
    									</groupId>
    									<artifactId>
    										typescript-generator-maven-plugin
    									</artifactId>
    									<versionRange>
    										[2.5.423,)
    									</versionRange>
    									<goals>
    										<goal>generate</goal>
    									</goals>
    								</pluginExecutionFilter>
    								<action>
    									<ignore></ignore>
    								</action>
    							</pluginExecution>
    						</pluginExecutions>
    					</lifecycleMappingMetadata>
    				</configuration>
    			</plugin>
    		</plugins>
    	</pluginManagement>
    </build>
    <profiles>
        <profile>
            <id>release</id>
            <activation>
                <property>
                    <name>performRelease</name>
                    <value>true</value>
                </property>
            </activation>
            <properties>
                <buildnumber-and-branch-info>${git.total.commit.count}</buildnumber-and-branch-info>
            </properties>
        </profile>
    </profiles>
</project>
