bQUARKz e809ce63d3
All checks were successful
JaCoCo Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 62.10% (17811/28682) * Branch Coverage: 52.81% (6878/13025) * Lines of Code: 28682 * Cyclomatic Complexity: 11494 #### Quality Gates Summary Output truncated.
Test / Build skipped: 15, passed: 654
Intrepid/Prometeu/Studio/pipeline/head This commit looks good
Intrepid/Prometeu/Studio/pipeline/pr-master This commit looks good
implements PLN-0129
Add ArchUnit guards for Java multi-frontend boundaries in a test-only
module. Identify PBS by frontend-module origin, allow only the registry
as composition root, and lock the wording in specs 19, 20, and 22.

Housekeep DSC-0064 with LSN-0066.
2026-09-19 03:32:43 +01:00

61 lines
2.1 KiB
Java

package p.studio.architecture;
import com.tngtech.archunit.base.DescribedPredicate;
import com.tngtech.archunit.core.domain.JavaClass;
final class PbsModuleOrigins {
static final String PBS_GRADLE_PATH = ":prometeu-compiler:frontends:prometeu-frontend-pbs";
private PbsModuleOrigins() {
}
static boolean isPbsModule(final JavaClass javaClass) {
return uriContains(javaClass, "/prometeu-frontend-pbs/")
|| uriContains(javaClass, "prometeu-frontend-pbs.jar");
}
static boolean isRegistryModule(final JavaClass javaClass) {
return uriContains(javaClass, "/prometeu-frontend-registry/")
|| uriContains(javaClass, "prometeu-frontend-registry.jar");
}
static boolean isFrontendApiModule(final JavaClass javaClass) {
return uriContains(javaClass, "/prometeu-frontend-api/")
|| uriContains(javaClass, "prometeu-frontend-api.jar");
}
static DescribedPredicate<JavaClass> fromPbsModule() {
return DescribedPredicate.describe(
"originate from the PBS frontend module",
PbsModuleOrigins::isPbsModule);
}
static DescribedPredicate<JavaClass> fromRegistryModule() {
return DescribedPredicate.describe(
"originate from the frontend registry module",
PbsModuleOrigins::isRegistryModule);
}
static DescribedPredicate<JavaClass> fromFrontendApiModule() {
return DescribedPredicate.describe(
"originate from the frontend-api module",
PbsModuleOrigins::isFrontendApiModule);
}
static String sourceUri(final JavaClass javaClass) {
return javaClass.getSource()
.map(source -> normalize(source.getUri().toString()))
.orElse("<no source>");
}
private static boolean uriContains(final JavaClass javaClass, final String fragment) {
return javaClass.getSource()
.map(source -> normalize(source.getUri().toString()).contains(fragment))
.orElse(false);
}
private static String normalize(final String uri) {
return uri.replace('\\', '/');
}
}