package jnpf.limsService.support;
|
|
import java.nio.charset.StandardCharsets;
|
import java.nio.file.Files;
|
import java.nio.file.Path;
|
import java.nio.file.Paths;
|
|
/** Source-level wiring probe for the transaction-bound water sampling message. */
|
public class LimsWaterSamplingMessageWiringChecks {
|
public static void main(String[] args) throws Exception {
|
String service = read("jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/"
|
+ "LimsSxtQuyangJihuaRenwuServiceImpl.java");
|
int generated = service.indexOf("renwuMapper.markGenerated(");
|
int published = service.indexOf("eventPublisher.publishEvent(new LimsWaterSamplingMessageEvent(");
|
require(generated >= 0 && published > generated,
|
"message event must be published after the task is marked generated");
|
|
String listener = read("jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/listener/"
|
+ "LimsWaterSamplingMessageListener.java");
|
require(listener.contains("TransactionPhase.AFTER_COMMIT"), "listener must run after commit");
|
require(listener.contains("LimsRecipientRef.role(event.getSamplingRoleId())"),
|
"sampling role must be resolved explicitly as ROLE");
|
require(listener.contains("LimsMessageEvent.WATER_SAMPLING_DUE"), "fixed event code is required");
|
|
String ledger = read("jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/"
|
+ "LimsMessageLedgerService.java");
|
require(ledger.contains("Propagation.REQUIRES_NEW"),
|
"after-commit message ledger must use an independent transaction");
|
}
|
|
private static String read(String path) throws Exception {
|
Path root = Paths.get(System.getProperty("user.dir"));
|
return new String(Files.readAllBytes(root.resolve(path)), StandardCharsets.UTF_8);
|
}
|
|
private static void require(boolean value, String message) {
|
if (!value) {
|
throw new AssertionError(message);
|
}
|
}
|
}
|