A person editing a label template sees the picture that would print, with its refusals and warnings, before anything is printed, from the module's own screens and with no host code. - DocumentPreviewService: authorises by the existing permissions (a draft needs configure, a published revision needs view, a record needs generate and is read as the person, with their permissions and record locks, before any context is built), loads the draft or the published snapshot without writing, builds the context as generation does and calls IsolatedRenderer.preview. Data is a sample from the scene, the longest declared values, or one record. One log line, no content. - "Preview layout" action on templates and published revisions: data, sample, record, stock and resolution; the result is the preview widget. - "Label preview" section on the template record screen: the draft with sample data (the published revision for a person who may only view). - The widget is fetched, never seeded from a process value: QQQ keeps the state of a finished process for hours (in a table with the shared provider), so the picture, the context and the diagnostics exist only in the answer to the widget request. The process state holds the person's choices only. - Bounded answer: one page, a picture of at most 2 MiB, fifty diagnostics. - The existing action is relabelled "Generate retained preview file"; its process name and behaviour are unchanged. - The record selector asks for generate alone, so a person who may preview a published revision with a record can choose one. - Help on every new process, step, field, section, widget and choice list. Tests: DocumentPreviewTest (data sources, permission matrix, unreadable record, nothing written, process state, PDF refusal, refused scene, version 1 label, bounds, log line, help coverage, instance validation) and LayoutPreviewServiceTest in bridges/renderer (through the service and the bridge, the preview has the hash of the bytes the print path returns at 203, 300 and 600 dpi). The registration and process tests are updated for the new wiring and the relabel. bridges/renderer gains the RDBMS module at test scope for that test. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
73 lines
8.4 KiB
XML
73 lines
8.4 KiB
XML
<?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>com.kingsrook.qbits</groupId><artifactId>qbit-document-generation-reactor</artifactId><version>${revision}</version><relativePath>../../pom.xml</relativePath></parent>
|
|
<groupId>com.kingsrook.qbits</groupId><artifactId>qbit-document-generation-renderer</artifactId><version>${revision}</version>
|
|
<name>Document Generation Isolated Renderer Bridge</name>
|
|
<properties><maven.compiler.release>21</maven.compiler.release><maven.compiler.proc>none</maven.compiler.proc><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><enforcer.skip>true</enforcer.skip><jackson-bom.version>2.22.4</jackson-bom.version></properties>
|
|
<dependencyManagement><dependencies><dependency><groupId>com.fasterxml.jackson</groupId><artifactId>jackson-bom</artifactId><version>${jackson-bom.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
|
|
<dependencies>
|
|
<dependency><groupId>com.kingsrook.qbits</groupId><artifactId>qbit-document-generation</artifactId><version>${revision}</version><exclusions>
|
|
<exclusion><groupId>com.openhtmltopdf</groupId><artifactId>openhtmltopdf-pdfbox</artifactId></exclusion>
|
|
<exclusion><groupId>com.openhtmltopdf</groupId><artifactId>openhtmltopdf-core</artifactId></exclusion>
|
|
<exclusion><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId></exclusion>
|
|
</exclusions></dependency>
|
|
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.22.4</version></dependency>
|
|
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>6.0.1</version><scope>test</scope></dependency>
|
|
<!-- Test only: the foundation's store names the RDBMS module (optional there), and LayoutPreviewServiceTest drives the foundation's preview service over this bridge. -->
|
|
<dependency><groupId>com.kingsrook.qqq</groupId><artifactId>qqq-backend-module-rdbms</artifactId><version>${qqq.version}</version><scope>test</scope></dependency>
|
|
</dependencies>
|
|
<build>
|
|
<resources>
|
|
<resource><directory>src/main/resources</directory><filtering>false</filtering></resource>
|
|
|
|
</resources>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.3.1</version>
|
|
<executions><execution><id>package-license-notices</id><phase>process-resources</phase><goals><goal>copy-resources</goal></goals>
|
|
<configuration><outputDirectory>${project.build.outputDirectory}/META-INF</outputDirectory><resources><resource>
|
|
<directory>${project.basedir}</directory><filtering>false</filtering><includes><include>LICENSE</include><include>NOTICE</include></includes>
|
|
</resource></resources></configuration>
|
|
</execution><execution><id>package-renderer-reference</id><phase>process-resources</phase><goals><goal>copy-resources</goal></goals>
|
|
<configuration><outputDirectory>${project.build.outputDirectory}/META-INF/documentation</outputDirectory><resources><resource>
|
|
<directory>${project.basedir}/../../renderer</directory><filtering>false</filtering><includes><include>BARCODES.md</include></includes>
|
|
</resource></resources></configuration>
|
|
</execution></executions>
|
|
</plugin>
|
|
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.14.1</version><configuration><showWarnings>true</showWarnings><failOnWarning>true</failOnWarning><compilerArgs><arg>-Xlint:all</arg><arg>-Werror</arg></compilerArgs></configuration></plugin>
|
|
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.5.4</version><configuration><dependenciesToScan combine.self="override"/></configuration></plugin>
|
|
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.8.1</version><executions><execution><id>runtime-distribution</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><includeScope>runtime</includeScope><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin>
|
|
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-checkstyle-plugin</artifactId><version>3.3.1</version><dependencies><dependency><groupId>com.puppycrawl.tools</groupId><artifactId>checkstyle</artifactId><version>10.12.6</version></dependency></dependencies><configuration><configLocation>${project.basedir}/checkstyle/config.xml</configLocation><propertyExpansion>checkstyle.reactor.root=${project.basedir}</propertyExpansion><includeTestSourceDirectory>true</includeTestSourceDirectory><consoleOutput>true</consoleOutput><violationSeverity>warning</violationSeverity><failOnViolation>true</failOnViolation></configuration><executions><execution><phase>validate</phase><goals><goal>check</goal></goals></execution></executions></plugin>
|
|
<plugin>
|
|
<!-- Coverage gates. The BUNDLE rule is the measured baseline of the bridge, rounded down (2026-11-12, with the preview classes: 90.9% of instructions and 88.4% of lines; 2026-11-11: 85.6% and 82.6%); raise it when coverage rises and
|
|
never lower it. The PACKAGE and CLASS rules hold new code to 100% line coverage from its first commit; a pattern matches nothing until its package or class exists, so the package that adds
|
|
it needs no change here. The classes of the bridge preview package (ZplRaster, and WorkerAnswer, SceneFacts and RendererVersion, which read the worker's answers) are listed by name. Nothing is excluded: JaCoCo skips only code annotated as generated, and this build defines no such annotation. There is no skip switch. -->
|
|
<groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.8.15</version><executions>
|
|
<execution><goals><goal>prepare-agent</goal></goals></execution>
|
|
<execution><id>report</id><phase>verify</phase><goals><goal>report</goal></goals></execution>
|
|
<execution><id>coverage</id><phase>verify</phase><goals><goal>check</goal></goals><configuration><rules>
|
|
<rule><element>BUNDLE</element><limits>
|
|
<limit><counter>INSTRUCTION</counter><value>COVEREDRATIO</value><minimum>0.90</minimum></limit>
|
|
<limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.88</minimum></limit>
|
|
</limits></rule>
|
|
<rule><element>CLASS</element><includes><include>com.kingsrook.qbits.documentgeneration.renderer.ZplRaster</include><include>com.kingsrook.qbits.documentgeneration.renderer.ZplRaster.*</include>
|
|
<include>com.kingsrook.qbits.documentgeneration.renderer.WorkerAnswer</include><include>com.kingsrook.qbits.documentgeneration.renderer.WorkerAnswer.*</include>
|
|
<include>com.kingsrook.qbits.documentgeneration.renderer.SceneFacts</include><include>com.kingsrook.qbits.documentgeneration.renderer.SceneFacts.*</include>
|
|
<include>com.kingsrook.qbits.documentgeneration.renderer.RendererVersion</include><include>com.kingsrook.qbits.documentgeneration.renderer.RendererVersion.*</include></includes><limits>
|
|
<limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>1.00</minimum></limit>
|
|
</limits></rule>
|
|
</rules></configuration></execution>
|
|
</executions></plugin>
|
|
<plugin>
|
|
<!-- Publish a self-contained POM: ${revision}/property versions are resolved at build time, so a consumer needs no -Drevision -->
|
|
<groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>1.7.3</version>
|
|
<configuration><updatePomFile>true</updatePomFile><flattenMode>ossrh</flattenMode></configuration>
|
|
<executions>
|
|
<execution><id>flatten</id><phase>process-resources</phase><goals><goal>flatten</goal></goals></execution>
|
|
<execution><id>flatten.clean</id><phase>clean</phase><goals><goal>clean</goal></goals></execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins></build>
|
|
</project>
|