From b88a4e3c622b42dac4746a34969958ac04a610d4 Mon Sep 17 00:00:00 2001 From: bQUARKz Date: Mon, 16 Mar 2026 15:03:25 +0000 Subject: [PATCH] added contract update into asset workspace --- .../pbs/PbsHostAdmissionValidator.java | 7 +- .../pbs/PbsReservedMetadataExtractor.java | 7 +- .../lowering/PbsExecutableBodyLowerer.java | 6 +- .../PbsExecutableCallableRegistryFactory.java | 10 +- .../PbsExecutableMetadataIndexFactory.java | 4 +- .../lowering/PbsExecutableStackAnalyzer.java | 6 +- .../compiler/pbs/parser/PbsExprParser.java | 1 - .../semantics/PbsBuiltinLayoutResolver.java | 8 +- .../semantics/PbsConstSemanticsValidator.java | 12 +- .../PbsDeclarationSemanticsValidator.java | 7 +- .../semantics/PbsFlowAssignmentAnalyzer.java | 6 +- .../pbs/semantics/PbsFlowBodyAnalyzer.java | 4 +- .../pbs/semantics/PbsFlowBodyContext.java | 2 +- .../PbsFlowBranchExpressionAnalyzer.java | 2 +- .../PbsFlowCallableBodyAnalyzer.java | 2 +- .../PbsFlowCallableResolutionAnalyzer.java | 7 +- .../semantics/PbsFlowCompletionAnalyzer.java | 2 +- .../PbsFlowControlExpressionAnalyzer.java | 4 +- .../semantics/PbsFlowExpressionAnalyzer.java | 6 +- .../semantics/PbsFlowExpressionContext.java | 2 +- .../semantics/PbsFlowStatementAnalyzer.java | 6 +- .../PbsFlowStructuralExpressionAnalyzer.java | 2 +- .../pbs/stdlib/InterfaceModuleLoader.java | 6 +- .../services/PBSFrontendPhaseService.java | 8 +- .../PbsImportedSemanticContextService.java | 10 +- .../services/PbsModuleAssemblyService.java | 8 +- .../PbsGateUSdkInterfaceConformanceTest.java | 12 +- .../pbs/PbsGateUStdlibCompileTest.java | 5 +- .../pbs/parser/PbsBarrelParserTest.java | 4 +- .../pbs/parser/PbsExprParserTest.java | 5 +- .../pbs/parser/PbsParserStatementsTest.java | 4 +- .../compiler/pbs/parser/PbsParserTest.java | 5 +- .../PbsSemanticsControlFlowTest.java | 4 +- .../PbsSemanticsDeclarationsTest.java | 4 +- .../PbsSemanticsFallthroughTest.java | 4 +- .../pbs/stdlib/InterfaceModuleLoaderTest.java | 4 +- .../services/PBSFrontendPhaseServiceTest.java | 9 +- .../backend/bytecode/BytecodeEmitter.java | 2 +- .../compiler/backend/irvm/IRVMProgram.java | 1 - .../backend/irvm/OptimizeIRVMService.java | 7 +- .../backend/bytecode/BytecodeEmitterTest.java | 5 +- .../BytecodeLinkPrecheckServiceTest.java | 4 +- .../backend/bytecode/BytecodeModuleTest.java | 4 +- .../BytecodePreloadVerifierServiceTest.java | 4 +- .../irvm/IRVMIntrinsicRegistryParityTest.java | 12 +- .../backend/irvm/IRVMValidatorTest.java | 4 +- .../backend/irvm/LowerToIRVMServiceTest.java | 4 +- .../OptimizeIRVMEquivalenceHarnessTest.java | 4 +- .../backend/irvm/OptimizeIRVMServiceTest.java | 6 +- .../BackendGateIIntegrationTest.java | 7 +- .../MainProjectPipelineIntegrationTest.java | 4 +- .../BackendConformanceMatrixSpecTest.java | 4 +- .../BuilderPipelineServiceOrderTest.java | 10 +- .../stages/BackendSafetyGateSUTest.java | 10 +- .../stages/EmitBytecodePipelineStageTest.java | 5 +- .../stages/LowerToIRVMPipelineStageTest.java | 5 +- .../stages/OptimizeIRVMPipelineStageTest.java | 11 +- ...riteBytecodeArtifactPipelineStageTest.java | 5 +- .../source/diagnostics/DiagnosticSink.java | 6 +- .../source/identifiers/SourceIdentifier.java | 3 - .../source/tables/HostBindingTableTest.java | 4 +- .../source/tables/IntrinsicTableTest.java | 4 +- .../workspaces/phases/ValidatePhaseTest.java | 3 +- .../p/studio/compiler/models/IRBackend.java | 7 +- .../IRBackendExecutableContractTest.java | 4 +- .../utilities/structures/ReadOnlyList.java | 7 +- .../java/p/packer/PackerWorkspaceService.java | 2 + .../p/packer/dtos/PackerAssetDetailsDTO.java | 5 +- .../messages/UpdateAssetContractRequest.java | 21 + .../messages/UpdateAssetContractResponse.java | 4 + .../packer/models/PackerAssetDeclaration.java | 8 +- .../p/packer/models/PackerAssetDetails.java | 5 +- .../p/packer/models/PackerAssetSummary.java | 2 +- .../FileSystemPackerRegistryRepository.java | 6 +- .../FileSystemPackerWorkspaceService.java | 160 +- .../PackerAssetActionReadService.java | 18 +- .../PackerAssetDeclarationParser.java | 29 +- .../services/PackerAssetDetailsService.java | 31 +- .../PackerAssetReferenceResolver.java | 6 +- .../services/PackerOperationEventEmitter.java | 2 +- .../services/PackerOutputContractCatalog.java | 21 +- .../PackerProjectWriteCoordinator.java | 10 +- .../services/PackerReadMessageMapper.java | 14 +- .../packer/services/PackerRuntimeLoader.java | 9 +- .../services/PackerRuntimePatchService.java | 46 +- .../services/PackerRuntimeRegistry.java | 2 +- .../services/PackerWorkspaceFoundation.java | 4 +- .../FileSystemPackerWorkspaceServiceTest.java | 97 +- .../PackerAssetDeclarationParserTest.java | 2 +- .../PackerAssetDetailsServiceTest.java | 8 +- .../PackerWorkspaceFoundationTest.java | 2 +- .../controls/forms/StudioFormSession.java | 6 + .../shell/StudioActivityFeedControl.java | 4 +- .../studio/projects/KnownProjectsService.java | 7 +- .../p/studio/window/NewProjectWizard.java | 12 +- .../p/studio/window/ProjectLauncherView.java | 6 +- .../window/StudioWindowCoordinator.java | 8 +- .../workspaces/assets/AssetLogsPane.java | 4 + .../assets/details/AssetDetailsControl.java | 2 +- .../assets/details/AssetDetailsUiSupport.java | 8 + .../details/AssetListPackerMappings.java | 2 +- .../details/contract/AssetContractDraft.java | 5 +- .../contract/AssetDetailsContractControl.java | 46 +- .../summary/AssetDetailsSummaryControl.java | 4 +- .../assets/list/AssetListControl.java | 14 +- .../assets/list/AssetListItemControl.java | 2 +- .../list/AssetListProjectionBuilder.java | 4 +- .../assets/messages/AssetListViewState.java | 1 + .../messages/AssetWorkspaceAssetDetails.java | 5 +- .../messages/AssetWorkspaceAssetSummary.java | 2 +- .../messages/events/StudioAssetLogEvent.java | 8 + .../assets/wizards/AddAssetWizard.java | 14 +- .../controls/forms/StudioFormSessionTest.java | 4 +- .../shell/StudioActivityEventMapperTest.java | 2 +- .../projects/ProjectCatalogServiceTest.java | 4 +- .../framework/StudioSubscriptionBagTest.java | 1 - test-projects/main/.studio/activities.json | 1300 ++++++++--------- test-projects/main/assets/bigode/asset.json | 7 +- .../main/assets/recovered/atlas2/asset.json | 24 +- test-projects/main/assets/ui/sound/asset.json | 7 +- 120 files changed, 1177 insertions(+), 1211 deletions(-) create mode 100644 prometeu-packer/prometeu-packer-api/src/main/java/p/packer/messages/UpdateAssetContractRequest.java create mode 100644 prometeu-packer/prometeu-packer-api/src/main/java/p/packer/messages/UpdateAssetContractResponse.java create mode 100644 prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/events/StudioAssetLogEvent.java diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsHostAdmissionValidator.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsHostAdmissionValidator.java index 7a9f1361..94e1aca3 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsHostAdmissionValidator.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsHostAdmissionValidator.java @@ -9,12 +9,7 @@ import p.studio.compiler.source.identifiers.HostBindingId; import p.studio.compiler.source.tables.HostBindingTable; import p.studio.utilities.structures.ReadOnlyList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Locale; -import java.util.Set; +import java.util.*; import java.util.regex.Pattern; public final class PbsHostAdmissionValidator { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsReservedMetadataExtractor.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsReservedMetadataExtractor.java index 46bd9ac5..401a35bb 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsReservedMetadataExtractor.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsReservedMetadataExtractor.java @@ -6,12 +6,7 @@ import p.studio.compiler.pbs.ast.PbsAst; import p.studio.compiler.pbs.semantics.PbsBuiltinLayoutResolver; import p.studio.utilities.structures.ReadOnlyList; -import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.OptionalLong; +import java.util.*; import java.util.stream.Collectors; public final class PbsReservedMetadataExtractor { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableBodyLowerer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableBodyLowerer.java index 6e3c0c65..9500ddf1 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableBodyLowerer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableBodyLowerer.java @@ -5,17 +5,17 @@ import p.studio.compiler.pbs.ast.PbsAst; import p.studio.compiler.pbs.semantics.PbsSemanticsErrors; import p.studio.compiler.source.diagnostics.DiagnosticPhase; import p.studio.compiler.source.diagnostics.DiagnosticSink; -import p.studio.compiler.source.identifiers.NameId; import p.studio.compiler.source.identifiers.ModuleId; +import p.studio.compiler.source.identifiers.NameId; import p.studio.compiler.source.tables.IntrinsicTable; import p.studio.compiler.source.tables.NameTable; import p.studio.utilities.structures.ReadOnlyList; -import static p.studio.compiler.pbs.lowering.PbsExecutableLoweringModels.*; - import java.util.HashMap; import java.util.Map; +import static p.studio.compiler.pbs.lowering.PbsExecutableLoweringModels.*; + final class PbsExecutableBodyLowerer { private final PbsExecutableCallsiteEmitter callsiteEmitter = new PbsExecutableCallsiteEmitter(); private final PbsExecutableStackAnalyzer stackAnalyzer = new PbsExecutableStackAnalyzer(); diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableCallableRegistryFactory.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableCallableRegistryFactory.java index 688de70d..1ad9ab5c 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableCallableRegistryFactory.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableCallableRegistryFactory.java @@ -4,20 +4,16 @@ import p.studio.compiler.pbs.PbsFrontendCompiler; import p.studio.compiler.pbs.ast.PbsAst; import p.studio.compiler.source.identifiers.CallableId; import p.studio.compiler.source.identifiers.ModuleId; -import p.studio.compiler.source.tables.CallableShapeTable; -import p.studio.compiler.source.tables.CallableSignatureRef; -import p.studio.compiler.source.tables.CallableTable; -import p.studio.compiler.source.tables.NameTable; -import p.studio.compiler.source.tables.TypeSurfaceTable; +import p.studio.compiler.source.tables.*; import p.studio.utilities.structures.ReadOnlyList; -import static p.studio.compiler.pbs.lowering.PbsExecutableLoweringModels.*; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import static p.studio.compiler.pbs.lowering.PbsExecutableLoweringModels.*; + final class PbsExecutableCallableRegistryFactory { private final PbsCallableShapeSurfaceService callableShapeSurfaceService = new PbsCallableShapeSurfaceService(); diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableMetadataIndexFactory.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableMetadataIndexFactory.java index b5ee5e92..9249bf81 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableMetadataIndexFactory.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableMetadataIndexFactory.java @@ -9,13 +9,13 @@ import p.studio.compiler.source.identifiers.NameId; import p.studio.compiler.source.tables.NameTable; import p.studio.utilities.structures.ReadOnlyList; -import static p.studio.compiler.pbs.lowering.PbsExecutableLoweringModels.*; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import static p.studio.compiler.pbs.lowering.PbsExecutableLoweringModels.*; + final class PbsExecutableMetadataIndexFactory { PbsExecutableMetadataIndex create( diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableStackAnalyzer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableStackAnalyzer.java index 33455177..42216581 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableStackAnalyzer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/lowering/PbsExecutableStackAnalyzer.java @@ -3,11 +3,7 @@ package p.studio.compiler.pbs.lowering; import p.studio.compiler.models.IRBackendExecutableFunction; import p.studio.utilities.structures.ReadOnlyList; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; +import java.util.*; final class PbsExecutableStackAnalyzer { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/parser/PbsExprParser.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/parser/PbsExprParser.java index 909d4bb5..081aa80d 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/parser/PbsExprParser.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/parser/PbsExprParser.java @@ -1,7 +1,6 @@ package p.studio.compiler.pbs.parser; import p.studio.compiler.pbs.ast.PbsAst; -import p.studio.compiler.pbs.lexer.PbsToken; import p.studio.compiler.pbs.lexer.PbsTokenKind; import p.studio.compiler.source.Span; diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsBuiltinLayoutResolver.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsBuiltinLayoutResolver.java index 731c8177..e1e1c1c1 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsBuiltinLayoutResolver.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsBuiltinLayoutResolver.java @@ -5,13 +5,7 @@ import p.studio.compiler.source.Span; import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.utilities.structures.ReadOnlyList; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; -import java.util.Set; +import java.util.*; public final class PbsBuiltinLayoutResolver { private static final Set BUILTIN_SCALAR_TYPES = Set.of("int", "float", "bool", "str"); diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsConstSemanticsValidator.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsConstSemanticsValidator.java index eeced59b..28d62a12 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsConstSemanticsValidator.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsConstSemanticsValidator.java @@ -1,18 +1,12 @@ package p.studio.compiler.pbs.semantics; import p.studio.compiler.pbs.ast.PbsAst; -import p.studio.compiler.source.Span; -import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Model; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; +import p.studio.compiler.source.Span; +import p.studio.compiler.source.diagnostics.DiagnosticSink; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.PriorityQueue; -import java.util.Set; +import java.util.*; final class PbsConstSemanticsValidator { private final PbsFlowTypeOps typeOps = new PbsFlowTypeOps(); diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsDeclarationSemanticsValidator.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsDeclarationSemanticsValidator.java index 9cdf3ebb..61e9fa79 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsDeclarationSemanticsValidator.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsDeclarationSemanticsValidator.java @@ -7,12 +7,7 @@ import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.source.tables.NameTable; import p.studio.utilities.structures.ReadOnlyList; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; public final class PbsDeclarationSemanticsValidator { private static final String ATTR_HOST = "Host"; diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowAssignmentAnalyzer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowAssignmentAnalyzer.java index 7407cb71..706a6118 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowAssignmentAnalyzer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowAssignmentAnalyzer.java @@ -1,12 +1,8 @@ package p.studio.compiler.pbs.semantics; import p.studio.compiler.pbs.ast.PbsAst; +import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.*; import p.studio.compiler.source.diagnostics.Diagnostics; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.ExprUse; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Kind; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Model; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Scope; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; final class PbsFlowAssignmentAnalyzer { @FunctionalInterface diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBodyAnalyzer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBodyAnalyzer.java index c3c667c0..732d525d 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBodyAnalyzer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBodyAnalyzer.java @@ -1,11 +1,11 @@ package p.studio.compiler.pbs.semantics; import p.studio.compiler.pbs.ast.PbsAst; -import p.studio.compiler.source.diagnostics.DiagnosticSink; -import p.studio.utilities.structures.ReadOnlyList; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Model; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Scope; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; +import p.studio.compiler.source.diagnostics.DiagnosticSink; +import p.studio.utilities.structures.ReadOnlyList; final class PbsFlowBodyAnalyzer { private final PbsFlowTypeOps typeOps = new PbsFlowTypeOps(); diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBodyContext.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBodyContext.java index ee2abc11..f60cbca3 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBodyContext.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBodyContext.java @@ -1,9 +1,9 @@ package p.studio.compiler.pbs.semantics; -import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Model; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Scope; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; +import p.studio.compiler.source.diagnostics.DiagnosticSink; final class PbsFlowBodyContext { private final Scope scope; diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBranchExpressionAnalyzer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBranchExpressionAnalyzer.java index e5a47e74..6145840b 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBranchExpressionAnalyzer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowBranchExpressionAnalyzer.java @@ -1,11 +1,11 @@ package p.studio.compiler.pbs.semantics; import p.studio.compiler.pbs.ast.PbsAst; -import p.studio.compiler.source.diagnostics.Diagnostics; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.ExprResult; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.ExprUse; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Kind; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; +import p.studio.compiler.source.diagnostics.Diagnostics; final class PbsFlowBranchExpressionAnalyzer { @FunctionalInterface diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCallableBodyAnalyzer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCallableBodyAnalyzer.java index 62bad5dd..301d9138 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCallableBodyAnalyzer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCallableBodyAnalyzer.java @@ -1,8 +1,8 @@ package p.studio.compiler.pbs.semantics; import p.studio.compiler.pbs.ast.PbsAst; -import p.studio.utilities.structures.ReadOnlyList; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; +import p.studio.utilities.structures.ReadOnlyList; final class PbsFlowCallableBodyAnalyzer { @FunctionalInterface diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCallableResolutionAnalyzer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCallableResolutionAnalyzer.java index 8c514954..c8efde31 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCallableResolutionAnalyzer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCallableResolutionAnalyzer.java @@ -1,15 +1,10 @@ package p.studio.compiler.pbs.semantics; import p.studio.compiler.pbs.ast.PbsAst; +import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.*; import p.studio.compiler.source.Span; import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.source.diagnostics.Diagnostics; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.CallableSymbol; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.ExprResult; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.ExprUse; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Kind; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TupleField; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; import java.util.ArrayList; diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCompletionAnalyzer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCompletionAnalyzer.java index 8b9e3749..232c3bf3 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCompletionAnalyzer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowCompletionAnalyzer.java @@ -1,9 +1,9 @@ package p.studio.compiler.pbs.semantics; import p.studio.compiler.pbs.ast.PbsAst; -import p.studio.compiler.source.diagnostics.Diagnostics; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Kind; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Model; +import p.studio.compiler.source.diagnostics.Diagnostics; import java.util.HashSet; diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowControlExpressionAnalyzer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowControlExpressionAnalyzer.java index a7f06532..35dc93e8 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowControlExpressionAnalyzer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowControlExpressionAnalyzer.java @@ -1,11 +1,11 @@ package p.studio.compiler.pbs.semantics; import p.studio.compiler.pbs.ast.PbsAst; -import p.studio.compiler.source.diagnostics.DiagnosticSink; -import p.studio.compiler.source.diagnostics.Diagnostics; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.ExprResult; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Kind; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; +import p.studio.compiler.source.diagnostics.DiagnosticSink; +import p.studio.compiler.source.diagnostics.Diagnostics; import java.util.HashSet; import java.util.Set; diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowExpressionAnalyzer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowExpressionAnalyzer.java index 07554f4b..69dbe9b8 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowExpressionAnalyzer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowExpressionAnalyzer.java @@ -1,12 +1,8 @@ package p.studio.compiler.pbs.semantics; import p.studio.compiler.pbs.ast.PbsAst; +import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.*; import p.studio.compiler.source.diagnostics.DiagnosticSink; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.ExprResult; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.ExprUse; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Model; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Scope; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; final class PbsFlowExpressionAnalyzer { @FunctionalInterface diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowExpressionContext.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowExpressionContext.java index 76963710..5e2d27e5 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowExpressionContext.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowExpressionContext.java @@ -1,10 +1,10 @@ package p.studio.compiler.pbs.semantics; -import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.ExprUse; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Model; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Scope; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; +import p.studio.compiler.source.diagnostics.DiagnosticSink; final class PbsFlowExpressionContext { private final Scope scope; diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowStatementAnalyzer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowStatementAnalyzer.java index 03069cd8..45f0774a 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowStatementAnalyzer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowStatementAnalyzer.java @@ -1,13 +1,9 @@ package p.studio.compiler.pbs.semantics; import p.studio.compiler.pbs.ast.PbsAst; +import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.*; import p.studio.compiler.source.Span; import p.studio.compiler.source.diagnostics.Diagnostics; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.ExprUse; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Kind; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Model; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Scope; -import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; final class PbsFlowStatementAnalyzer { @FunctionalInterface diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowStructuralExpressionAnalyzer.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowStructuralExpressionAnalyzer.java index 54e21d69..1d561a30 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowStructuralExpressionAnalyzer.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/semantics/PbsFlowStructuralExpressionAnalyzer.java @@ -1,11 +1,11 @@ package p.studio.compiler.pbs.semantics; import p.studio.compiler.pbs.ast.PbsAst; -import p.studio.compiler.source.diagnostics.Diagnostics; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.ExprResult; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.Kind; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TupleField; import p.studio.compiler.pbs.semantics.PbsFlowSemanticSupport.TypeView; +import p.studio.compiler.source.diagnostics.Diagnostics; import java.util.ArrayList; diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/stdlib/InterfaceModuleLoader.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/stdlib/InterfaceModuleLoader.java index 4a35fef8..e2cebf37 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/stdlib/InterfaceModuleLoader.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/stdlib/InterfaceModuleLoader.java @@ -1,20 +1,20 @@ package p.studio.compiler.pbs.stdlib; +import p.studio.compiler.models.SourceHandle; import p.studio.compiler.pbs.ast.PbsAst; import p.studio.compiler.pbs.lexer.PbsLexer; import p.studio.compiler.pbs.linking.PbsModuleVisibilityValidator; import p.studio.compiler.pbs.parser.PbsBarrelParser; import p.studio.compiler.pbs.parser.PbsParser; -import p.studio.compiler.source.tables.FileTable; import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.source.identifiers.FileId; import p.studio.compiler.source.identifiers.ProjectId; -import p.studio.compiler.models.SourceHandle; +import p.studio.compiler.source.tables.FileTable; import p.studio.utilities.structures.ReadOnlyList; -import java.util.ArrayList; import java.nio.charset.StandardCharsets; import java.nio.file.Path; +import java.util.ArrayList; public final class InterfaceModuleLoader { public InterfaceModuleLoader() { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PBSFrontendPhaseService.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PBSFrontendPhaseService.java index da0e0b3a..24e81385 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PBSFrontendPhaseService.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PBSFrontendPhaseService.java @@ -14,13 +14,7 @@ import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.source.identifiers.ModuleId; import p.studio.utilities.logs.LogAggregator; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; @Slf4j public class PBSFrontendPhaseService implements FrontendPhaseService { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PbsImportedSemanticContextService.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PbsImportedSemanticContextService.java index 6676ddc3..a8855723 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PbsImportedSemanticContextService.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PbsImportedSemanticContextService.java @@ -2,20 +2,14 @@ package p.studio.compiler.services; import p.studio.compiler.models.IRReservedMetadata; import p.studio.compiler.pbs.PbsFrontendCompiler; -import p.studio.compiler.pbs.ast.PbsAst; import p.studio.compiler.pbs.PbsReservedMetadataExtractor; +import p.studio.compiler.pbs.ast.PbsAst; import p.studio.compiler.source.identifiers.FileId; import p.studio.compiler.source.identifiers.ModuleId; import p.studio.compiler.source.tables.ModuleTable; import p.studio.utilities.structures.ReadOnlyList; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; final class PbsImportedSemanticContextService { private final PbsReservedMetadataExtractor reservedMetadataExtractor; diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PbsModuleAssemblyService.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PbsModuleAssemblyService.java index 77824804..3d1b44d5 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PbsModuleAssemblyService.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PbsModuleAssemblyService.java @@ -27,13 +27,7 @@ import p.studio.utilities.structures.ReadOnlyList; import java.nio.charset.StandardCharsets; import java.nio.file.Path; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; +import java.util.*; final class PbsModuleAssemblyService { private final StdlibEnvironmentResolver stdlibEnvironmentResolver; diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/PbsGateUSdkInterfaceConformanceTest.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/PbsGateUSdkInterfaceConformanceTest.java index f736f3b9..bc6deca3 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/PbsGateUSdkInterfaceConformanceTest.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/PbsGateUSdkInterfaceConformanceTest.java @@ -4,11 +4,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import p.studio.compiler.messages.BuildingIssueSink; import p.studio.compiler.messages.FrontendPhaseContext; -import p.studio.compiler.models.BuildStack; -import p.studio.compiler.models.IRBackend; -import p.studio.compiler.models.ProjectDescriptor; -import p.studio.compiler.models.SourceHandle; -import p.studio.compiler.models.SourceKind; +import p.studio.compiler.models.*; import p.studio.compiler.pbs.ast.PbsAst; import p.studio.compiler.pbs.lexer.PbsLexer; import p.studio.compiler.pbs.linking.PbsLinkErrors; @@ -37,11 +33,7 @@ import java.util.List; import java.util.Optional; import java.util.function.Predicate; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertInstanceOf; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class PbsGateUSdkInterfaceConformanceTest { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/PbsGateUStdlibCompileTest.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/PbsGateUStdlibCompileTest.java index 87b7ab92..74947d40 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/PbsGateUStdlibCompileTest.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/PbsGateUStdlibCompileTest.java @@ -28,10 +28,7 @@ import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class PbsGateUStdlibCompileTest { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsBarrelParserTest.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsBarrelParserTest.java index 506d187a..598c5c44 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsBarrelParserTest.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsBarrelParserTest.java @@ -6,9 +6,7 @@ import p.studio.compiler.pbs.lexer.PbsLexer; import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.source.identifiers.FileId; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertInstanceOf; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class PbsBarrelParserTest { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsExprParserTest.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsExprParserTest.java index 031e82fd..5d5581d1 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsExprParserTest.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsExprParserTest.java @@ -6,10 +6,7 @@ import p.studio.compiler.pbs.lexer.PbsLexer; import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.source.identifiers.FileId; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertInstanceOf; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class PbsExprParserTest { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsParserStatementsTest.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsParserStatementsTest.java index d9b1adf7..c1eeec89 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsParserStatementsTest.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsParserStatementsTest.java @@ -6,9 +6,7 @@ import p.studio.compiler.pbs.lexer.PbsLexer; import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.source.identifiers.FileId; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertInstanceOf; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class PbsParserStatementsTest { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsParserTest.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsParserTest.java index be01ad1c..d264ccb2 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsParserTest.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/parser/PbsParserTest.java @@ -8,10 +8,7 @@ import p.studio.compiler.source.identifiers.FileId; import java.nio.charset.StandardCharsets; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertInstanceOf; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class PbsParserTest { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsControlFlowTest.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsControlFlowTest.java index 36559c9e..3effc472 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsControlFlowTest.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsControlFlowTest.java @@ -5,9 +5,7 @@ import p.studio.compiler.pbs.PbsFrontendCompiler; import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.source.identifiers.FileId; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class PbsSemanticsControlFlowTest { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsDeclarationsTest.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsDeclarationsTest.java index 817df3ee..ab7cee86 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsDeclarationsTest.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsDeclarationsTest.java @@ -5,9 +5,7 @@ import p.studio.compiler.pbs.PbsFrontendCompiler; import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.source.identifiers.FileId; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class PbsSemanticsDeclarationsTest { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsFallthroughTest.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsFallthroughTest.java index f778b5fe..879d0ffe 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsFallthroughTest.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/semantics/PbsSemanticsFallthroughTest.java @@ -5,9 +5,7 @@ import p.studio.compiler.pbs.PbsFrontendCompiler; import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.source.identifiers.FileId; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class PbsSemanticsFallthroughTest { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/stdlib/InterfaceModuleLoaderTest.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/stdlib/InterfaceModuleLoaderTest.java index 2aab4962..5a4a5b82 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/stdlib/InterfaceModuleLoaderTest.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/pbs/stdlib/InterfaceModuleLoaderTest.java @@ -9,9 +9,7 @@ import p.studio.utilities.structures.ReadOnlyList; import java.nio.file.Path; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class InterfaceModuleLoaderTest { diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/services/PBSFrontendPhaseServiceTest.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/services/PBSFrontendPhaseServiceTest.java index 45a9401b..cba2b53e 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/services/PBSFrontendPhaseServiceTest.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/test/java/p/studio/compiler/services/PBSFrontendPhaseServiceTest.java @@ -9,12 +9,12 @@ import p.studio.compiler.models.ProjectDescriptor; import p.studio.compiler.models.SourceHandle; import p.studio.compiler.models.SourceKind; import p.studio.compiler.pbs.PbsHostAdmissionErrors; +import p.studio.compiler.pbs.linking.PbsLinkErrors; +import p.studio.compiler.pbs.semantics.PbsSemanticsErrors; import p.studio.compiler.pbs.stdlib.InterfaceModuleLoader; import p.studio.compiler.pbs.stdlib.StdlibEnvironment; import p.studio.compiler.pbs.stdlib.StdlibEnvironmentResolver; import p.studio.compiler.pbs.stdlib.StdlibModuleSource; -import p.studio.compiler.pbs.linking.PbsLinkErrors; -import p.studio.compiler.pbs.semantics.PbsSemanticsErrors; import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.source.identifiers.ProjectId; import p.studio.compiler.source.tables.FileTable; @@ -29,12 +29,9 @@ import java.nio.file.Path; import java.nio.file.attribute.BasicFileAttributes; import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Optional; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class PBSFrontendPhaseServiceTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/bytecode/BytecodeEmitter.java b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/bytecode/BytecodeEmitter.java index 36ebcdca..a1dcb6fd 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/bytecode/BytecodeEmitter.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/bytecode/BytecodeEmitter.java @@ -6,8 +6,8 @@ import java.io.ByteArrayOutputStream; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.ArrayList; -import java.util.LinkedHashSet; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.Objects; public class BytecodeEmitter { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/irvm/IRVMProgram.java b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/irvm/IRVMProgram.java index b62bf3f4..070c828f 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/irvm/IRVMProgram.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/irvm/IRVMProgram.java @@ -1,7 +1,6 @@ package p.studio.compiler.backend.irvm; import p.studio.compiler.backend.bytecode.BytecodeEmitter; -import p.studio.compiler.backend.bytecode.BytecodeModule; import p.studio.utilities.structures.ReadOnlyList; import java.util.ArrayList; diff --git a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/irvm/OptimizeIRVMService.java b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/irvm/OptimizeIRVMService.java index 6399569d..39247208 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/irvm/OptimizeIRVMService.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/irvm/OptimizeIRVMService.java @@ -3,12 +3,7 @@ package p.studio.compiler.backend.irvm; import p.studio.compiler.backend.bytecode.BytecodeEmitter; import p.studio.utilities.structures.ReadOnlyList; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; +import java.util.*; public class OptimizeIRVMService { private final IRVMValidator validator; diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeEmitterTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeEmitterTest.java index 3d2889e5..0e74740d 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeEmitterTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeEmitterTest.java @@ -6,10 +6,7 @@ import p.studio.utilities.structures.ReadOnlyList; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class BytecodeEmitterTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeLinkPrecheckServiceTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeLinkPrecheckServiceTest.java index 17a84324..e352792f 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeLinkPrecheckServiceTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeLinkPrecheckServiceTest.java @@ -6,9 +6,7 @@ import p.studio.utilities.structures.ReadOnlyList; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.*; class BytecodeLinkPrecheckServiceTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeModuleTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeModuleTest.java index cc76c6c3..d0d8a783 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeModuleTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodeModuleTest.java @@ -6,9 +6,7 @@ import p.studio.utilities.structures.ReadOnlyList; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.*; class BytecodeModuleTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodePreloadVerifierServiceTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodePreloadVerifierServiceTest.java index 3987d2d3..f56c15f9 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodePreloadVerifierServiceTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/bytecode/BytecodePreloadVerifierServiceTest.java @@ -6,9 +6,7 @@ import p.studio.utilities.structures.ReadOnlyList; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.*; class BytecodePreloadVerifierServiceTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/IRVMIntrinsicRegistryParityTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/IRVMIntrinsicRegistryParityTest.java index d24aef8e..65332eac 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/IRVMIntrinsicRegistryParityTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/IRVMIntrinsicRegistryParityTest.java @@ -6,18 +6,10 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Locale; +import java.util.*; import java.util.regex.Pattern; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; +import static org.junit.jupiter.api.Assertions.*; class IRVMIntrinsicRegistryParityTest { private static final String VM_ARCH_INTRINSICS_PATH = "docs/vm-arch/INTRINSICS.csv"; diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/IRVMValidatorTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/IRVMValidatorTest.java index 452575a5..76f39ce7 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/IRVMValidatorTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/IRVMValidatorTest.java @@ -8,9 +8,7 @@ import p.studio.utilities.structures.ReadOnlyList; import java.util.Map; import java.util.Set; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.*; class IRVMValidatorTest { private final IRVMValidator validator = new IRVMValidator(); diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/LowerToIRVMServiceTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/LowerToIRVMServiceTest.java index f7566c45..1f40311a 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/LowerToIRVMServiceTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/LowerToIRVMServiceTest.java @@ -12,9 +12,7 @@ import p.studio.compiler.source.tables.IntrinsicReference; import p.studio.compiler.source.tables.ModuleReference; import p.studio.utilities.structures.ReadOnlyList; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class LowerToIRVMServiceTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/OptimizeIRVMEquivalenceHarnessTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/OptimizeIRVMEquivalenceHarnessTest.java index 20dcc9cb..e8fb4b83 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/OptimizeIRVMEquivalenceHarnessTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/OptimizeIRVMEquivalenceHarnessTest.java @@ -2,8 +2,8 @@ package p.studio.compiler.backend.irvm; import org.junit.jupiter.api.Test; import p.studio.compiler.backend.bytecode.BytecodeEmitter; -import p.studio.compiler.backend.bytecode.BytecodePreloadVerifierService; import p.studio.compiler.backend.bytecode.BytecodeModule; +import p.studio.compiler.backend.bytecode.BytecodePreloadVerifierService; import p.studio.compiler.models.IRBackend; import p.studio.compiler.models.IRBackendExecutableFunction; import p.studio.compiler.source.Span; @@ -16,12 +16,10 @@ import p.studio.utilities.structures.ReadOnlyList; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; class OptimizeIRVMEquivalenceHarnessTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/OptimizeIRVMServiceTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/OptimizeIRVMServiceTest.java index 32899939..16ef0e62 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/OptimizeIRVMServiceTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/backend/irvm/OptimizeIRVMServiceTest.java @@ -9,11 +9,7 @@ import p.studio.utilities.structures.ReadOnlyList; import java.util.ArrayList; import java.util.List; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class OptimizeIRVMServiceTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/integration/BackendGateIIntegrationTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/integration/BackendGateIIntegrationTest.java index 4e132104..f8339f01 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/integration/BackendGateIIntegrationTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/integration/BackendGateIIntegrationTest.java @@ -23,14 +23,9 @@ import p.studio.utilities.structures.ReadOnlyList; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.HashMap; -import java.util.Map; import java.util.Set; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.*; class BackendGateIIntegrationTest { private final RuntimeCompatibilityAdapter compatibilityAdapter = RuntimeCompatibilityAdapters.createDefault(); diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/integration/MainProjectPipelineIntegrationTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/integration/MainProjectPipelineIntegrationTest.java index cff539ec..39fff96f 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/integration/MainProjectPipelineIntegrationTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/integration/MainProjectPipelineIntegrationTest.java @@ -9,9 +9,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; +import static org.junit.jupiter.api.Assertions.*; class MainProjectPipelineIntegrationTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/specs/BackendConformanceMatrixSpecTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/specs/BackendConformanceMatrixSpecTest.java index fb7b08c1..303acc8e 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/specs/BackendConformanceMatrixSpecTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/specs/BackendConformanceMatrixSpecTest.java @@ -10,9 +10,7 @@ import java.util.List; import java.util.Optional; import java.util.regex.Pattern; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; +import static org.junit.jupiter.api.Assertions.*; class BackendConformanceMatrixSpecTest { private static final String MATRIX_RELATIVE_PATH = diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/BuilderPipelineServiceOrderTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/BuilderPipelineServiceOrderTest.java index 9f48a28f..30e47425 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/BuilderPipelineServiceOrderTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/BuilderPipelineServiceOrderTest.java @@ -1,15 +1,7 @@ package p.studio.compiler.workspaces; import org.junit.jupiter.api.Test; -import p.studio.compiler.workspaces.stages.EmitBytecodePipelineStage; -import p.studio.compiler.workspaces.stages.FrontendPhasePipelineStage; -import p.studio.compiler.workspaces.stages.LinkBytecodePipelineStage; -import p.studio.compiler.workspaces.stages.LoadSourcesPipelineStage; -import p.studio.compiler.workspaces.stages.LowerToIRVMPipelineStage; -import p.studio.compiler.workspaces.stages.OptimizeIRVMPipelineStage; -import p.studio.compiler.workspaces.stages.ResolveDepsPipelineStage; -import p.studio.compiler.workspaces.stages.VerifyBytecodePipelineStage; -import p.studio.compiler.workspaces.stages.WriteBytecodeArtifactPipelineStage; +import p.studio.compiler.workspaces.stages.*; import java.lang.reflect.Field; import java.util.List; diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/BackendSafetyGateSUTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/BackendSafetyGateSUTest.java index 23921d35..6e35a9f7 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/BackendSafetyGateSUTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/BackendSafetyGateSUTest.java @@ -2,11 +2,7 @@ package p.studio.compiler.workspaces.stages; import org.junit.jupiter.api.Test; import p.studio.compiler.backend.bytecode.BytecodeEmitter; -import p.studio.compiler.backend.irvm.IRVMFunction; -import p.studio.compiler.backend.irvm.IRVMInstruction; -import p.studio.compiler.backend.irvm.IRVMModule; -import p.studio.compiler.backend.irvm.IRVMOp; -import p.studio.compiler.backend.irvm.IRVMProgram; +import p.studio.compiler.backend.irvm.*; import p.studio.compiler.messages.BuilderPipelineConfig; import p.studio.compiler.models.BuilderPipelineContext; import p.studio.compiler.models.IRBackend; @@ -17,9 +13,7 @@ import p.studio.compiler.source.identifiers.FileId; import p.studio.utilities.logs.LogAggregator; import p.studio.utilities.structures.ReadOnlyList; -import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class BackendSafetyGateSUTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/EmitBytecodePipelineStageTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/EmitBytecodePipelineStageTest.java index 76bcbfdd..1740bd28 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/EmitBytecodePipelineStageTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/EmitBytecodePipelineStageTest.java @@ -8,10 +8,7 @@ import p.studio.compiler.models.BuilderPipelineContext; import p.studio.utilities.logs.LogAggregator; import p.studio.utilities.structures.ReadOnlyList; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class EmitBytecodePipelineStageTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/LowerToIRVMPipelineStageTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/LowerToIRVMPipelineStageTest.java index 013017f8..90503be9 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/LowerToIRVMPipelineStageTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/LowerToIRVMPipelineStageTest.java @@ -11,10 +11,7 @@ import p.studio.compiler.source.identifiers.FileId; import p.studio.utilities.logs.LogAggregator; import p.studio.utilities.structures.ReadOnlyList; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class LowerToIRVMPipelineStageTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/OptimizeIRVMPipelineStageTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/OptimizeIRVMPipelineStageTest.java index 80dad9a9..8072cef3 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/OptimizeIRVMPipelineStageTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/OptimizeIRVMPipelineStageTest.java @@ -1,20 +1,13 @@ package p.studio.compiler.workspaces.stages; import org.junit.jupiter.api.Test; -import p.studio.compiler.backend.irvm.IRVMFunction; -import p.studio.compiler.backend.irvm.IRVMInstruction; -import p.studio.compiler.backend.irvm.IRVMModule; -import p.studio.compiler.backend.irvm.IRVMOp; -import p.studio.compiler.backend.irvm.IRVMProgram; +import p.studio.compiler.backend.irvm.*; import p.studio.compiler.messages.BuilderPipelineConfig; import p.studio.compiler.models.BuilderPipelineContext; import p.studio.utilities.logs.LogAggregator; import p.studio.utilities.structures.ReadOnlyList; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class OptimizeIRVMPipelineStageTest { diff --git a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/WriteBytecodeArtifactPipelineStageTest.java b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/WriteBytecodeArtifactPipelineStageTest.java index 56ae555a..b6f3da37 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/WriteBytecodeArtifactPipelineStageTest.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/workspaces/stages/WriteBytecodeArtifactPipelineStageTest.java @@ -11,10 +11,7 @@ import p.studio.utilities.structures.ReadOnlyList; import java.nio.file.Files; import java.nio.file.Path; -import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class WriteBytecodeArtifactPipelineStageTest { diff --git a/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/source/diagnostics/DiagnosticSink.java b/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/source/diagnostics/DiagnosticSink.java index 3246b188..fd213d21 100644 --- a/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/source/diagnostics/DiagnosticSink.java +++ b/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/source/diagnostics/DiagnosticSink.java @@ -3,11 +3,7 @@ package p.studio.compiler.source.diagnostics; import p.studio.compiler.source.Span; import p.studio.utilities.structures.ReadOnlyCollection; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; public class DiagnosticSink implements ReadOnlyCollection { private final ArrayList diagnostics = new ArrayList<>(); diff --git a/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/source/identifiers/SourceIdentifier.java b/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/source/identifiers/SourceIdentifier.java index 5350c4ab..2a5f6835 100644 --- a/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/source/identifiers/SourceIdentifier.java +++ b/prometeu-compiler/prometeu-compiler-core/src/main/java/p/studio/compiler/source/identifiers/SourceIdentifier.java @@ -3,9 +3,6 @@ package p.studio.compiler.source.identifiers; import lombok.EqualsAndHashCode; import lombok.Getter; -import java.util.Optional; -import java.util.function.Supplier; - @Getter @EqualsAndHashCode(onlyExplicitlyIncluded = true) public abstract class SourceIdentifier { diff --git a/prometeu-compiler/prometeu-compiler-core/src/test/java/p/studio/compiler/source/tables/HostBindingTableTest.java b/prometeu-compiler/prometeu-compiler-core/src/test/java/p/studio/compiler/source/tables/HostBindingTableTest.java index 2e9850d7..09bac77b 100644 --- a/prometeu-compiler/prometeu-compiler-core/src/test/java/p/studio/compiler/source/tables/HostBindingTableTest.java +++ b/prometeu-compiler/prometeu-compiler-core/src/test/java/p/studio/compiler/source/tables/HostBindingTableTest.java @@ -2,9 +2,7 @@ package p.studio.compiler.source.tables; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.*; class HostBindingTableTest { diff --git a/prometeu-compiler/prometeu-compiler-core/src/test/java/p/studio/compiler/source/tables/IntrinsicTableTest.java b/prometeu-compiler/prometeu-compiler-core/src/test/java/p/studio/compiler/source/tables/IntrinsicTableTest.java index 8d5804b2..4d0200ee 100644 --- a/prometeu-compiler/prometeu-compiler-core/src/test/java/p/studio/compiler/source/tables/IntrinsicTableTest.java +++ b/prometeu-compiler/prometeu-compiler-core/src/test/java/p/studio/compiler/source/tables/IntrinsicTableTest.java @@ -2,9 +2,7 @@ package p.studio.compiler.source.tables; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class IntrinsicTableTest { diff --git a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/phases/ValidatePhaseTest.java b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/phases/ValidatePhaseTest.java index 033bce11..05718d59 100644 --- a/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/phases/ValidatePhaseTest.java +++ b/prometeu-compiler/prometeu-deps/src/test/java/p/studio/compiler/workspaces/phases/ValidatePhaseTest.java @@ -12,7 +12,8 @@ import p.studio.utilities.structures.ReadOnlyList; import java.nio.file.Path; import java.util.List; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; class ValidatePhaseTest { diff --git a/prometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/models/IRBackend.java b/prometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/models/IRBackend.java index 33438418..0e588943 100644 --- a/prometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/models/IRBackend.java +++ b/prometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/models/IRBackend.java @@ -5,12 +5,7 @@ import lombok.Getter; import p.studio.compiler.source.identifiers.CallableId; import p.studio.compiler.source.identifiers.IntrinsicId; import p.studio.compiler.source.identifiers.ModuleId; -import p.studio.compiler.source.tables.CallableSignatureRef; -import p.studio.compiler.source.tables.CallableTable; -import p.studio.compiler.source.tables.IntrinsicReference; -import p.studio.compiler.source.tables.IntrinsicTable; -import p.studio.compiler.source.tables.ModuleReference; -import p.studio.compiler.source.tables.ModuleTable; +import p.studio.compiler.source.tables.*; import p.studio.utilities.structures.ReadOnlyList; import java.util.ArrayList; diff --git a/prometeu-compiler/prometeu-frontend-api/src/test/java/p/studio/compiler/models/IRBackendExecutableContractTest.java b/prometeu-compiler/prometeu-frontend-api/src/test/java/p/studio/compiler/models/IRBackendExecutableContractTest.java index baa64a0c..82628bd7 100644 --- a/prometeu-compiler/prometeu-frontend-api/src/test/java/p/studio/compiler/models/IRBackendExecutableContractTest.java +++ b/prometeu-compiler/prometeu-frontend-api/src/test/java/p/studio/compiler/models/IRBackendExecutableContractTest.java @@ -11,9 +11,7 @@ import p.studio.compiler.source.tables.IntrinsicReference; import p.studio.compiler.source.tables.ModuleReference; import p.studio.utilities.structures.ReadOnlyList; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; class IRBackendExecutableContractTest { diff --git a/prometeu-infra/src/main/java/p/studio/utilities/structures/ReadOnlyList.java b/prometeu-infra/src/main/java/p/studio/utilities/structures/ReadOnlyList.java index ecfa30e8..3a229005 100644 --- a/prometeu-infra/src/main/java/p/studio/utilities/structures/ReadOnlyList.java +++ b/prometeu-infra/src/main/java/p/studio/utilities/structures/ReadOnlyList.java @@ -1,11 +1,6 @@ package p.studio.utilities.structures; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.List; -import java.util.ListIterator; -import java.util.Objects; +import java.util.*; import java.util.stream.Stream; public interface ReadOnlyList extends ReadOnlyCollection { diff --git a/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/PackerWorkspaceService.java b/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/PackerWorkspaceService.java index fcf805b1..d0bc1a90 100644 --- a/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/PackerWorkspaceService.java +++ b/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/PackerWorkspaceService.java @@ -18,4 +18,6 @@ public interface PackerWorkspaceService { MoveAssetResult moveAsset(MoveAssetRequest request); DeleteAssetResult deleteAsset(DeleteAssetRequest request); + + UpdateAssetContractResponse updateAssetContract(UpdateAssetContractRequest request); } diff --git a/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/dtos/PackerAssetDetailsDTO.java b/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/dtos/PackerAssetDetailsDTO.java index 8ffd28ec..1aff06f3 100644 --- a/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/dtos/PackerAssetDetailsDTO.java +++ b/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/dtos/PackerAssetDetailsDTO.java @@ -1,6 +1,7 @@ package p.packer.dtos; import p.packer.messages.assets.OutputCodecCatalog; +import p.packer.messages.assets.OutputFormatCatalog; import java.nio.file.Path; import java.util.List; @@ -9,7 +10,7 @@ import java.util.Objects; public record PackerAssetDetailsDTO( PackerAssetSummaryDTO summary, - String outputFormat, + OutputFormatCatalog outputFormat, OutputCodecCatalog outputCodec, List availableOutputCodecs, Map> codecConfigurationFieldsByCodec, @@ -18,7 +19,7 @@ public record PackerAssetDetailsDTO( public PackerAssetDetailsDTO { Objects.requireNonNull(summary, "summary"); - outputFormat = Objects.requireNonNullElse(outputFormat, "unknown").trim(); + outputFormat = Objects.requireNonNullElse(outputFormat, OutputFormatCatalog.UNKNOWN); outputCodec = Objects.requireNonNullElse(outputCodec, OutputCodecCatalog.UNKNOWN); availableOutputCodecs = List.copyOf(Objects.requireNonNull(availableOutputCodecs, "availableOutputCodecs")); codecConfigurationFieldsByCodec = Map.copyOf(Objects.requireNonNull(codecConfigurationFieldsByCodec, "codecConfigurationFieldsByCodec")); diff --git a/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/messages/UpdateAssetContractRequest.java b/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/messages/UpdateAssetContractRequest.java new file mode 100644 index 00000000..37c9e4d4 --- /dev/null +++ b/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/messages/UpdateAssetContractRequest.java @@ -0,0 +1,21 @@ +package p.packer.messages; + +import p.packer.messages.assets.OutputCodecCatalog; + +import java.util.Map; +import java.util.Objects; + +public record UpdateAssetContractRequest( + PackerProjectContext project, + AssetReference assetReference, + boolean preloadEnabled, + OutputCodecCatalog outputCodec, + Map codecFieldValues) { + + public UpdateAssetContractRequest { + Objects.requireNonNull(project, "project"); + Objects.requireNonNull(assetReference, "assetReference"); + outputCodec = Objects.requireNonNullElse(outputCodec, OutputCodecCatalog.UNKNOWN); + codecFieldValues = Map.copyOf(Objects.requireNonNullElse(codecFieldValues, Map.of())); + } +} diff --git a/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/messages/UpdateAssetContractResponse.java b/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/messages/UpdateAssetContractResponse.java new file mode 100644 index 00000000..3ecc8888 --- /dev/null +++ b/prometeu-packer/prometeu-packer-api/src/main/java/p/packer/messages/UpdateAssetContractResponse.java @@ -0,0 +1,4 @@ +package p.packer.messages; + +public record UpdateAssetContractResponse(boolean success, String errorMessage) { +} diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetDeclaration.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetDeclaration.java index d39f5997..07803460 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetDeclaration.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetDeclaration.java @@ -1,7 +1,9 @@ package p.packer.models; +import org.apache.commons.lang3.StringUtils; import p.packer.messages.assets.AssetFamilyCatalog; import p.packer.messages.assets.OutputCodecCatalog; +import p.packer.messages.assets.OutputFormatCatalog; import java.util.List; import java.util.Map; @@ -13,7 +15,7 @@ public record PackerAssetDeclaration( String name, AssetFamilyCatalog assetFamily, Map> inputsByRole, - String outputFormat, + OutputFormatCatalog outputFormat, OutputCodecCatalog outputCodec, boolean preloadEnabled) { @@ -25,9 +27,9 @@ public record PackerAssetDeclaration( name = Objects.requireNonNull(name, "name").trim(); assetFamily = Objects.requireNonNull(assetFamily, "assetFamily"); inputsByRole = Map.copyOf(Objects.requireNonNull(inputsByRole, "inputsByRole")); - outputFormat = Objects.requireNonNull(outputFormat, "outputFormat").trim(); + outputFormat = Objects.requireNonNull(outputFormat, "outputFormat"); outputCodec = Objects.requireNonNull(outputCodec, "outputCodec"); - if (assetUuid.isBlank() || name.isBlank() || outputFormat.isBlank()) { + if (StringUtils.isBlank(assetUuid) || StringUtils.isBlank(name)) { throw new IllegalArgumentException("declaration fields must not be blank"); } } diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetDetails.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetDetails.java index 20e12e2b..54718d44 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetDetails.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetDetails.java @@ -1,6 +1,7 @@ package p.packer.models; import p.packer.messages.assets.OutputCodecCatalog; +import p.packer.messages.assets.OutputFormatCatalog; import java.nio.file.Path; import java.util.List; @@ -9,7 +10,7 @@ import java.util.Objects; public record PackerAssetDetails( PackerAssetSummary summary, - String outputFormat, + OutputFormatCatalog outputFormat, OutputCodecCatalog outputCodec, List availableOutputCodecs, Map> codecConfigurationFieldsByCodec, @@ -18,7 +19,7 @@ public record PackerAssetDetails( public PackerAssetDetails { Objects.requireNonNull(summary, "summary"); - outputFormat = Objects.requireNonNullElse(outputFormat, "unknown").trim(); + outputFormat = Objects.requireNonNullElse(outputFormat, OutputFormatCatalog.UNKNOWN); outputCodec = Objects.requireNonNullElse(outputCodec, OutputCodecCatalog.UNKNOWN); availableOutputCodecs = List.copyOf(Objects.requireNonNull(availableOutputCodecs, "availableOutputCodecs")); codecConfigurationFieldsByCodec = Map.copyOf(Objects.requireNonNull(codecConfigurationFieldsByCodec, "codecConfigurationFieldsByCodec")); diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetSummary.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetSummary.java index d2833157..02de6632 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetSummary.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/models/PackerAssetSummary.java @@ -1,7 +1,7 @@ package p.packer.models; -import p.packer.messages.assets.AssetFamilyCatalog; import p.packer.messages.AssetReference; +import p.packer.messages.assets.AssetFamilyCatalog; import p.packer.messages.assets.PackerAssetState; import p.packer.messages.assets.PackerBuildParticipation; 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 ce22ef8d..63f5daa9 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 @@ -10,11 +10,7 @@ import p.packer.models.PackerRegistryState; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; public final class FileSystemPackerRegistryRepository implements PackerRegistryRepository { private static final ObjectMapper MAPPER = new ObjectMapper(); 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 a5d39ed7..f68740e8 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 @@ -1,46 +1,17 @@ package p.packer.services; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import p.packer.messages.PackerOperationStatus; -import p.packer.messages.PackerProjectContext; -import p.packer.messages.assets.AssetFamilyCatalog; -import p.packer.messages.AssetReference; -import p.packer.messages.GetAssetActionsRequest; -import p.packer.messages.GetAssetActionsResult; -import p.packer.messages.MoveAssetRequest; -import p.packer.messages.MoveAssetResult; -import p.packer.messages.assets.OutputFormatCatalog; -import p.packer.messages.assets.PackerAssetState; -import p.packer.messages.assets.PackerBuildParticipation; -import p.packer.messages.diagnostics.PackerDiagnosticCategory; -import p.packer.messages.diagnostics.PackerDiagnosticSeverity; +import com.fasterxml.jackson.databind.node.ObjectNode; +import p.packer.PackerWorkspaceService; import p.packer.events.PackerEventKind; import p.packer.events.PackerEventSink; import p.packer.events.PackerProgress; -import p.packer.messages.CreateAssetRequest; -import p.packer.messages.CreateAssetResult; -import p.packer.messages.DeleteAssetRequest; -import p.packer.messages.DeleteAssetResult; -import p.packer.messages.GetAssetDetailsRequest; -import p.packer.messages.GetAssetDetailsResult; -import p.packer.messages.InitWorkspaceRequest; -import p.packer.messages.InitWorkspaceResult; -import p.packer.messages.ListAssetsRequest; -import p.packer.messages.ListAssetsResult; -import p.packer.messages.RegisterAssetRequest; -import p.packer.messages.RegisterAssetResult; -import p.packer.PackerWorkspaceService; -import p.packer.models.PackerAssetDeclarationParseResult; -import p.packer.models.PackerDeleteAssetEvaluation; -import p.packer.models.PackerAssetIdentity; -import p.packer.models.PackerMoveAssetEvaluation; -import p.packer.models.PackerRegisterAssetEvaluation; -import p.packer.models.PackerAssetSummary; -import p.packer.models.PackerDiagnostic; -import p.packer.models.PackerRegistryEntry; -import p.packer.models.PackerRegistryState; -import p.packer.models.PackerRuntimeAsset; -import p.packer.models.PackerRuntimeSnapshot; +import p.packer.messages.*; +import p.packer.messages.assets.*; +import p.packer.messages.diagnostics.PackerDiagnosticCategory; +import p.packer.messages.diagnostics.PackerDiagnosticSeverity; +import p.packer.models.*; import java.io.IOException; import java.nio.file.Files; @@ -115,7 +86,7 @@ public final class FileSystemPackerWorkspaceService implements PackerWorkspaceSe events.emit( PackerEventKind.ASSET_DISCOVERED, "Discovered asset: " + summary.identity().assetName(), - new PackerProgress(total == 0 ? 1.0d : (index + 1) / (double) total, false), + new PackerProgress((index + 1) / (double) total, false), List.of(summary.identity().assetName())); } @@ -405,9 +376,9 @@ public final class FileSystemPackerWorkspaceService implements PackerWorkspaceSe sourceRoot, targetRoot, targetManifestPath)); - final AssetReference canonicalReference = updatedEntry.isPresent() - ? AssetReference.forAssetId(updatedEntry.get().assetId()) - : AssetReference.forRelativeAssetRoot(targetRelativeRoot); + final AssetReference canonicalReference = updatedEntry + .map(packerRegistryEntry -> AssetReference.forAssetId(packerRegistryEntry.assetId())) + .orElseGet(() -> AssetReference.forRelativeAssetRoot(targetRelativeRoot)); final MoveAssetResult result = new MoveAssetResult( PackerOperationStatus.SUCCESS, "Asset moved: " + sourceRelativeRoot + " -> " + targetRelativeRoot, @@ -603,4 +574,111 @@ public final class FileSystemPackerWorkspaceService implements PackerWorkspaceSe .toList(); return registry.withAssets(updatedEntries, registry.nextAssetId()); } + + @Override + public UpdateAssetContractResponse updateAssetContract(final UpdateAssetContractRequest request) { + final UpdateAssetContractRequest safeRequest = Objects.requireNonNull(request, "request"); + final PackerProjectContext project = safeRequest.project(); + return writeCoordinator.execute(project, () -> updateAssetContractInWriteLane(safeRequest)); + } + + private UpdateAssetContractResponse updateAssetContractInWriteLane(UpdateAssetContractRequest request) { + final PackerProjectContext project = request.project(); + workspaceFoundation.initWorkspace(new InitWorkspaceRequest(project)); + final PackerRuntimeSnapshot snapshot = runtimeRegistry.getOrLoad(project).snapshot(); + final PackerDeleteAssetEvaluation evaluation = actionReadService.evaluateDelete(snapshot, project, request.assetReference()); + if (!evaluation.canDelete()) { + return new UpdateAssetContractResponse( + false, + Objects.requireNonNullElse(evaluation.reason(), "Asset contract cannot be updated.")); + } + if (request.outputCodec() == OutputCodecCatalog.UNKNOWN) { + return new UpdateAssetContractResponse(false, "Output codec is required."); + } + + final Path assetRoot = evaluation.resolved().assetRoot(); + final Path manifestPath = assetRoot.resolve("asset.json"); + if (!Files.isRegularFile(manifestPath)) { + return new UpdateAssetContractResponse(false, "asset.json was not found for the requested asset root."); + } + + final ObjectNode manifest; + try { + 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."); + } + manifest = objectNode; + } catch (IOException exception) { + return new UpdateAssetContractResponse(false, "Unable to read asset manifest: " + exception.getMessage()); + } + + final OutputFormatCatalog outputFormat = resolveManifestOutputFormat(manifest); + if (outputFormat == OutputFormatCatalog.UNKNOWN) { + return new UpdateAssetContractResponse(false, "Output format is missing or invalid in asset.json."); + } + if (!outputFormat.supports(request.outputCodec())) { + return new UpdateAssetContractResponse(false, "Output codec is not supported for the selected output format."); + } + + try { + patchManifestContract(manifest, request); + MAPPER.writerWithDefaultPrettyPrinter().writeValue(manifestPath.toFile(), manifest); + runtimeRegistry.update(project, (currentSnapshot, generation) -> runtimePatchService.afterUpdateAssetContract( + currentSnapshot, + generation, + assetRoot, + manifestPath, + evaluation.resolved().registryEntry())); + return new UpdateAssetContractResponse(true, null); + } catch (IOException exception) { + return new UpdateAssetContractResponse(false, "Unable to update asset contract: " + exception.getMessage()); + } catch (RuntimeException exception) { + return new UpdateAssetContractResponse(false, "Unable to update runtime snapshot: " + exception.getMessage()); + } + } + + private OutputFormatCatalog resolveManifestOutputFormat(ObjectNode manifest) { + final JsonNode outputNode = manifest.get("output"); + if (!(outputNode instanceof ObjectNode outputObject)) { + return OutputFormatCatalog.UNKNOWN; + } + final JsonNode formatNode = outputObject.get("format"); + if (formatNode == null || !formatNode.isTextual()) { + return OutputFormatCatalog.UNKNOWN; + } + return OutputFormatCatalog.fromManifestValue(formatNode.asText()); + } + + private void patchManifestContract(ObjectNode manifest, UpdateAssetContractRequest request) { + final ObjectNode preloadNode = mutableObject(manifest, "preload"); + preloadNode.put("enabled", request.preloadEnabled()); + + final ObjectNode outputNode = mutableObject(manifest, "output"); + outputNode.put("codec", request.outputCodec().manifestValue()); + + final ObjectNode codecConfigurationNode = mutableObject(outputNode, "codec_configuration"); + codecConfigurationNode.removeAll(); + final String selectedCodecPrefix = request.outputCodec().name() + ":"; + request.codecFieldValues().forEach((fieldKey, fieldValue) -> { + if (fieldKey == null || fieldKey.isBlank() || !fieldKey.startsWith(selectedCodecPrefix)) { + return; + } + final String normalizedFieldKey = fieldKey.substring(selectedCodecPrefix.length()).trim(); + if (normalizedFieldKey.isBlank()) { + return; + } + codecConfigurationNode.put(normalizedFieldKey, Objects.requireNonNullElse(fieldValue, "")); + }); + } + + private ObjectNode mutableObject(ObjectNode parent, String fieldName) { + final JsonNode current = parent.get(fieldName); + if (current instanceof ObjectNode objectNode) { + return objectNode; + } + 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/PackerAssetActionReadService.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetActionReadService.java index 93af935f..728d3471 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetActionReadService.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetActionReadService.java @@ -1,24 +1,10 @@ package p.packer.services; -import p.packer.messages.AssetReference; -import p.packer.messages.GetAssetActionsRequest; -import p.packer.messages.GetAssetActionsResult; -import p.packer.messages.PackerOperationStatus; -import p.packer.messages.PackerProjectContext; +import p.packer.messages.*; import p.packer.messages.assets.AssetAction; import p.packer.messages.diagnostics.PackerDiagnosticCategory; import p.packer.messages.diagnostics.PackerDiagnosticSeverity; -import p.packer.models.PackerAssetActionAvailability; -import p.packer.models.PackerAssetDeclaration; -import p.packer.models.PackerAssetDeclarationParseResult; -import p.packer.models.PackerDeleteAssetEvaluation; -import p.packer.models.PackerDiagnostic; -import p.packer.models.PackerMoveAssetEvaluation; -import p.packer.models.PackerRegisterAssetEvaluation; -import p.packer.models.PackerRegistryEntry; -import p.packer.models.PackerResolvedAssetReference; -import p.packer.models.PackerRuntimeAsset; -import p.packer.models.PackerRuntimeSnapshot; +import p.packer.models.*; import java.nio.file.Path; import java.util.ArrayList; 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 08ffd060..00010e81 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 @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import p.packer.messages.assets.AssetFamilyCatalog; import p.packer.messages.assets.OutputCodecCatalog; +import p.packer.messages.assets.OutputFormatCatalog; import p.packer.messages.diagnostics.PackerDiagnosticCategory; import p.packer.messages.diagnostics.PackerDiagnosticSeverity; import p.packer.models.PackerAssetDeclaration; @@ -12,11 +13,7 @@ import p.packer.models.PackerDiagnostic; import java.io.IOException; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; public final class PackerAssetDeclarationParser { private static final ObjectMapper MAPPER = new ObjectMapper(); @@ -43,7 +40,7 @@ public final class PackerAssetDeclarationParser { final String name = requiredText(root, "name", diagnostics, manifestPath); final AssetFamilyCatalog assetFamily = requiredAssetFamily(root, diagnostics, manifestPath); final Map> inputsByRole = requiredInputs(root.path("inputs"), diagnostics, manifestPath); - final String outputFormat = requiredText(root.path("output"), "format", diagnostics, manifestPath); + final OutputFormatCatalog outputFormat = requiredOutputFormat(root.path("output"), diagnostics, manifestPath); final OutputCodecCatalog outputCodec = requiredOutputCodec(root.path("output"), diagnostics, manifestPath); final Boolean preloadEnabled = requiredBoolean(root.path("preload"), "enabled", diagnostics, manifestPath); @@ -118,6 +115,24 @@ public final class PackerAssetDeclarationParser { return field.booleanValue(); } + private OutputFormatCatalog requiredOutputFormat(JsonNode node, List diagnostics, Path manifestPath) { + final String fmtValue = requiredText(node, "format", diagnostics, manifestPath); + if (fmtValue == null) { + return null; + } + final OutputFormatCatalog outputFormat = OutputFormatCatalog.fromManifestValue(fmtValue); + if (outputFormat == OutputFormatCatalog.UNKNOWN) { + diagnostics.add(new PackerDiagnostic( + PackerDiagnosticSeverity.ERROR, + PackerDiagnosticCategory.STRUCTURAL, + "Field 'output' must have a valid value.", + manifestPath, + true)); + return null; + } + return outputFormat; + } + private OutputCodecCatalog requiredOutputCodec(JsonNode node, List diagnostics, Path manifestPath) { final String codecValue = requiredText(node, "codec", diagnostics, manifestPath); if (codecValue == null) { @@ -128,7 +143,7 @@ public final class PackerAssetDeclarationParser { diagnostics.add(new PackerDiagnostic( PackerDiagnosticSeverity.ERROR, PackerDiagnosticCategory.STRUCTURAL, - "Field 'codec' must be one of: NONE.", + "Field 'codec' must have a valid value.", manifestPath, true)); return null; 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 87c5151f..0945b447 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 @@ -1,34 +1,13 @@ package p.packer.services; -import p.packer.messages.PackerOperationStatus; -import p.packer.messages.PackerProjectContext; -import p.packer.messages.assets.AssetFamilyCatalog; -import p.packer.messages.AssetReference; -import p.packer.messages.assets.OutputCodecCatalog; -import p.packer.messages.assets.PackerAssetState; -import p.packer.messages.assets.PackerBuildParticipation; +import p.packer.messages.*; +import p.packer.messages.assets.*; import p.packer.messages.diagnostics.PackerDiagnosticCategory; import p.packer.messages.diagnostics.PackerDiagnosticSeverity; -import p.packer.messages.GetAssetDetailsRequest; -import p.packer.messages.GetAssetDetailsResult; -import p.packer.models.PackerAssetDeclaration; -import p.packer.models.PackerAssetDeclarationParseResult; -import p.packer.models.PackerAssetDetails; -import p.packer.models.PackerAssetIdentity; -import p.packer.models.PackerAssetSummary; -import p.packer.models.PackerDiagnostic; -import p.packer.models.PackerRegistryEntry; -import p.packer.models.PackerResolvedAssetReference; -import p.packer.models.PackerRuntimeAsset; -import p.packer.models.PackerRuntimeSnapshot; +import p.packer.models.*; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; +import java.util.*; public final class PackerAssetDetailsService { private final PackerRuntimeRegistry runtimeRegistry; @@ -126,7 +105,7 @@ public final class PackerAssetDetailsService { true); final PackerAssetDetails details = new PackerAssetDetails( summary, - "unknown", + OutputFormatCatalog.UNKNOWN, OutputCodecCatalog.UNKNOWN, List.of(OutputCodecCatalog.NONE), Map.of(OutputCodecCatalog.NONE, List.of()), diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetReferenceResolver.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetReferenceResolver.java index a2ac0d0f..b7024d2c 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetReferenceResolver.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerAssetReferenceResolver.java @@ -4,11 +4,7 @@ import p.packer.messages.AssetReference; import p.packer.messages.PackerProjectContext; import p.packer.messages.diagnostics.PackerDiagnosticCategory; import p.packer.messages.diagnostics.PackerDiagnosticSeverity; -import p.packer.models.PackerDiagnostic; -import p.packer.models.PackerRegistryEntry; -import p.packer.models.PackerResolvedAssetReference; -import p.packer.models.PackerRuntimeAsset; -import p.packer.models.PackerRuntimeSnapshot; +import p.packer.models.*; import java.nio.file.Path; import java.util.List; diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerOperationEventEmitter.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerOperationEventEmitter.java index 2505e069..065500b9 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerOperationEventEmitter.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerOperationEventEmitter.java @@ -1,10 +1,10 @@ package p.packer.services; -import p.packer.messages.PackerProjectContext; import p.packer.events.PackerEvent; import p.packer.events.PackerEventKind; import p.packer.events.PackerEventSink; import p.packer.events.PackerProgress; +import p.packer.messages.PackerProjectContext; import java.time.Instant; import java.util.List; diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerOutputContractCatalog.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerOutputContractCatalog.java index c4c45ba5..d632607e 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerOutputContractCatalog.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerOutputContractCatalog.java @@ -3,18 +3,14 @@ package p.packer.services; import p.packer.messages.assets.OutputCodecCatalog; import p.packer.messages.assets.OutputFormatCatalog; import p.packer.models.PackerCodecConfigurationField; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; -import java.util.Set; + +import java.util.*; final class PackerOutputContractCatalog { private PackerOutputContractCatalog() { } - static OutputContractDefinition definitionFor(String outputFormat, OutputCodecCatalog selectedCodec) { + static OutputContractDefinition definitionFor(OutputFormatCatalog outputFormat, OutputCodecCatalog selectedCodec) { final List availableCodecs = availableCodecsFor(outputFormat, selectedCodec); return new OutputContractDefinition( availableCodecs, @@ -25,13 +21,12 @@ final class PackerOutputContractCatalog { java.util.LinkedHashMap::new))); } - static List availableCodecsFor(String outputFormat, OutputCodecCatalog selectedCodec) { + static List availableCodecsFor(OutputFormatCatalog outputFormat, OutputCodecCatalog selectedCodec) { final Set codecs = new LinkedHashSet<>(); - final OutputFormatCatalog formatCatalog = OutputFormatCatalog.fromManifestValue(outputFormat); - if (formatCatalog != OutputFormatCatalog.UNKNOWN) { - codecs.addAll(formatCatalog.availableCodecs()); + if (outputFormat != OutputFormatCatalog.UNKNOWN) { + codecs.addAll(outputFormat.availableCodecs()); } else { - final String normalizedFormat = Objects.requireNonNullElse(outputFormat, "").trim().toUpperCase(Locale.ROOT); + final String normalizedFormat = outputFormat.manifestValue().trim().toUpperCase(Locale.ROOT); if (normalizedFormat.startsWith("TILES/") || normalizedFormat.startsWith("PALETTE/") || normalizedFormat.startsWith("SOUND/") @@ -51,7 +46,7 @@ final class PackerOutputContractCatalog { return List.copyOf(codecs); } - private static List fieldsFor(String outputFormat, OutputCodecCatalog codec) { + private static List fieldsFor(OutputFormatCatalog outputFormat, OutputCodecCatalog codec) { return List.of(); } diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerProjectWriteCoordinator.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerProjectWriteCoordinator.java index 73d06d6a..524f0e81 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerProjectWriteCoordinator.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerProjectWriteCoordinator.java @@ -5,15 +5,7 @@ import p.packer.messages.PackerProjectContext; import java.io.Closeable; import java.nio.file.Path; import java.util.Objects; -import java.util.concurrent.Callable; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; public final class PackerProjectWriteCoordinator implements Closeable { diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerReadMessageMapper.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerReadMessageMapper.java index 8f920dc9..83054b5a 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerReadMessageMapper.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerReadMessageMapper.java @@ -1,18 +1,8 @@ package p.packer.services; -import p.packer.dtos.PackerAssetDetailsDTO; -import p.packer.dtos.PackerAssetActionAvailabilityDTO; -import p.packer.dtos.PackerAssetIdentityDTO; -import p.packer.dtos.PackerAssetSummaryDTO; -import p.packer.dtos.PackerCodecConfigurationFieldDTO; -import p.packer.dtos.PackerDiagnosticDTO; +import p.packer.dtos.*; import p.packer.messages.assets.OutputCodecCatalog; -import p.packer.models.PackerAssetActionAvailability; -import p.packer.models.PackerAssetDetails; -import p.packer.models.PackerAssetIdentity; -import p.packer.models.PackerAssetSummary; -import p.packer.models.PackerCodecConfigurationField; -import p.packer.models.PackerDiagnostic; +import p.packer.models.*; import java.util.List; import java.util.Map; 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 430943c2..e20c8142 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 @@ -1,7 +1,7 @@ package p.packer.services; -import p.packer.messages.PackerProjectContext; import p.packer.messages.InitWorkspaceRequest; +import p.packer.messages.PackerProjectContext; import p.packer.models.PackerRegistryEntry; import p.packer.models.PackerRegistryState; import p.packer.models.PackerRuntimeAsset; @@ -10,12 +10,7 @@ import p.packer.models.PackerRuntimeSnapshot; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimePatchService.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimePatchService.java index 4ec02dbd..c100e7a8 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimePatchService.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimePatchService.java @@ -1,17 +1,9 @@ package p.packer.services; -import p.packer.models.PackerAssetDeclarationParseResult; -import p.packer.models.PackerRegistryEntry; -import p.packer.models.PackerRegistryState; -import p.packer.models.PackerRuntimeAsset; -import p.packer.models.PackerRuntimeSnapshot; +import p.packer.models.*; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; public final class PackerRuntimePatchService { private final PackerAssetDeclarationParser declarationParser; @@ -81,7 +73,7 @@ public final class PackerRuntimePatchService { PackerRuntimeSnapshot snapshot, long generation, PackerRegistryState updatedRegistry, - java.util.Optional updatedRegistryEntry, + Optional updatedRegistryEntry, Path sourceRoot, Path targetRoot, Path targetManifestPath) { @@ -106,4 +98,36 @@ public final class PackerRuntimePatchService { updatedAssets.sort(Comparator.comparing(asset -> asset.assetRoot().toString(), String.CASE_INSENSITIVE_ORDER)); return new PackerRuntimeSnapshot(generation, updatedRegistry, updatedAssets); } + + public PackerRuntimeSnapshot afterUpdateAssetContract( + PackerRuntimeSnapshot snapshot, + long generation, + Path assetRoot, + Path manifestPath, + Optional registryEntry) { + final PackerAssetDeclarationParseResult parsed = declarationParser.parse(manifestPath); + final List updatedAssets = new ArrayList<>(); + boolean patched = false; + for (PackerRuntimeAsset asset : snapshot.assets()) { + if (asset.assetRoot().equals(assetRoot.toAbsolutePath().normalize())) { + updatedAssets.add(new PackerRuntimeAsset( + asset.assetRoot(), + asset.manifestPath(), + asset.registryEntry(), + parsed)); + patched = true; + } else { + updatedAssets.add(asset); + } + } + if (!patched) { + updatedAssets.add(new PackerRuntimeAsset( + assetRoot, + manifestPath, + registryEntry, + parsed)); + updatedAssets.sort(Comparator.comparing(asset -> asset.assetRoot().toString(), String.CASE_INSENSITIVE_ORDER)); + } + return new PackerRuntimeSnapshot(generation, snapshot.registry(), updatedAssets); + } } diff --git a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimeRegistry.java b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimeRegistry.java index 671d6b81..83324874 100644 --- a/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimeRegistry.java +++ b/prometeu-packer/prometeu-packer-v1/src/main/java/p/packer/services/PackerRuntimeRegistry.java @@ -4,12 +4,12 @@ import p.packer.messages.PackerProjectContext; import p.packer.models.PackerRuntimeSnapshot; import java.nio.file.Path; -import java.util.function.BiFunction; import java.util.Objects; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicLong; +import java.util.function.BiFunction; public final class PackerRuntimeRegistry { private final PackerRuntimeSnapshotLoader loader; 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 44b66be6..37ee142f 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 @@ -1,9 +1,9 @@ package p.packer.services; -import p.packer.messages.PackerOperationStatus; -import p.packer.messages.PackerProjectContext; import p.packer.messages.InitWorkspaceRequest; import p.packer.messages.InitWorkspaceResult; +import p.packer.messages.PackerOperationStatus; +import p.packer.messages.PackerProjectContext; import p.packer.models.PackerRegistryEntry; import p.packer.models.PackerRegistryState; 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 01bbfe5c..4d6d1342 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 @@ -1,29 +1,12 @@ 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.PackerOperationStatus; -import p.packer.messages.PackerProjectContext; -import p.packer.messages.assets.AssetFamilyCatalog; -import p.packer.messages.assets.OutputCodecCatalog; -import p.packer.messages.assets.OutputFormatCatalog; -import p.packer.messages.AssetReference; -import p.packer.messages.assets.PackerBuildParticipation; -import p.packer.messages.assets.PackerAssetState; import p.packer.events.PackerEvent; import p.packer.events.PackerEventKind; -import p.packer.messages.CreateAssetRequest; -import p.packer.messages.CreateAssetResult; -import p.packer.messages.DeleteAssetRequest; -import p.packer.messages.DeleteAssetResult; -import p.packer.messages.GetAssetActionsRequest; -import p.packer.messages.GetAssetDetailsRequest; -import p.packer.messages.ListAssetsRequest; -import p.packer.messages.MoveAssetRequest; -import p.packer.messages.MoveAssetResult; -import p.packer.messages.RegisterAssetRequest; -import p.packer.messages.RegisterAssetResult; -import p.packer.messages.assets.AssetAction; +import p.packer.messages.*; +import p.packer.messages.assets.*; import p.packer.testing.PackerFixtureLocator; import java.nio.file.Files; @@ -31,6 +14,7 @@ import java.nio.file.Path; import java.util.Comparator; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.Executors; import java.util.concurrent.Future; @@ -38,6 +22,8 @@ import java.util.concurrent.Future; import static org.junit.jupiter.api.Assertions.*; final class FileSystemPackerWorkspaceServiceTest { + private static final ObjectMapper MAPPER = new ObjectMapper(); + @TempDir Path tempDir; @@ -193,6 +179,77 @@ final class FileSystemPackerWorkspaceServiceTest { assertEquals(2, loader.loadCount()); } + @Test + void updatesAssetContractManifestAndReturnsSuccess() throws Exception { + final Path projectRoot = copyFixture("workspaces/managed-basic", tempDir.resolve("update-contract-success")); + final FileSystemPackerWorkspaceService service = service(); + + final var result = service.updateAssetContract(new UpdateAssetContractRequest( + project(projectRoot), + AssetReference.forAssetId(1), + false, + OutputCodecCatalog.NONE, + Map.of( + "NONE:packMode", "tight", + "NONE:palette", "mono"))); + + assertTrue(result.success()); + assertNull(result.errorMessage()); + + final Path manifestPath = projectRoot.resolve("assets/ui/atlas/asset.json"); + final var manifest = MAPPER.readTree(manifestPath.toFile()); + assertFalse(manifest.path("preload").path("enabled").asBoolean(true)); + assertEquals("NONE", manifest.path("output").path("codec").asText()); + assertEquals("tight", manifest.path("output").path("codec_configuration").path("packMode").asText()); + assertEquals("mono", manifest.path("output").path("codec_configuration").path("palette").asText()); + } + + @Test + void updateAssetContractPatchesLoadedSnapshotWithoutWholeProjectReload() throws Exception { + final Path projectRoot = copyFixture("workspaces/managed-basic", tempDir.resolve("update-contract-no-reload")); + final CountingLoader loader = countingLoader(); + final FileSystemPackerWorkspaceService service = service(ignored -> { }, loader); + + service.listAssets(new ListAssetsRequest(project(projectRoot))); + assertEquals(1, loader.loadCount()); + + final var updateResult = service.updateAssetContract(new UpdateAssetContractRequest( + project(projectRoot), + AssetReference.forAssetId(1), + false, + OutputCodecCatalog.NONE, + Map.of("NONE:packMode", "tight"))); + + assertTrue(updateResult.success()); + assertEquals(1, loader.loadCount()); + + final var detailsResult = service.getAssetDetails(new GetAssetDetailsRequest( + project(projectRoot), + AssetReference.forAssetId(1))); + assertEquals(PackerOperationStatus.SUCCESS, detailsResult.status()); + assertFalse(detailsResult.details().summary().preloadEnabled()); + assertEquals(OutputCodecCatalog.NONE, detailsResult.details().outputCodec()); + assertEquals(1, loader.loadCount()); + } + + @Test + void returnsFailureWhenAssetManifestIsMissingOnContractUpdate() throws Exception { + final Path projectRoot = copyFixture("workspaces/managed-basic", tempDir.resolve("update-contract-missing-manifest")); + Files.delete(projectRoot.resolve("assets/ui/atlas/asset.json")); + final FileSystemPackerWorkspaceService service = service(); + + final var result = service.updateAssetContract(new UpdateAssetContractRequest( + project(projectRoot), + AssetReference.forAssetId(1), + true, + OutputCodecCatalog.NONE, + Map.of())); + + assertFalse(result.success()); + assertNotNull(result.errorMessage()); + assertTrue(result.errorMessage().contains("asset.json was not found")); + } + @Test void exposesRegisterActionForValidUnregisteredAsset() throws Exception { final Path projectRoot = copyFixture("workspaces/orphan-valid", tempDir.resolve("orphan-actions")); 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 09bc3477..c1c958ae 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 @@ -28,7 +28,7 @@ final class PackerAssetDeclarationParserTest { assertEquals("fixture-uuid-1", result.declaration().assetUuid()); assertEquals("ui_atlas", result.declaration().name()); assertEquals(AssetFamilyCatalog.IMAGE_BANK, result.declaration().assetFamily()); - assertEquals("TILES/indexed_v1", result.declaration().outputFormat()); + assertEquals("TILES/indexed_v1", result.declaration().outputFormat().displayName()); assertEquals(OutputCodecCatalog.NONE, result.declaration().outputCodec()); assertTrue(result.declaration().preloadEnabled()); } 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 89263e5a..d80b90ed 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 @@ -2,13 +2,13 @@ package p.packer.services; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import p.packer.messages.AssetReference; +import p.packer.messages.GetAssetDetailsRequest; import p.packer.messages.PackerOperationStatus; import p.packer.messages.PackerProjectContext; -import p.packer.messages.AssetReference; -import p.packer.messages.assets.PackerBuildParticipation; import p.packer.messages.assets.OutputCodecCatalog; import p.packer.messages.assets.PackerAssetState; -import p.packer.messages.GetAssetDetailsRequest; +import p.packer.messages.assets.PackerBuildParticipation; import p.packer.testing.PackerFixtureLocator; import java.nio.file.Files; @@ -34,7 +34,7 @@ final class PackerAssetDetailsServiceTest { assertEquals(PackerBuildParticipation.INCLUDED, result.details().summary().buildParticipation()); assertEquals("fixture-uuid-1", result.details().summary().identity().assetUuid()); assertEquals("ui_atlas", result.details().summary().identity().assetName()); - assertEquals("TILES/indexed_v1", result.details().outputFormat()); + assertEquals("TILES/indexed_v1", result.details().outputFormat().displayName()); assertEquals(List.of(OutputCodecCatalog.NONE), result.details().availableOutputCodecs()); assertEquals(List.of(), result.details().codecConfigurationFieldsByCodec().get(OutputCodecCatalog.NONE)); assertTrue(result.diagnostics().isEmpty()); diff --git a/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerWorkspaceFoundationTest.java b/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerWorkspaceFoundationTest.java index 9d843964..4f2e8f42 100644 --- a/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerWorkspaceFoundationTest.java +++ b/prometeu-packer/prometeu-packer-v1/src/test/java/p/packer/services/PackerWorkspaceFoundationTest.java @@ -2,8 +2,8 @@ package p.packer.services; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import p.packer.messages.PackerProjectContext; import p.packer.messages.InitWorkspaceRequest; +import p.packer.messages.PackerProjectContext; import p.packer.models.PackerRegistryEntry; import p.packer.models.PackerRegistryState; diff --git a/prometeu-studio/src/main/java/p/studio/controls/forms/StudioFormSession.java b/prometeu-studio/src/main/java/p/studio/controls/forms/StudioFormSession.java index a0e866b6..320f626d 100644 --- a/prometeu-studio/src/main/java/p/studio/controls/forms/StudioFormSession.java +++ b/prometeu-studio/src/main/java/p/studio/controls/forms/StudioFormSession.java @@ -55,4 +55,10 @@ public final class StudioFormSession { resetDraft(); mode = StudioFormMode.READ_ONLY; } + + public T apply() { + source = draft; + mode = StudioFormMode.READ_ONLY; + return source; + } } diff --git a/prometeu-studio/src/main/java/p/studio/controls/shell/StudioActivityFeedControl.java b/prometeu-studio/src/main/java/p/studio/controls/shell/StudioActivityFeedControl.java index 45b213b1..3ec2ff52 100644 --- a/prometeu-studio/src/main/java/p/studio/controls/shell/StudioActivityFeedControl.java +++ b/prometeu-studio/src/main/java/p/studio/controls/shell/StudioActivityFeedControl.java @@ -15,11 +15,11 @@ import p.studio.controls.lifecycle.StudioControlLifecycle; import p.studio.controls.lifecycle.StudioControlLifecycleSupport; import p.studio.events.*; import p.studio.projects.ProjectReference; +import p.studio.utilities.events.EventSubscription; +import p.studio.utilities.i18n.I18n; import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceRefreshFailedEvent; import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceRefreshStartedEvent; import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceRefreshedEvent; -import p.studio.utilities.events.EventSubscription; -import p.studio.utilities.i18n.I18n; import java.util.ArrayList; import java.util.List; diff --git a/prometeu-studio/src/main/java/p/studio/projects/KnownProjectsService.java b/prometeu-studio/src/main/java/p/studio/projects/KnownProjectsService.java index 8ee7584a..5c6f7d11 100644 --- a/prometeu-studio/src/main/java/p/studio/projects/KnownProjectsService.java +++ b/prometeu-studio/src/main/java/p/studio/projects/KnownProjectsService.java @@ -5,12 +5,7 @@ import java.io.UncheckedIOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; public final class KnownProjectsService { private final Path storageFile; diff --git a/prometeu-studio/src/main/java/p/studio/window/NewProjectWizard.java b/prometeu-studio/src/main/java/p/studio/window/NewProjectWizard.java index 0f62c10e..ace05bce 100644 --- a/prometeu-studio/src/main/java/p/studio/window/NewProjectWizard.java +++ b/prometeu-studio/src/main/java/p/studio/window/NewProjectWizard.java @@ -15,20 +15,12 @@ import javafx.stage.Modality; import javafx.stage.Stage; import javafx.stage.Window; import p.studio.Container; -import p.studio.projects.ProjectCatalogService; -import p.studio.projects.ProjectCreationRequest; -import p.studio.projects.ProjectLanguageCatalogService; -import p.studio.projects.ProjectLanguageTemplate; -import p.studio.projects.ProjectReference; +import p.studio.projects.*; import p.studio.utilities.i18n.I18n; import java.io.File; import java.nio.file.Path; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.concurrent.atomic.AtomicReference; public final class NewProjectWizard { diff --git a/prometeu-studio/src/main/java/p/studio/window/ProjectLauncherView.java b/prometeu-studio/src/main/java/p/studio/window/ProjectLauncherView.java index 57bb0c3e..1aaced20 100644 --- a/prometeu-studio/src/main/java/p/studio/window/ProjectLauncherView.java +++ b/prometeu-studio/src/main/java/p/studio/window/ProjectLauncherView.java @@ -7,12 +7,8 @@ import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; -import javafx.scene.layout.BorderPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; -import javafx.scene.layout.StackPane; -import javafx.scene.layout.VBox; import javafx.scene.input.MouseButton; +import javafx.scene.layout.*; import javafx.stage.FileChooser; import p.studio.Container; import p.studio.projects.KnownProjectsService; diff --git a/prometeu-studio/src/main/java/p/studio/window/StudioWindowCoordinator.java b/prometeu-studio/src/main/java/p/studio/window/StudioWindowCoordinator.java index e6b86c5b..937db163 100644 --- a/prometeu-studio/src/main/java/p/studio/window/StudioWindowCoordinator.java +++ b/prometeu-studio/src/main/java/p/studio/window/StudioWindowCoordinator.java @@ -6,13 +6,7 @@ import javafx.stage.Stage; import javafx.stage.StageStyle; import p.packer.messages.InitWorkspaceRequest; import p.studio.Container; -import p.studio.events.StudioProjectLoadingCompletedEvent; -import p.studio.events.StudioProjectLoadingFailedEvent; -import p.studio.events.StudioProjectLoadingPhase; -import p.studio.events.StudioProjectLoadingProgressEvent; -import p.studio.events.StudioProjectLoadingStartedEvent; -import p.studio.events.StudioProjectCreatedEvent; -import p.studio.events.StudioProjectOpenedEvent; +import p.studio.events.*; import p.studio.projects.KnownProjectsService; import p.studio.projects.ProjectCatalogService; import p.studio.projects.ProjectReference; diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/AssetLogsPane.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/AssetLogsPane.java index 014d7556..c9fb9719 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/AssetLogsPane.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/AssetLogsPane.java @@ -5,6 +5,7 @@ import p.studio.events.StudioPackerOperationEvent; import p.studio.events.StudioWorkspaceEventBus; import p.studio.utilities.i18n.I18n; import p.studio.utilities.logspane.LogsPane; +import p.studio.workspaces.assets.messages.events.StudioAssetLogEvent; import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceRefreshFailedEvent; import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceRefreshStartedEvent; import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceRefreshedEvent; @@ -29,6 +30,9 @@ public final class AssetLogsPane extends LogsPane implements StudioEventAware { @Override public void registerEventSubscriptions() { + eventBindings.listen(workspaceBus, StudioAssetLogEvent.class).handle(event -> { + appendLine("[" + event.source() + "] " + event.message()); + }); eventBindings.listen(workspaceBus, StudioAssetsWorkspaceRefreshStartedEvent.class).handle(event -> { appendLine("[refresh] Asset scan started."); }); diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsControl.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsControl.java index c5c7b8d6..f714d18f 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsControl.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsControl.java @@ -60,7 +60,7 @@ public final class AssetDetailsControl extends VBox implements StudioEventAware this.projectReference = Objects.requireNonNull(projectReference, "projectReference"); this.workspaceBus = Objects.requireNonNull(workspaceBus, "workspaceBus"); this.summaryControl = new AssetDetailsSummaryControl(projectReference, workspaceBus); - this.contractControl = new AssetDetailsContractControl(workspaceBus); + this.contractControl = new AssetDetailsContractControl(projectReference, workspaceBus); this.actionsSection = createActionsSection(); getStyleClass().add("assets-workspace-pane"); diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsUiSupport.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsUiSupport.java index 254ec735..f40f86b5 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsUiSupport.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsUiSupport.java @@ -9,6 +9,7 @@ import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; import p.packer.messages.assets.AssetAction; import p.packer.messages.assets.AssetFamilyCatalog; +import p.packer.messages.assets.OutputFormatCatalog; import p.studio.Container; import p.studio.projects.ProjectReference; import p.studio.utilities.i18n.I18n; @@ -44,6 +45,13 @@ public final class AssetDetailsUiSupport { return createKeyValueRow(key, valueLabel); } + public static Node createKeyValueRow(String key, OutputFormatCatalog outputFormat) { + final Label valueLabel = new Label(outputFormat.displayName()); + valueLabel.getStyleClass().add("assets-details-value"); + valueLabel.setWrapText(true); + return createKeyValueRow(key, valueLabel); + } + public static Node createKeyValueRow(String key, Node valueNode) { final HBox row = new HBox(12); row.setAlignment(Pos.TOP_LEFT); diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetListPackerMappings.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetListPackerMappings.java index fa6b4657..3e77d669 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetListPackerMappings.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetListPackerMappings.java @@ -1,8 +1,8 @@ package p.studio.workspaces.assets.details; import p.packer.dtos.PackerAssetSummaryDTO; -import p.studio.workspaces.assets.messages.AssetWorkspaceAssetSummary; import p.studio.workspaces.assets.messages.AssetWorkspaceAssetState; +import p.studio.workspaces.assets.messages.AssetWorkspaceAssetSummary; import p.studio.workspaces.assets.messages.AssetWorkspaceBuildParticipation; public final class AssetListPackerMappings { diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetContractDraft.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetContractDraft.java index 4df6abc2..fb75a2e6 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetContractDraft.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetContractDraft.java @@ -2,6 +2,7 @@ package p.studio.workspaces.assets.details.contract; import p.packer.messages.AssetReference; import p.packer.messages.assets.OutputCodecCatalog; +import p.packer.messages.assets.OutputFormatCatalog; import p.studio.workspaces.assets.messages.AssetWorkspaceAssetDetails; import java.util.LinkedHashMap; @@ -11,13 +12,13 @@ import java.util.Objects; public record AssetContractDraft( AssetReference assetReference, boolean preload, - String bank, + OutputFormatCatalog bank, OutputCodecCatalog selectedCodec, Map codecFieldValues) { public AssetContractDraft { Objects.requireNonNull(assetReference, "assetReference"); - bank = Objects.requireNonNullElse(bank, "unknown"); + bank = Objects.requireNonNullElse(bank, OutputFormatCatalog.UNKNOWN); selectedCodec = Objects.requireNonNullElse(selectedCodec, OutputCodecCatalog.UNKNOWN); codecFieldValues = Map.copyOf(Objects.requireNonNull(codecFieldValues, "codecFieldValues")); } diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetDetailsContractControl.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetDetailsContractControl.java index 1853f62c..ff30b394 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetDetailsContractControl.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetDetailsContractControl.java @@ -1,17 +1,15 @@ package p.studio.workspaces.assets.details.contract; +import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.scene.Node; -import javafx.scene.control.CheckBox; -import javafx.scene.control.ComboBox; -import javafx.scene.control.Label; -import javafx.scene.control.ScrollPane; -import javafx.scene.control.TextField; +import javafx.scene.control.*; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; -import p.packer.messages.assets.OutputCodecCatalog; import p.packer.dtos.PackerCodecConfigurationFieldDTO; +import p.packer.messages.UpdateAssetContractRequest; +import p.packer.messages.assets.OutputCodecCatalog; import p.studio.Container; import p.studio.controls.forms.StudioFormActionBar; import p.studio.controls.forms.StudioFormMode; @@ -19,16 +17,20 @@ import p.studio.controls.forms.StudioFormSession; import p.studio.controls.lifecycle.StudioControlLifecycle; import p.studio.controls.lifecycle.StudioControlLifecycleSupport; import p.studio.events.StudioWorkspaceEventBus; +import p.studio.projects.ProjectReference; import p.studio.utilities.i18n.I18n; import p.studio.workspaces.assets.details.AssetDetailsUiSupport; import p.studio.workspaces.assets.messages.AssetWorkspaceAssetDetails; import p.studio.workspaces.assets.messages.AssetWorkspaceDetailsViewState; +import p.studio.workspaces.assets.messages.events.StudioAssetLogEvent; import p.studio.workspaces.assets.messages.events.StudioAssetsDetailsViewStateChangedEvent; +import p.studio.workspaces.assets.messages.events.StudioAssetsRefreshRequestedEvent; import p.studio.workspaces.framework.StudioSubscriptionBag; import java.util.Objects; public final class AssetDetailsContractControl extends VBox implements StudioControlLifecycle { + private final ProjectReference projectReference; private final StudioWorkspaceEventBus workspaceBus; private final StudioSubscriptionBag subscriptions = new StudioSubscriptionBag(); private final StudioFormActionBar actionBar = new StudioFormActionBar( @@ -40,8 +42,9 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon private AssetWorkspaceDetailsViewState viewState; private StudioFormSession formSession; - public AssetDetailsContractControl(StudioWorkspaceEventBus workspaceBus) { + public AssetDetailsContractControl(ProjectReference projectReference, StudioWorkspaceEventBus workspaceBus) { StudioControlLifecycleSupport.install(this, this); + this.projectReference = Objects.requireNonNull(projectReference, "projectReference"); this.workspaceBus = Objects.requireNonNull(workspaceBus, "workspaceBus"); } @@ -334,7 +337,34 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon if (formSession == null) { return; } - render(); + final var draft = formSession.draft(); + Container.backgroundTasks().submit(() -> { + final var request = new UpdateAssetContractRequest( + projectReference.toPackerProjectContext(), + draft.assetReference(), + draft.preload(), + draft.selectedCodec(), + draft.codecFieldValues()); + try { + final var response = Container.packer().workspaceService().updateAssetContract(request); + if (response.success()) { + Platform.runLater(() -> { + final var r = formSession.apply(); + workspaceBus.publish(new StudioAssetLogEvent("ASSET DETAILS CONTRACT", "Asset contract updated")); + workspaceBus.publish(new StudioAssetsRefreshRequestedEvent(r.assetReference())); + render(); + }); + } else { + Platform.runLater(() -> { + workspaceBus.publish(new StudioAssetLogEvent("ASSET DETAILS CONTRACT", response.errorMessage())); + cancelEdit(); + }); + } + } catch (Exception e) { + workspaceBus.publish(new StudioAssetLogEvent("ASSET DETAILS CONTRACT", e.getMessage())); + cancelEdit(); + } + }); } private void resetDraft() { diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/summary/AssetDetailsSummaryControl.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/summary/AssetDetailsSummaryControl.java index 89a4bdbd..285b9498 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/summary/AssetDetailsSummaryControl.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/summary/AssetDetailsSummaryControl.java @@ -7,10 +7,10 @@ import p.studio.controls.lifecycle.StudioControlLifecycleSupport; import p.studio.events.StudioWorkspaceEventBus; import p.studio.projects.ProjectReference; import p.studio.utilities.i18n.I18n; -import p.studio.workspaces.assets.messages.AssetWorkspaceAssetSummary; import p.studio.workspaces.assets.details.AssetDetailsUiSupport; -import p.studio.workspaces.assets.messages.events.StudioAssetsDetailsViewStateChangedEvent; +import p.studio.workspaces.assets.messages.AssetWorkspaceAssetSummary; import p.studio.workspaces.assets.messages.AssetWorkspaceDetailsViewState; +import p.studio.workspaces.assets.messages.events.StudioAssetsDetailsViewStateChangedEvent; import p.studio.workspaces.framework.StudioSubscriptionBag; import java.util.Objects; diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListControl.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListControl.java index 8b3d829f..01f7d08e 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListControl.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListControl.java @@ -10,25 +10,17 @@ import javafx.scene.control.ToggleButton; import javafx.scene.layout.FlowPane; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; -import p.packer.messages.AssetReference; import p.packer.dtos.PackerAssetSummaryDTO; +import p.packer.messages.AssetReference; import p.packer.messages.ListAssetsRequest; import p.studio.Container; import p.studio.events.StudioWorkspaceEventBus; import p.studio.projects.ProjectReference; import p.studio.utilities.i18n.I18n; -import p.studio.workspaces.assets.messages.AssetWorkspaceAssetSummary; import p.studio.workspaces.assets.AssetWorkspaceState; import p.studio.workspaces.assets.details.AssetListPackerMappings; -import p.studio.workspaces.assets.messages.AssetListGroup; -import p.studio.workspaces.assets.messages.AssetListProjection; -import p.studio.workspaces.assets.messages.AssetListViewState; -import p.studio.workspaces.assets.messages.AssetWorkspaceStatus; -import p.studio.workspaces.assets.messages.events.StudioAssetsNavigatorViewStateChangedEvent; -import p.studio.workspaces.assets.messages.events.StudioAssetsRefreshRequestedEvent; -import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceRefreshFailedEvent; -import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceRefreshStartedEvent; -import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceRefreshedEvent; +import p.studio.workspaces.assets.messages.*; +import p.studio.workspaces.assets.messages.events.*; import p.studio.workspaces.framework.StudioEventAware; import p.studio.workspaces.framework.StudioEventBindings; diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListItemControl.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListItemControl.java index de72267a..3cfeb71a 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListItemControl.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListItemControl.java @@ -8,13 +8,13 @@ import javafx.scene.layout.Region; import javafx.scene.layout.VBox; import p.packer.messages.assets.AssetFamilyCatalog; import p.studio.Container; -import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceSelectionRequestedEvent; import p.studio.events.StudioWorkspaceEventBus; import p.studio.projects.ProjectReference; import p.studio.utilities.i18n.I18n; import p.studio.workspaces.assets.messages.AssetWorkspaceAssetState; import p.studio.workspaces.assets.messages.AssetWorkspaceAssetSummary; import p.studio.workspaces.assets.messages.AssetWorkspaceBuildParticipation; +import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceSelectionRequestedEvent; import java.nio.file.Path; import java.util.Objects; diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListProjectionBuilder.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListProjectionBuilder.java index f9873d91..85006a6f 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListProjectionBuilder.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/list/AssetListProjectionBuilder.java @@ -1,9 +1,9 @@ package p.studio.workspaces.assets.list; -import p.studio.workspaces.assets.messages.AssetWorkspaceAssetState; -import p.studio.workspaces.assets.messages.AssetWorkspaceAssetSummary; import p.studio.workspaces.assets.messages.AssetListGroup; import p.studio.workspaces.assets.messages.AssetListProjection; +import p.studio.workspaces.assets.messages.AssetWorkspaceAssetState; +import p.studio.workspaces.assets.messages.AssetWorkspaceAssetSummary; import java.nio.file.Path; import java.util.*; diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetListViewState.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetListViewState.java index 9370bc36..c90c056f 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetListViewState.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetListViewState.java @@ -1,6 +1,7 @@ package p.studio.workspaces.assets.messages; import p.studio.workspaces.assets.AssetWorkspaceState; + import java.util.Objects; public record AssetListViewState( diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetWorkspaceAssetDetails.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetWorkspaceAssetDetails.java index e8867a0f..777c320e 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetWorkspaceAssetDetails.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetWorkspaceAssetDetails.java @@ -2,6 +2,7 @@ package p.studio.workspaces.assets.messages; import p.packer.dtos.PackerCodecConfigurationFieldDTO; import p.packer.messages.assets.OutputCodecCatalog; +import p.packer.messages.assets.OutputFormatCatalog; import java.nio.file.Path; import java.util.List; @@ -11,7 +12,7 @@ import java.util.Objects; public record AssetWorkspaceAssetDetails( AssetWorkspaceAssetSummary summary, List actions, - String outputFormat, + OutputFormatCatalog outputFormat, OutputCodecCatalog outputCodec, List availableOutputCodecs, Map> codecConfigurationFieldsByCodec, @@ -20,7 +21,7 @@ public record AssetWorkspaceAssetDetails( public AssetWorkspaceAssetDetails { Objects.requireNonNull(summary, "summary"); actions = List.copyOf(Objects.requireNonNull(actions, "actions")); - outputFormat = Objects.requireNonNullElse(outputFormat, "unknown"); + outputFormat = Objects.requireNonNullElse(outputFormat, OutputFormatCatalog.UNKNOWN); outputCodec = Objects.requireNonNullElse(outputCodec, OutputCodecCatalog.UNKNOWN); availableOutputCodecs = List.copyOf(Objects.requireNonNull(availableOutputCodecs, "availableOutputCodecs")); codecConfigurationFieldsByCodec = Map.copyOf(Objects.requireNonNull(codecConfigurationFieldsByCodec, "codecConfigurationFieldsByCodec")); diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetWorkspaceAssetSummary.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetWorkspaceAssetSummary.java index fa3c1963..af445af7 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetWorkspaceAssetSummary.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/AssetWorkspaceAssetSummary.java @@ -1,7 +1,7 @@ package p.studio.workspaces.assets.messages; -import p.packer.messages.assets.AssetFamilyCatalog; import p.packer.messages.AssetReference; +import p.packer.messages.assets.AssetFamilyCatalog; import java.nio.file.Path; import java.util.Objects; diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/events/StudioAssetLogEvent.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/events/StudioAssetLogEvent.java new file mode 100644 index 00000000..5713e925 --- /dev/null +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/events/StudioAssetLogEvent.java @@ -0,0 +1,8 @@ +package p.studio.workspaces.assets.messages.events; + +import p.studio.events.StudioEvent; + +public record StudioAssetLogEvent( + String source, + String message) implements StudioEvent { +} diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/wizards/AddAssetWizard.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/wizards/AddAssetWizard.java index 623cec63..f32b2b82 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/wizards/AddAssetWizard.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/wizards/AddAssetWizard.java @@ -5,11 +5,7 @@ import javafx.collections.FXCollections; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; -import javafx.scene.control.Button; -import javafx.scene.control.CheckBox; -import javafx.scene.control.ComboBox; -import javafx.scene.control.Label; -import javafx.scene.control.TextField; +import javafx.scene.control.*; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; @@ -17,13 +13,13 @@ import javafx.stage.DirectoryChooser; import javafx.stage.Modality; import javafx.stage.Stage; import javafx.stage.Window; -import p.packer.messages.PackerOperationStatus; -import p.packer.messages.assets.AssetFamilyCatalog; import p.packer.messages.AssetReference; -import p.packer.messages.assets.OutputCodecCatalog; -import p.packer.messages.assets.OutputFormatCatalog; import p.packer.messages.CreateAssetRequest; import p.packer.messages.CreateAssetResult; +import p.packer.messages.PackerOperationStatus; +import p.packer.messages.assets.AssetFamilyCatalog; +import p.packer.messages.assets.OutputCodecCatalog; +import p.packer.messages.assets.OutputFormatCatalog; import p.studio.Container; import p.studio.projects.ProjectReference; import p.studio.utilities.i18n.I18n; diff --git a/prometeu-studio/src/test/java/p/studio/controls/forms/StudioFormSessionTest.java b/prometeu-studio/src/test/java/p/studio/controls/forms/StudioFormSessionTest.java index eb330b6f..3216181f 100644 --- a/prometeu-studio/src/test/java/p/studio/controls/forms/StudioFormSessionTest.java +++ b/prometeu-studio/src/test/java/p/studio/controls/forms/StudioFormSessionTest.java @@ -2,9 +2,7 @@ package p.studio.controls.forms; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; final class StudioFormSessionTest { @Test diff --git a/prometeu-studio/src/test/java/p/studio/controls/shell/StudioActivityEventMapperTest.java b/prometeu-studio/src/test/java/p/studio/controls/shell/StudioActivityEventMapperTest.java index 4de80534..2b2a682f 100644 --- a/prometeu-studio/src/test/java/p/studio/controls/shell/StudioActivityEventMapperTest.java +++ b/prometeu-studio/src/test/java/p/studio/controls/shell/StudioActivityEventMapperTest.java @@ -3,9 +3,9 @@ package p.studio.controls.shell; import org.junit.jupiter.api.Test; import p.packer.events.PackerEventKind; import p.studio.events.StudioPackerOperationEvent; +import p.studio.events.StudioProjectOpenedEvent; import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceRefreshFailedEvent; import p.studio.workspaces.assets.messages.events.StudioAssetsWorkspaceRefreshedEvent; -import p.studio.events.StudioProjectOpenedEvent; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/prometeu-studio/src/test/java/p/studio/projects/ProjectCatalogServiceTest.java b/prometeu-studio/src/test/java/p/studio/projects/ProjectCatalogServiceTest.java index d6076dec..6a244515 100644 --- a/prometeu-studio/src/test/java/p/studio/projects/ProjectCatalogServiceTest.java +++ b/prometeu-studio/src/test/java/p/studio/projects/ProjectCatalogServiceTest.java @@ -6,9 +6,7 @@ import org.junit.jupiter.api.io.TempDir; import java.nio.file.Files; import java.nio.file.Path; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; final class ProjectCatalogServiceTest { @TempDir diff --git a/prometeu-studio/src/test/java/p/studio/workspaces/framework/StudioSubscriptionBagTest.java b/prometeu-studio/src/test/java/p/studio/workspaces/framework/StudioSubscriptionBagTest.java index c07ab103..639cca84 100644 --- a/prometeu-studio/src/test/java/p/studio/workspaces/framework/StudioSubscriptionBagTest.java +++ b/prometeu-studio/src/test/java/p/studio/workspaces/framework/StudioSubscriptionBagTest.java @@ -1,7 +1,6 @@ package p.studio.workspaces.framework; import org.junit.jupiter.api.Test; -import p.studio.utilities.events.EventSubscription; import java.util.concurrent.atomic.AtomicInteger; diff --git a/test-projects/main/.studio/activities.json b/test-projects/main/.studio/activities.json index cfab2b2c..b4d264dc 100644 --- a/test-projects/main/.studio/activities.json +++ b/test-projects/main/.studio/activities.json @@ -48,6 +48,656 @@ "message" : "Asset scan started", "severity" : "INFO", "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "8 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: test", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false }, { "source" : "Assets", "message" : "Asset moved: bbb2 -> recovered/bbb2", @@ -1848,654 +2498,4 @@ "message" : "Discovered asset: ui_atlas", "severity" : "INFO", "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "7 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "7 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset deleted: recovered/new asset", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Novo Asset", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Novo Asset", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Novo Asset", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Novo Asset", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Novo Asset", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset registered: recovered/one-more-atlas", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Novo Asset", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Novo Asset", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset registered: recovered/atlas2", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Novo Asset", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Novo Asset", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Novo Asset", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Novo Asset", - "severity" : "INFO", - "sticky" : false } ] \ No newline at end of file diff --git a/test-projects/main/assets/bigode/asset.json b/test-projects/main/assets/bigode/asset.json index 300684b2..b89a3c2d 100644 --- a/test-projects/main/assets/bigode/asset.json +++ b/test-projects/main/assets/bigode/asset.json @@ -6,9 +6,10 @@ "inputs" : { }, "output" : { "format" : "TILES/indexed_v1", - "codec" : "NONE" + "codec" : "NONE", + "codec_configuration" : { } }, "preload" : { - "enabled" : true + "enabled" : false } -} +} \ No newline at end of file diff --git a/test-projects/main/assets/recovered/atlas2/asset.json b/test-projects/main/assets/recovered/atlas2/asset.json index 5320540b..d0afcdb9 100644 --- a/test-projects/main/assets/recovered/atlas2/asset.json +++ b/test-projects/main/assets/recovered/atlas2/asset.json @@ -1,9 +1,17 @@ { - "schema_version": 1, - "asset_uuid": "b15b319f-5cab-4254-93ea-d83f4742d204", - "name": "ui_atlas", - "type": "image_bank", - "inputs": { "sprites": ["sprites/confirm.png"] }, - "output": { "format": "TILES/indexed_v1", "codec": "NONE" }, - "preload": { "enabled": true } -} + "schema_version" : 1, + "asset_uuid" : "b15b319f-5cab-4254-93ea-d83f4742d204", + "name" : "ui_atlas", + "type" : "image_bank", + "inputs" : { + "sprites" : [ "sprites/confirm.png" ] + }, + "output" : { + "format" : "TILES/indexed_v1", + "codec" : "NONE", + "codec_configuration" : { } + }, + "preload" : { + "enabled" : false + } +} \ No newline at end of file diff --git a/test-projects/main/assets/ui/sound/asset.json b/test-projects/main/assets/ui/sound/asset.json index 3f5e2332..816db50b 100644 --- a/test-projects/main/assets/ui/sound/asset.json +++ b/test-projects/main/assets/ui/sound/asset.json @@ -6,9 +6,10 @@ "inputs" : { }, "output" : { "format" : "AUDIO/pcm_v1", - "codec" : "NONE" + "codec" : "NONE", + "codec_configuration" : { } }, "preload" : { - "enabled" : true + "enabled" : false } -} +} \ No newline at end of file