Files
marcus aeb3323180 Implementiere FileChannelConfigurationAccessAdapter für ConfigurationFileLockPort und SchedulerSettingsPort
Der Adapter teilt intern einen FileChannel und ermöglicht so das Schreiben
von Scheduler-Einstellungen auch während eines aktiven OS-Locks. Schreibvorgänge
laufen ohne Lock über eine temporäre Datei (ATOMIC_MOVE); mit Lock direkt über
den Kanal (Truncate → Write → Force). Zeilenenden (CRLF/LF) und alle übrigen
Properties-Zeilen bleiben unverändert erhalten.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 13:14:40 +02:00

147 lines
4.8 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.gecheckt</groupId>
<artifactId>pdf-umbenenner-parent</artifactId>
<version>${revision}</version>
</parent>
<artifactId>pdf-umbenenner-adapter-in-scheduler</artifactId>
<packaging>jar</packaging>
<!--
Inbound-Adapter: autonomer Scheduler-Betrieb.
Abhängigkeitsrichtung (hexagonale Architektur):
adapter-in-scheduler → application → domain
KEIN Rückwärtsverweis auf pdf-umbenenner-bootstrap: das Bootstrap-Modul
verdrahtet den Scheduler und hängt selbst von diesem Modul ab eine
umgekehrte Abhängigkeit würde einen Zyklus erzeugen.
ApplicationRunContext (package-private im Bootstrap-Modul) ist von hier
aus nicht direkt erreichbar. Die Schnittstelle zwischen Bootstrap und
diesem Modul wird über das BatchRunTrigger-Functional-Interface realisiert,
das im Bootstrap-Modul liegt und beim Start injiziert wird.
JavaFX ist bewusst ausgeschlossen: dieser Adapter läuft ohne Benutzeroberfläche.
maven-shade-plugin ist bewusst ausgeschlossen: das ausführbare JAR wird
ausschließlich im Bootstrap-Modul per Shade-Plugin erzeugt.
-->
<dependencies>
<!-- Interner Abhängigkeiten: Inbound-Adapter bezieht Ports und Use-Cases
ausschließlich aus der Application-Schicht -->
<dependency>
<groupId>de.gecheckt</groupId>
<artifactId>pdf-umbenenner-application</artifactId>
<version>${project.version}</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<!-- Test-Abhängigkeiten -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!--
flatten-maven-plugin: wird vom Parent geerbt und löst ${revision} in
installierten POMs auf. Keine eigene Konfiguration erforderlich
der Eintrag ist nur zur bewussten Dokumentation dieser Erbschaftsentscheidung
vorhanden.
-->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>jacoco-check</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rules>
<rule>
<element>BUNDLE</element>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>0.80</minimum>
</limit>
<limit>
<counter>BRANCH</counter>
<value>COVEREDRATIO</value>
<minimum>0.70</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<executions>
<execution>
<id>pitest</id>
<phase>verify</phase>
<goals>
<goal>mutationCoverage</goal>
</goals>
<configuration>
<!--
PIT wird für diesen Adapter explizit deaktiviert. Der Parent
setzt skip=true als Standardwert; hier wird das bewusst
wiederholt dokumentiert. Mutations-Tests werden erst
aktiviert, wenn echte Produktionslogik vorliegt.
-->
<skip>true</skip>
<coverageThreshold>0</coverageThreshold>
<mutationThreshold>0</mutationThreshold>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>