diff --git a/prometeu-app/src/main/java/p/studio/AppContainer.java b/prometeu-app/src/main/java/p/studio/AppContainer.java index 99b6318d..fa5704b4 100644 --- a/prometeu-app/src/main/java/p/studio/AppContainer.java +++ b/prometeu-app/src/main/java/p/studio/AppContainer.java @@ -1,6 +1,7 @@ package p.studio; import com.fasterxml.jackson.databind.ObjectMapper; +import p.packer.Packer; import p.studio.events.StudioEventBus; import p.studio.events.StudioPackerEventAdapter; import p.studio.utilities.ThemeService; @@ -16,7 +17,7 @@ public final class AppContainer implements Container { private final ThemeService themeService; private final StudioEventBus studioEventBus; private final ObjectMapper mapper; - private final Packer packer; + private final EmbeddedPacker embeddedPacker; private final StudioBackgroundTasks backgroundTasks; public AppContainer() { @@ -26,8 +27,8 @@ public final class AppContainer implements Container { this.mapper = new ObjectMapper(); final ExecutorService backgroundExecutor = Executors.newFixedThreadPool(2, new StudioWorkerThreadFactory()); this.backgroundTasks = new StudioBackgroundTasks(backgroundExecutor); - final p.packer.Packer embeddedPacker = p.packer.Packer.bootstrap(new StudioPackerEventAdapter(studioEventBus)); - this.packer = new Packer(embeddedPacker.workspaceService(), embeddedPacker::close); + final Packer packer = Packer.bootstrap(Container.mapper(), new StudioPackerEventAdapter(studioEventBus)); + this.embeddedPacker = new EmbeddedPacker(packer.workspaceService(), packer::close); } @Override @@ -51,8 +52,8 @@ public final class AppContainer implements Container { } @Override - public Packer getPacker() { - return packer; + public EmbeddedPacker getPacker() { + return embeddedPacker; } @Override @@ -62,7 +63,7 @@ public final class AppContainer implements Container { @Override public void shutdownContainer() { - packer.shutdown(); + embeddedPacker.shutdown(); backgroundTasks.shutdown(); } diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/Packer.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/Packer.java index 72a49178..d10b6dda 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/Packer.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/Packer.java @@ -1,5 +1,6 @@ package p.packer; +import com.fasterxml.jackson.databind.ObjectMapper; import p.packer.events.PackerEventSink; import p.packer.services.*; @@ -12,29 +13,29 @@ public final class Packer implements Closeable { private final PackerProjectWriteCoordinator writeCoordinator; private Packer( - PackerWorkspaceService workspaceService, - PackerRuntimeRegistry runtimeRegistry, - PackerProjectWriteCoordinator writeCoordinator) { + final PackerWorkspaceService workspaceService, + final PackerRuntimeRegistry runtimeRegistry, + final PackerProjectWriteCoordinator writeCoordinator) { this.workspaceService = Objects.requireNonNull(workspaceService, "workspaceService"); this.runtimeRegistry = Objects.requireNonNull(runtimeRegistry, "runtimeRegistry"); this.writeCoordinator = Objects.requireNonNull(writeCoordinator, "writeCoordinator"); } - public static Packer bootstrap(PackerEventSink eventSink) { - final PackerEventSink resolvedEventSink = Objects.requireNonNull(eventSink, "eventSink"); - final PackerWorkspaceFoundation workspaceFoundation = new PackerWorkspaceFoundation(); - final PackerAssetDeclarationParser declarationParser = new PackerAssetDeclarationParser(); - final PackerRuntimeRegistry runtimeRegistry = new PackerRuntimeRegistry( - new PackerRuntimeLoader(workspaceFoundation, declarationParser)); - final PackerAssetReferenceResolver assetReferenceResolver = new PackerAssetReferenceResolver(workspaceFoundation.lookup()); - final PackerAssetDetailsService assetDetailsService = new PackerAssetDetailsService(runtimeRegistry, assetReferenceResolver); - final PackerAssetActionReadService assetActionReadService = new PackerAssetActionReadService( + public static Packer bootstrap(final ObjectMapper mapper, final PackerEventSink eventSink) { + final var resolvedEventSink = Objects.requireNonNull(eventSink, "eventSink"); + final var workspaceFoundation = new PackerWorkspaceFoundation(); + final var declarationParser = new PackerAssetDeclarationParser(mapper); + final var runtimeRegistry = new PackerRuntimeRegistry(new PackerRuntimeLoader(workspaceFoundation, declarationParser)); + final var assetReferenceResolver = new PackerAssetReferenceResolver(workspaceFoundation.lookup()); + final var assetDetailsService = new PackerAssetDetailsService(runtimeRegistry, assetReferenceResolver); + final var assetActionReadService = new PackerAssetActionReadService( runtimeRegistry, assetReferenceResolver, workspaceFoundation.lookup()); - final PackerRuntimePatchService runtimePatchService = new PackerRuntimePatchService(declarationParser); - final PackerProjectWriteCoordinator writeCoordinator = new PackerProjectWriteCoordinator(); + final var runtimePatchService = new PackerRuntimePatchService(declarationParser); + final var writeCoordinator = new PackerProjectWriteCoordinator(); return new Packer(new FileSystemPackerWorkspaceService( + mapper, workspaceFoundation, assetDetailsService, assetActionReadService, diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/FileSystemPackerRegistryRepository.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/FileSystemPackerRegistryRepository.java index 63f5daa9..8ad2af02 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/FileSystemPackerRegistryRepository.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/FileSystemPackerRegistryRepository.java @@ -3,6 +3,7 @@ package p.packer.services; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; +import p.packer.exceptions.PackerRegistryException; import p.packer.messages.PackerProjectContext; import p.packer.models.PackerRegistryEntry; import p.packer.models.PackerRegistryState; @@ -82,31 +83,31 @@ public final class FileSystemPackerRegistryRepository implements PackerRegistryR return new PackerRegistryState(REGISTRY_SCHEMA_VERSION, 1, List.of()); } - private void validateEntries(List entries) { + private void validateEntries(List entries) throws PackerRegistryException { final Set assetIds = new HashSet<>(); final Set assetUuids = new HashSet<>(); final Set roots = new HashSet<>(); for (PackerRegistryEntry entry : entries) { if (!assetIds.add(entry.assetId())) { - throw new p.packer.exceptions.PackerRegistryException("Duplicate asset_id in registry: " + entry.assetId()); + throw new PackerRegistryException("Duplicate asset_id in registry: " + entry.assetId()); } if (!assetUuids.add(entry.assetUuid())) { - throw new p.packer.exceptions.PackerRegistryException("Duplicate asset_uuid in registry: " + entry.assetUuid()); + throw new PackerRegistryException("Duplicate asset_uuid in registry: " + entry.assetUuid()); } if (!roots.add(entry.root())) { - throw new p.packer.exceptions.PackerRegistryException("Duplicate asset root in registry: " + entry.root()); + throw new PackerRegistryException("Duplicate asset root in registry: " + entry.root()); } } } private String normalizeRoot(String root) { if (root == null || root.isBlank()) { - throw new p.packer.exceptions.PackerRegistryException("Registry asset root must not be blank"); + throw new PackerRegistryException("Registry asset root must not be blank"); } final String normalized = root.trim().replace('\\', '/'); final Path normalizedPath = Path.of(normalized).normalize(); if (normalizedPath.isAbsolute() || normalizedPath.startsWith("..")) { - throw new p.packer.exceptions.PackerRegistryException("Registry asset root is outside the trusted assets boundary: " + normalized); + throw new PackerRegistryException("Registry asset root is outside the trusted assets boundary: " + normalized); } return normalized; } diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/FileSystemPackerWorkspaceService.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/FileSystemPackerWorkspaceService.java index f68740e8..9e4f6639 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/FileSystemPackerWorkspaceService.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/FileSystemPackerWorkspaceService.java @@ -20,7 +20,7 @@ import java.util.*; import java.util.stream.Stream; public final class FileSystemPackerWorkspaceService implements PackerWorkspaceService { - private static final ObjectMapper MAPPER = new ObjectMapper(); + private final ObjectMapper mapper; private final PackerWorkspaceFoundation workspaceFoundation; private final PackerAssetDetailsService detailsService; private final PackerAssetActionReadService actionReadService; @@ -30,6 +30,7 @@ public final class FileSystemPackerWorkspaceService implements PackerWorkspaceSe private final PackerEventSink eventSink; public FileSystemPackerWorkspaceService( + ObjectMapper mapper, PackerWorkspaceFoundation workspaceFoundation, PackerAssetDetailsService detailsService, PackerAssetActionReadService actionReadService, @@ -37,6 +38,7 @@ public final class FileSystemPackerWorkspaceService implements PackerWorkspaceSe PackerRuntimeRegistry runtimeRegistry, PackerProjectWriteCoordinator writeCoordinator, PackerEventSink eventSink) { + this.mapper = Objects.requireNonNull(mapper, "mapper"); this.workspaceFoundation = Objects.requireNonNull(workspaceFoundation, "workspaceFoundation"); this.detailsService = Objects.requireNonNull(detailsService, "detailsService"); this.actionReadService = Objects.requireNonNull(actionReadService, "actionReadService"); @@ -471,7 +473,7 @@ public final class FileSystemPackerWorkspaceService implements PackerWorkspaceSe "format", request.outputFormat().manifestValue(), "codec", request.outputCodec().manifestValue())); manifest.put("preload", Map.of("enabled", request.preloadEnabled())); - MAPPER.writerWithDefaultPrettyPrinter().writeValue(manifestPath.toFile(), manifest); + mapper.writerWithDefaultPrettyPrinter().writeValue(manifestPath.toFile(), manifest); } private String normalizeRelativeAssetRoot(String candidate) { @@ -604,7 +606,7 @@ public final class FileSystemPackerWorkspaceService implements PackerWorkspaceSe final ObjectNode manifest; try { - final JsonNode rawManifest = MAPPER.readTree(manifestPath.toFile()); + final JsonNode rawManifest = mapper.readTree(manifestPath.toFile()); if (!(rawManifest instanceof ObjectNode objectNode)) { return new UpdateAssetContractResponse(false, "asset.json must contain a JSON object at the root."); } @@ -623,7 +625,7 @@ public final class FileSystemPackerWorkspaceService implements PackerWorkspaceSe try { patchManifestContract(manifest, request); - MAPPER.writerWithDefaultPrettyPrinter().writeValue(manifestPath.toFile(), manifest); + mapper.writerWithDefaultPrettyPrinter().writeValue(manifestPath.toFile(), manifest); runtimeRegistry.update(project, (currentSnapshot, generation) -> runtimePatchService.afterUpdateAssetContract( currentSnapshot, generation, @@ -677,7 +679,7 @@ public final class FileSystemPackerWorkspaceService implements PackerWorkspaceSe if (current instanceof ObjectNode objectNode) { return objectNode; } - final ObjectNode created = MAPPER.createObjectNode(); + final ObjectNode created = mapper.createObjectNode(); parent.set(fieldName, created); return created; } diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetDeclarationParser.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetDeclarationParser.java index 00010e81..71169898 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetDeclarationParser.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetDeclarationParser.java @@ -16,15 +16,20 @@ import java.nio.file.Path; import java.util.*; public final class PackerAssetDeclarationParser { - private static final ObjectMapper MAPPER = new ObjectMapper(); private static final int SUPPORTED_SCHEMA_VERSION = 1; - public PackerAssetDeclarationParseResult parse(Path assetManifestPath) { - final Path manifestPath = Objects.requireNonNull(assetManifestPath, "assetManifestPath").toAbsolutePath().normalize(); + private final ObjectMapper mapper; + + public PackerAssetDeclarationParser(ObjectMapper mapper) { + this.mapper = Objects.requireNonNull(mapper, "mapper"); + } + + public PackerAssetDeclarationParseResult parse(final Path assetManifestPath) { + final var manifestPath = Objects.requireNonNull(assetManifestPath, "assetManifestPath").toAbsolutePath().normalize(); final List diagnostics = new ArrayList<>(); final JsonNode root; try { - root = MAPPER.readTree(manifestPath.toFile()); + root = mapper.readTree(manifestPath.toFile()); } catch (IOException exception) { diagnostics.add(new PackerDiagnostic( PackerDiagnosticSeverity.ERROR, diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetDetailsService.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetDetailsService.java index 0945b447..e69e2be0 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetDetailsService.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetDetailsService.java @@ -60,9 +60,10 @@ public final class PackerAssetDetailsService { declaration.name(), resolved.assetRoot()), state, - resolved.registryEntry().map(entry -> entry.includedInBuild() - ? PackerBuildParticipation.INCLUDED - : PackerBuildParticipation.EXCLUDED).orElse(PackerBuildParticipation.EXCLUDED), + resolved.registryEntry() + .filter(PackerRegistryEntry::includedInBuild) + .map(entry -> PackerBuildParticipation.INCLUDED) + .orElse(PackerBuildParticipation.EXCLUDED), declaration.assetFamily(), declaration.preloadEnabled(), !diagnostics.isEmpty()); @@ -97,9 +98,10 @@ public final class PackerAssetDetailsService { resolved.assetRoot().getFileName().toString(), resolved.assetRoot()), state, - resolved.registryEntry().map(entry -> entry.includedInBuild() - ? PackerBuildParticipation.INCLUDED - : PackerBuildParticipation.EXCLUDED).orElse(PackerBuildParticipation.EXCLUDED), + resolved.registryEntry() + .filter(PackerRegistryEntry::includedInBuild) + .map(entry -> PackerBuildParticipation.INCLUDED) + .orElse(PackerBuildParticipation.EXCLUDED), AssetFamilyCatalog.UNKNOWN, false, true); @@ -145,13 +147,12 @@ public final class PackerAssetDetailsService { PackerProjectContext project, Path assetRoot, Optional registryEntry) { - if (registryEntry.isPresent()) { - return AssetReference.forAssetId(registryEntry.get().assetId()); - } - return AssetReference.forRelativeAssetRoot(PackerWorkspacePaths.assetsRoot(project) - .relativize(assetRoot.toAbsolutePath().normalize()) - .toString() - .replace('\\', '/')); + return registryEntry + .map(packerRegistryEntry -> AssetReference.forAssetId(packerRegistryEntry.assetId())) + .orElseGet(() -> AssetReference.forRelativeAssetRoot(PackerWorkspacePaths.assetsRoot(project) + .relativize(assetRoot.toAbsolutePath().normalize()) + .toString() + .replace('\\', '/'))); } private AssetReference canonicalReferenceOrRequested( diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimeLoader.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimeLoader.java index e20c8142..9fc277bf 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimeLoader.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimeLoader.java @@ -10,9 +10,9 @@ import p.packer.models.PackerRuntimeSnapshot; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.attribute.BasicFileAttributes; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; public final class PackerRuntimeLoader implements PackerRuntimeSnapshotLoader { private final PackerWorkspaceFoundation workspaceFoundation; @@ -25,6 +25,10 @@ public final class PackerRuntimeLoader implements PackerRuntimeSnapshotLoader { this.parser = Objects.requireNonNull(parser, "parser"); } + private boolean isAssetJson(Path path, BasicFileAttributes attrs) { + return attrs.isRegularFile() && path.getFileName().toString().equals("asset.json"); + } + @Override public PackerRuntimeSnapshot load(PackerProjectContext project, long generation) { final PackerProjectContext safeProject = Objects.requireNonNull(project, "project"); @@ -37,17 +41,16 @@ public final class PackerRuntimeLoader implements PackerRuntimeSnapshotLoader { entry -> entry)); final List assets = new ArrayList<>(); - final Path assetsRoot = PackerWorkspacePaths.assetsRoot(safeProject); + final var assetsRoot = PackerWorkspacePaths.assetsRoot(safeProject); if (Files.isDirectory(assetsRoot)) { - try (Stream paths = Files.find(assetsRoot, Integer.MAX_VALUE, (path, attrs) -> - attrs.isRegularFile() && path.getFileName().toString().equals("asset.json"))) { - final List manifests = paths + try (final var paths = Files.find(assetsRoot, Integer.MAX_VALUE, this::isAssetJson)) { + final var manifests = paths .map(path -> path.toAbsolutePath().normalize()) .sorted(Comparator.naturalOrder()) .toList(); - for (Path manifestPath : manifests) { - final Path assetRoot = manifestPath.getParent(); - final Optional registryEntry = Optional.ofNullable(registryByRoot.get(assetRoot)); + for (final var manifestPath : manifests) { + final var assetRoot = manifestPath.getParent(); + final var registryEntry = Optional.ofNullable(registryByRoot.get(assetRoot)); assets.add(new PackerRuntimeAsset( assetRoot, manifestPath, diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerWorkspaceFoundation.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerWorkspaceFoundation.java index 37ee142f..fd2fa665 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerWorkspaceFoundation.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerWorkspaceFoundation.java @@ -8,6 +8,7 @@ import p.packer.models.PackerRegistryEntry; import p.packer.models.PackerRegistryState; import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; import java.util.Objects; @@ -21,20 +22,20 @@ public final class PackerWorkspaceFoundation { } public PackerWorkspaceFoundation( - FileSystemPackerRegistryRepository registryRepository, - PackerIdentityAllocator identityAllocator, - PackerRegistryLookup registryLookup) { + final FileSystemPackerRegistryRepository registryRepository, + final PackerIdentityAllocator identityAllocator, + final PackerRegistryLookup registryLookup) { this.registryRepository = Objects.requireNonNull(registryRepository, "registryRepository"); this.identityAllocator = Objects.requireNonNull(identityAllocator, "identityAllocator"); this.registryLookup = Objects.requireNonNull(registryLookup, "registryLookup"); } - public InitWorkspaceResult initWorkspace(InitWorkspaceRequest request) { + public InitWorkspaceResult initWorkspace(final InitWorkspaceRequest request) { final PackerProjectContext project = Objects.requireNonNull(request, "request").project(); try { Files.createDirectories(PackerWorkspacePaths.assetsRoot(project)); Files.createDirectories(PackerWorkspacePaths.registryDirectory(project)); - final PackerRegistryState registryState = registryRepository.load(project); + final var registryState = registryRepository.load(project); registryRepository.save(project, registryState); return new InitWorkspaceResult( PackerOperationStatus.SUCCESS, @@ -46,27 +47,34 @@ public final class PackerWorkspaceFoundation { } } - public PackerRegistryState loadRegistry(PackerProjectContext project) { + public PackerRegistryState loadRegistry(final PackerProjectContext project) { return registryRepository.load(project); } - public void saveRegistry(PackerProjectContext project, PackerRegistryState state) { + public void saveRegistry( + final PackerProjectContext project, + final PackerRegistryState state) { registryRepository.save(project, state); } - public PackerRegistryEntry allocateIdentity(PackerProjectContext project, PackerRegistryState state, java.nio.file.Path assetRoot) { + public PackerRegistryEntry allocateIdentity( + final PackerProjectContext project, + final PackerRegistryState state, + final Path assetRoot) { return identityAllocator.allocate(project, state, assetRoot); } public PackerRegistryEntry registerExistingAsset( - PackerProjectContext project, - PackerRegistryState state, - java.nio.file.Path assetRoot, - String assetUuid) { + final PackerProjectContext project, + final PackerRegistryState state, + final Path assetRoot, + final String assetUuid) { return identityAllocator.registerExisting(project, state, assetRoot, assetUuid); } - public PackerRegistryState appendAllocatedEntry(PackerRegistryState state, PackerRegistryEntry entry) { + public PackerRegistryState appendAllocatedEntry( + final PackerRegistryState state, + final PackerRegistryEntry entry) { return identityAllocator.append(state, entry); } diff --git a/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/FileSystemPackerWorkspaceServiceTest.java b/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/FileSystemPackerWorkspaceServiceTest.java index 4d6d1342..e739ba53 100644 --- a/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/FileSystemPackerWorkspaceServiceTest.java +++ b/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/FileSystemPackerWorkspaceServiceTest.java @@ -666,7 +666,7 @@ final class FileSystemPackerWorkspaceServiceTest { p.packer.events.PackerEventSink eventSink, PackerRuntimeSnapshotLoader loader) { final var foundation = new p.packer.services.PackerWorkspaceFoundation(); - final var parser = new p.packer.services.PackerAssetDeclarationParser(); + final var parser = new p.packer.services.PackerAssetDeclarationParser(new ObjectMapper()); final var runtimeRegistry = new p.packer.services.PackerRuntimeRegistry(loader); final var resolver = new p.packer.services.PackerAssetReferenceResolver(foundation.lookup()); final var detailsService = new p.packer.services.PackerAssetDetailsService(runtimeRegistry, resolver); @@ -674,6 +674,7 @@ final class FileSystemPackerWorkspaceServiceTest { final var runtimePatchService = new p.packer.services.PackerRuntimePatchService(parser); final var writeCoordinator = new p.packer.services.PackerProjectWriteCoordinator(); return new FileSystemPackerWorkspaceService( + new ObjectMapper(), foundation, detailsService, actionReadService, @@ -685,7 +686,7 @@ final class FileSystemPackerWorkspaceServiceTest { private CountingLoader countingLoader() { final var foundation = new p.packer.services.PackerWorkspaceFoundation(); - final var parser = new p.packer.services.PackerAssetDeclarationParser(); + final var parser = new p.packer.services.PackerAssetDeclarationParser(new ObjectMapper()); return new CountingLoader(new p.packer.services.PackerRuntimeLoader(foundation, parser)); } diff --git a/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerAssetDeclarationParserTest.java b/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerAssetDeclarationParserTest.java index c1c958ae..93510ad6 100644 --- a/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerAssetDeclarationParserTest.java +++ b/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerAssetDeclarationParserTest.java @@ -1,5 +1,6 @@ package p.packer.services; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import p.packer.messages.assets.AssetFamilyCatalog; @@ -13,7 +14,7 @@ import java.nio.file.Path; import static org.junit.jupiter.api.Assertions.*; final class PackerAssetDeclarationParserTest { - private final PackerAssetDeclarationParser parser = new PackerAssetDeclarationParser(); + private final PackerAssetDeclarationParser parser = new PackerAssetDeclarationParser(new ObjectMapper()); @TempDir Path tempDir; diff --git a/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerAssetDetailsServiceTest.java b/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerAssetDetailsServiceTest.java index d80b90ed..26c7ca55 100644 --- a/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerAssetDetailsServiceTest.java +++ b/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerAssetDetailsServiceTest.java @@ -1,5 +1,6 @@ package p.packer.services; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import p.packer.messages.AssetReference; @@ -87,7 +88,7 @@ final class PackerAssetDetailsServiceTest { private PackerAssetDetailsService service() { final var foundation = new p.packer.services.PackerWorkspaceFoundation(); - final var parser = new PackerAssetDeclarationParser(); + final var parser = new PackerAssetDeclarationParser(new ObjectMapper()); final var runtimeRegistry = new PackerRuntimeRegistry(new PackerRuntimeLoader(foundation, parser)); final var resolver = new PackerAssetReferenceResolver(foundation.lookup()); return new PackerAssetDetailsService(runtimeRegistry, resolver); diff --git a/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerRuntimeRegistryTest.java b/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerRuntimeRegistryTest.java index 94e33efc..b6b44862 100644 --- a/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerRuntimeRegistryTest.java +++ b/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerRuntimeRegistryTest.java @@ -1,5 +1,6 @@ package p.packer.services; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import p.packer.messages.PackerProjectContext; @@ -78,7 +79,7 @@ final class PackerRuntimeRegistryTest { private PackerRuntimeRegistry runtimeRegistry() { final var foundation = new PackerWorkspaceFoundation(); - final var parser = new PackerAssetDeclarationParser(); + final var parser = new PackerAssetDeclarationParser(new ObjectMapper()); return new PackerRuntimeRegistry(new PackerRuntimeLoader(foundation, parser)); } diff --git a/prometeu-studio/src/main/java/p/studio/Container.java b/prometeu-studio/src/main/java/p/studio/Container.java index 091b052e..1535264d 100644 --- a/prometeu-studio/src/main/java/p/studio/Container.java +++ b/prometeu-studio/src/main/java/p/studio/Container.java @@ -17,7 +17,7 @@ public interface Container { ObjectMapper getMapper(); - Packer getPacker(); + EmbeddedPacker getPacker(); StudioBackgroundTasks getBackgroundTasks(); @@ -60,7 +60,7 @@ public interface Container { return current().getMapper(); } - static Packer packer() { + static EmbeddedPacker packer() { return current().getPacker(); } @@ -75,11 +75,11 @@ public interface Container { } } - record Packer( + record EmbeddedPacker( p.packer.PackerWorkspaceService workspaceService, Runnable shutdownAction) { - public Packer { + public EmbeddedPacker { Objects.requireNonNull(workspaceService, "workspaceService"); Objects.requireNonNull(shutdownAction, "shutdownAction"); } diff --git a/prometeu-studio/src/test/java/p/studio/events/StudioPackerEventAdapterTest.java b/prometeu-studio/src/test/java/p/studio/events/StudioEmbeddedPackerEventAdapterTest.java similarity index 97% rename from prometeu-studio/src/test/java/p/studio/events/StudioPackerEventAdapterTest.java rename to prometeu-studio/src/test/java/p/studio/events/StudioEmbeddedPackerEventAdapterTest.java index 75087921..186c3a67 100644 --- a/prometeu-studio/src/test/java/p/studio/events/StudioPackerEventAdapterTest.java +++ b/prometeu-studio/src/test/java/p/studio/events/StudioEmbeddedPackerEventAdapterTest.java @@ -11,7 +11,7 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; -final class StudioPackerEventAdapterTest { +final class StudioEmbeddedPackerEventAdapterTest { @Test void forwardsScanEventsIntoStudioOperationEvents() { final StudioEventBus globalBus = new StudioEventBus();