From b60a0a7adffea52e31664e046608aae293d0da46 Mon Sep 17 00:00:00 2001 From: IvanBorislavovDimitrov Date: Mon, 18 Nov 2024 16:08:40 +0200 Subject: [PATCH] Refactoring and code cleanup --- .../services/ObjectStoreFileStorage.java | 7 +- .../src/main/java/module-info.java | 3 +- ...ServiceCreateUpdateServiceActionsStep.java | 20 +++-- .../process/steps/ProcessMtaArchiveStep.java | 26 +++--- .../util/ApplicationDigestCalculator.java | 20 ++--- .../process/util/ApplicationZipBuilder.java | 28 +++---- .../process/util/ArchiveEntryExtractor.java | 84 ++++++++++++------- .../util/ServiceBindingParametersGetter.java | 14 ++-- .../process/util/UtcAdjustedZipEntry.java | 19 ----- ...iceCreateUpdateServiceActionsStepTest.java | 6 +- .../steps/ProcessMtaArchiveStepTest.java | 2 +- .../util/ApplicationDigestCalculatorTest.java | 4 +- .../util/ArchiveEntryExtractorTest.java | 10 +-- .../ServiceBindingParametersGetterTest.java | 2 +- 14 files changed, 127 insertions(+), 118 deletions(-) delete mode 100644 multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/UtcAdjustedZipEntry.java diff --git a/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/ObjectStoreFileStorage.java b/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/ObjectStoreFileStorage.java index c5a1ddcafe..977b5968df 100644 --- a/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/ObjectStoreFileStorage.java +++ b/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/ObjectStoreFileStorage.java @@ -38,7 +38,7 @@ public class ObjectStoreFileStorage implements FileStorage { private static final Logger LOGGER = LoggerFactory.getLogger(ObjectStoreFileStorage.class); - + private static final int MAX_RETRIES_COUNT = 3; private static final long RETRY_BASE_WAIT_TIME_IN_MILLIS = 5000L; private final BlobStore blobStore; @@ -116,7 +116,8 @@ public T processArchiveEntryContent(FileContentToProcess fileContentToProces throws FileStorageException { FileEntry fileEntry = createFileEntry(fileContentToProcess.getSpaceGuid(), fileContentToProcess.getGuid()); try { - Payload payload = getBlobPayloadWithOffset(fileEntry, fileContentToProcess.getStartOffset(), fileContentToProcess.getEndOffset()); + Payload payload = getBlobPayloadWithOffset(fileEntry, fileContentToProcess.getStartOffset(), + fileContentToProcess.getEndOffset()); return processContent(fileContentProcessor, payload); } catch (Exception e) { throw new FileStorageException(e); @@ -124,7 +125,7 @@ public T processArchiveEntryContent(FileContentToProcess fileContentToProces } private Payload getBlobPayloadWithOffset(FileEntry fileEntry, long startOffset, long endOffset) throws FileStorageException { - Blob blob = getBlobWithRetriesWithOffset(fileEntry, 3, startOffset, endOffset); + Blob blob = getBlobWithRetriesWithOffset(fileEntry, MAX_RETRIES_COUNT, startOffset, endOffset); if (blob == null) { throw new FileStorageException(MessageFormat.format(Messages.FILE_WITH_ID_AND_SPACE_DOES_NOT_EXIST, fileEntry.getId(), fileEntry.getSpace())); diff --git a/multiapps-controller-process/src/main/java/module-info.java b/multiapps-controller-process/src/main/java/module-info.java index c923159106..cea4682659 100644 --- a/multiapps-controller-process/src/main/java/module-info.java +++ b/multiapps-controller-process/src/main/java/module-info.java @@ -34,6 +34,7 @@ requires java.sql; requires jakarta.xml.bind; requires jakarta.inject; + requires org.apache.commons.compress; requires org.apache.logging.log4j.core; requires org.apache.logging.log4j; requires org.apache.commons.collections4; @@ -54,7 +55,7 @@ requires io.netty.handler; requires io.netty.transport; + requires static java.compiler; requires static org.immutables.value; - requires org.apache.commons.compress; } \ No newline at end of file diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/DetermineServiceCreateUpdateServiceActionsStep.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/DetermineServiceCreateUpdateServiceActionsStep.java index 04b2b1a172..bb8bfccf0d 100644 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/DetermineServiceCreateUpdateServiceActionsStep.java +++ b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/DetermineServiceCreateUpdateServiceActionsStep.java @@ -50,8 +50,12 @@ @Scope(BeanDefinition.SCOPE_PROTOTYPE) public class DetermineServiceCreateUpdateServiceActionsStep extends SyncFlowableStep { + private final ArchiveEntryExtractor archiveEntryExtractor; + @Inject - private ArchiveEntryExtractor archiveEntryExtractor; + public DetermineServiceCreateUpdateServiceActionsStep(ArchiveEntryExtractor archiveEntryExtractor) { + this.archiveEntryExtractor = archiveEntryExtractor; + } @Override protected StepPhase executeStep(ProcessContext context) throws Exception { @@ -237,13 +241,13 @@ private CloudServiceInstanceExtended setServiceParameters(ProcessContext context ArchiveEntryWithStreamPositions serviceBindingParametersEntry = ArchiveEntryExtractorUtil.findEntry(fileName, context.getVariable(Variables.ARCHIVE_ENTRIES_POSITIONS)); - byte[] serviceBindingsParametersContent = archiveEntryExtractor.readFullEntry(ImmutableFileEntryProperties.builder() - .guid(appArchiveId) - .name(serviceBindingParametersEntry.getName()) - .spaceGuid(spaceGuid) - .maxFileSizeInBytes(configuration.getMaxManifestSize()) - .build(), - serviceBindingParametersEntry); + byte[] serviceBindingsParametersContent = archiveEntryExtractor.extractEntryBytes(ImmutableFileEntryProperties.builder() + .guid(appArchiveId) + .name(serviceBindingParametersEntry.getName()) + .spaceGuid(spaceGuid) + .maxFileSizeInBytes(configuration.getMaxManifestSize()) + .build(), + serviceBindingParametersEntry); try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(serviceBindingsParametersContent)) { return mergeCredentials(service, byteArrayInputStream); } catch (IOException e) { diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/ProcessMtaArchiveStep.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/ProcessMtaArchiveStep.java index 626f1a7f8e..7b970c2f9c 100644 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/ProcessMtaArchiveStep.java +++ b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/ProcessMtaArchiveStep.java @@ -70,13 +70,7 @@ private MtaArchiveHelper createMtaArchiveHelperFromManifest(ProcessContext conte List archiveEntriesWithStreamPositions) { ArchiveEntryWithStreamPositions mtaManifestEntry = ArchiveEntryExtractorUtil.findEntry(ArchiveHandler.MTA_MANIFEST_NAME, archiveEntriesWithStreamPositions); - byte[] inflatedManifestFile = archiveEntryExtractor.readFullEntry(ImmutableFileEntryProperties.builder() - .guid(appArchiveId) - .name(mtaManifestEntry.getName()) - .spaceGuid(context.getRequiredVariable(Variables.SPACE_GUID)) - .maxFileSizeInBytes(configuration.getMaxMtaDescriptorSize()) - .build(), - mtaManifestEntry); + byte[] inflatedManifestFile = readEntry(context, appArchiveId, mtaManifestEntry); try (InputStream inputStream = new ByteArrayInputStream(inflatedManifestFile)) { Manifest manifest = new Manifest(inputStream); MtaArchiveHelper helper = getHelper(manifest); @@ -87,6 +81,16 @@ private MtaArchiveHelper createMtaArchiveHelperFromManifest(ProcessContext conte } } + private byte[] readEntry(ProcessContext context, String appArchiveId, ArchiveEntryWithStreamPositions mtaManifestEntry) { + return archiveEntryExtractor.extractEntryBytes(ImmutableFileEntryProperties.builder() + .guid(appArchiveId) + .name(mtaManifestEntry.getName()) + .spaceGuid(context.getRequiredVariable(Variables.SPACE_GUID)) + .maxFileSizeInBytes(configuration.getMaxMtaDescriptorSize()) + .build(), + mtaManifestEntry); + } + protected MtaArchiveHelper getHelper(Manifest manifest) { return new MtaArchiveHelper(manifest); } @@ -116,13 +120,7 @@ private DeploymentDescriptor extractDeploymentDescriptor(ProcessContext context, ArchiveEntryWithStreamPositions deploymentDescriptorEntry = ArchiveEntryExtractorUtil.findEntry(ArchiveHandler.MTA_DEPLOYMENT_DESCRIPTOR_NAME, archiveEntriesWithStreamPositions); - byte[] inflatedDeploymentDescriptor = archiveEntryExtractor.readFullEntry(ImmutableFileEntryProperties.builder() - .guid(appArchiveId) - .name(deploymentDescriptorEntry.getName()) - .spaceGuid(context.getRequiredVariable(Variables.SPACE_GUID)) - .maxFileSizeInBytes(configuration.getMaxMtaDescriptorSize()) - .build(), - deploymentDescriptorEntry); + byte[] inflatedDeploymentDescriptor = readEntry(context, appArchiveId, deploymentDescriptorEntry); DescriptorParserFacade descriptorParserFacade = descriptorParserFactory.getInstance(); DeploymentDescriptor deploymentDescriptor = descriptorParserFacade.parseDeploymentDescriptor(new String(inflatedDeploymentDescriptor)); getStepLogger().debug(Messages.MTA_DESCRIPTOR_LENGTH_0_MESSAGE, inflatedDeploymentDescriptor.length); diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculator.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculator.java index 2c4f5306f1..f10fa2cedd 100644 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculator.java +++ b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculator.java @@ -57,16 +57,16 @@ private void iterateApplicationArchive(ApplicationArchiveContext applicationArch ArchiveEntryWithStreamPositions archiveEntryWithStreamPositions = ArchiveEntryExtractorUtil.findEntry(applicationArchiveContext.getModuleFileName(), applicationArchiveContext.getArchiveEntryWithStreamPositions()); DigestCalculator applicationDigestCalculator = applicationArchiveContext.getDigestCalculator(); - archiveEntryExtractor.processFileEntryContent(ImmutableFileEntryProperties.builder() - .guid(applicationArchiveContext.getAppArchiveId()) - .name(archiveEntryWithStreamPositions.getName()) - .spaceGuid(applicationArchiveContext.getSpaceId()) - .maxFileSizeInBytes(applicationArchiveContext.getMaxSizeInBytes()) - .build(), - archiveEntryWithStreamPositions, (bytesBuffer, bytesRead) -> { - applicationArchiveContext.calculateCurrentSizeInBytes(bytesRead); - applicationDigestCalculator.updateDigest(bytesBuffer, 0, bytesRead); - }); + archiveEntryExtractor.processFileEntryBytes(ImmutableFileEntryProperties.builder() + .guid(applicationArchiveContext.getAppArchiveId()) + .name(archiveEntryWithStreamPositions.getName()) + .spaceGuid(applicationArchiveContext.getSpaceId()) + .maxFileSizeInBytes(applicationArchiveContext.getMaxSizeInBytes()) + .build(), + archiveEntryWithStreamPositions, (bytesBuffer, bytesRead) -> { + applicationArchiveContext.calculateCurrentSizeInBytes(bytesRead); + applicationDigestCalculator.updateDigest(bytesBuffer, 0, bytesRead); + }); } } diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationZipBuilder.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationZipBuilder.java index 1e2522d41f..cb99d76ddc 100644 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationZipBuilder.java +++ b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationZipBuilder.java @@ -1,6 +1,5 @@ package org.cloudfoundry.multiapps.controller.process.util; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -43,8 +42,9 @@ public ApplicationZipBuilder(FileService fileService, ApplicationArchiveIterator } public Path extractApplicationInNewArchive(ApplicationArchiveContext applicationArchiveContext) { - Path appPath = createTempFile(); + Path appPath = null; try { + appPath = createTempFile(); // TODO: backwards compatibility for one tact if (applicationArchiveContext.getArchiveEntryWithStreamPositions() == null) { extractDirectoryContent(applicationArchiveContext, appPath); @@ -122,7 +122,7 @@ private boolean isAlreadyUploaded(String zipEntryName, ApplicationArchiveContext } private ZipEntry createNewZipEntry(String zipEntryName, String moduleFileName) { - return new UtcAdjustedZipEntry(FileUtils.getRelativePath(moduleFileName, zipEntryName)); + return new ZipEntry(FileUtils.getRelativePath(moduleFileName, zipEntryName)); } protected void copy(InputStream input, OutputStream output, ApplicationArchiveContext applicationArchiveContext) throws IOException { @@ -154,22 +154,22 @@ private void saveToFile(OutputStream fileOutputStream, ApplicationArchiveContext } private void extractModuleContent(ApplicationArchiveContext applicationArchiveContext, Path appPath) throws IOException { - try (FileOutputStream fileOutputStream = new FileOutputStream(appPath.toFile())) { + try (OutputStream fileOutputStream = Files.newOutputStream(appPath)) { ArchiveEntryWithStreamPositions archiveEntryWithStreamPositions = ArchiveEntryExtractorUtil.findEntry(applicationArchiveContext.getModuleFileName(), applicationArchiveContext.getArchiveEntryWithStreamPositions()); - archiveEntryExtractor.processFileEntryContent(ImmutableFileEntryProperties.builder() - .guid(applicationArchiveContext.getAppArchiveId()) - .name(archiveEntryWithStreamPositions.getName()) - .spaceGuid(applicationArchiveContext.getSpaceId()) - .maxFileSizeInBytes(applicationArchiveContext.getMaxSizeInBytes()) - .build(), - archiveEntryWithStreamPositions, - (bytesBuffer, bytesRead) -> writeModuleContent(bytesBuffer, bytesRead, - fileOutputStream)); + archiveEntryExtractor.processFileEntryBytes(ImmutableFileEntryProperties.builder() + .guid(applicationArchiveContext.getAppArchiveId()) + .name(archiveEntryWithStreamPositions.getName()) + .spaceGuid(applicationArchiveContext.getSpaceId()) + .maxFileSizeInBytes(applicationArchiveContext.getMaxSizeInBytes()) + .build(), + archiveEntryWithStreamPositions, + (bytesBuffer, bytesRead) -> writeModuleContent(bytesBuffer, bytesRead, + fileOutputStream)); } } - private void writeModuleContent(byte[] bytesBuffer, Integer bytesRead, FileOutputStream fileOutputStream) { + private void writeModuleContent(byte[] bytesBuffer, Integer bytesRead, OutputStream fileOutputStream) { try { fileOutputStream.write(bytesBuffer, 0, bytesRead); } catch (IOException e) { diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ArchiveEntryExtractor.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ArchiveEntryExtractor.java index eff6e57bb8..ce7a66fd9d 100644 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ArchiveEntryExtractor.java +++ b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ArchiveEntryExtractor.java @@ -29,17 +29,13 @@ public ArchiveEntryExtractor(FileService fileService) { this.fileService = fileService; } - public byte[] readFullEntry(FileEntryProperties fileEntryProperties, ArchiveEntryWithStreamPositions archiveEntryWithStreamPositions) { + public byte[] extractEntryBytes(FileEntryProperties fileEntryProperties, + ArchiveEntryWithStreamPositions archiveEntryWithStreamPositions) { try { return fileService.processFileContentWithOffset(toFileContentToProcess(fileEntryProperties, archiveEntryWithStreamPositions), - fileEntryStream -> { - if (archiveEntryWithStreamPositions.getCompressionMethod() == ArchiveEntryWithStreamPositions.CompressionMethod.STORED) { - return new DefaultLimitedInputStream(fileEntryStream, - fileEntryProperties.getName(), - fileEntryProperties.getMaxFileSizeInBytes()).readAllBytes(); - } - return inflateFileContent(fileEntryProperties, fileEntryStream); - }); + fileEntryStream -> processArchiveEntryStream(fileEntryProperties, + archiveEntryWithStreamPositions, + fileEntryStream)); } catch (FileStorageException e) { throw new SLException(e, e.getMessage()); } @@ -55,6 +51,17 @@ private FileContentToProcess toFileContentToProcess(FileEntryProperties fileEntr .build(); } + private byte[] processArchiveEntryStream(FileEntryProperties fileEntryProperties, + ArchiveEntryWithStreamPositions archiveEntryWithStreamPositions, InputStream fileEntryStream) + throws IOException { + if (archiveEntryWithStreamPositions.getCompressionMethod() == ArchiveEntryWithStreamPositions.CompressionMethod.STORED) { + return new DefaultLimitedInputStream(fileEntryStream, + fileEntryProperties.getName(), + fileEntryProperties.getMaxFileSizeInBytes()).readAllBytes(); + } + return inflateFileContent(fileEntryProperties, fileEntryStream); + } + private byte[] inflateFileContent(FileEntryProperties fileEntryProperties, InputStream fileEntryStream) throws IOException { try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { InflatorUtil.inflate(new EntryToInflate(fileEntryProperties.getName(), @@ -65,33 +72,46 @@ private byte[] inflateFileContent(FileEntryProperties fileEntryProperties, Input } } - public void processFileEntryContent(FileEntryProperties fileEntryProperties, - ArchiveEntryWithStreamPositions archiveEntryWithStreamPositions, - ObjIntConsumer decompressedBytesConsumer) { + public void processFileEntryBytes(FileEntryProperties fileEntryProperties, + ArchiveEntryWithStreamPositions archiveEntryWithStreamPositions, + ObjIntConsumer decompressedBytesConsumer) { try { - fileService.consumeFileContentWithOffset(toFileContentToProcess(fileEntryProperties, archiveEntryWithStreamPositions), - fileEntryStream -> { - if (archiveEntryWithStreamPositions.getCompressionMethod() == ArchiveEntryWithStreamPositions.CompressionMethod.STORED) { - byte[] buffer = new byte[BUFFER_SIZE]; - int bytesRead; - try ( - InputStream inputStream = new DefaultLimitedInputStream(fileEntryStream, - fileEntryProperties.getName(), - fileEntryProperties.getMaxFileSizeInBytes())) { - while ((bytesRead = inputStream.read(buffer)) != -1) { - decompressedBytesConsumer.accept(buffer, bytesRead); - } - } - } else { - InflatorUtil.inflate(new EntryToInflate(fileEntryProperties.getName(), - fileEntryProperties.getMaxFileSizeInBytes(), - fileEntryStream), - decompressedBytesConsumer); - } - }); + if (archiveEntryWithStreamPositions.getCompressionMethod() == ArchiveEntryWithStreamPositions.CompressionMethod.STORED) { + fileService.consumeFileContentWithOffset(toFileContentToProcess(fileEntryProperties, archiveEntryWithStreamPositions), + fileEntryStream -> processStoredEntryStream(fileEntryProperties, + decompressedBytesConsumer, + fileEntryStream)); + } else { + fileService.consumeFileContentWithOffset(toFileContentToProcess(fileEntryProperties, archiveEntryWithStreamPositions), + fileEntryStream -> processInflatedEntryStream(fileEntryProperties, + decompressedBytesConsumer, + fileEntryStream)); + } } catch (FileStorageException e) { throw new SLException(e, e.getMessage()); } } + private void processStoredEntryStream(FileEntryProperties fileEntryProperties, ObjIntConsumer decompressedBytesConsumer, + InputStream fileEntryStream) + throws IOException { + byte[] buffer = new byte[BUFFER_SIZE]; + int bytesRead; + try (InputStream inputStream = new DefaultLimitedInputStream(fileEntryStream, + fileEntryProperties.getName(), + fileEntryProperties.getMaxFileSizeInBytes())) { + while ((bytesRead = inputStream.read(buffer)) != -1) { + decompressedBytesConsumer.accept(buffer, bytesRead); + } + } + } + + private void processInflatedEntryStream(FileEntryProperties fileEntryProperties, ObjIntConsumer decompressedBytesConsumer, + InputStream fileEntryStream) { + InflatorUtil.inflate(new EntryToInflate(fileEntryProperties.getName(), + fileEntryProperties.getMaxFileSizeInBytes(), + fileEntryStream), + decompressedBytesConsumer); + } + } diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ServiceBindingParametersGetter.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ServiceBindingParametersGetter.java index ea87d5cffd..3db44c5874 100644 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ServiceBindingParametersGetter.java +++ b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ServiceBindingParametersGetter.java @@ -99,13 +99,13 @@ private Map getFileProvidedBindingParameters(String requiredDepe ArchiveEntryWithStreamPositions archiveEntryWithStreamPositions = ArchiveEntryExtractorUtil.findEntry(fileName, context.getVariable(Variables.ARCHIVE_ENTRIES_POSITIONS)); - byte[] serviceBindingParametersFileContent = archiveEntryExtractor.readFullEntry(ImmutableFileEntryProperties.builder() - .guid(appArchiveId) - .name(archiveEntryWithStreamPositions.getName()) - .spaceGuid(context.getRequiredVariable(Variables.SPACE_GUID)) - .maxFileSizeInBytes(maxManifestSize) - .build(), - archiveEntryWithStreamPositions); + byte[] serviceBindingParametersFileContent = archiveEntryExtractor.extractEntryBytes(ImmutableFileEntryProperties.builder() + .guid(appArchiveId) + .name(archiveEntryWithStreamPositions.getName()) + .spaceGuid(context.getRequiredVariable(Variables.SPACE_GUID)) + .maxFileSizeInBytes(maxManifestSize) + .build(), + archiveEntryWithStreamPositions); try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(serviceBindingParametersFileContent)) { return JsonUtil.convertJsonToMap(byteArrayInputStream); } catch (IOException e) { diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/UtcAdjustedZipEntry.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/UtcAdjustedZipEntry.java deleted file mode 100644 index 317fa2c7cb..0000000000 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/UtcAdjustedZipEntry.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.cloudfoundry.multiapps.controller.process.util; - -import java.time.OffsetDateTime; -import java.util.zip.ZipEntry; - -public class UtcAdjustedZipEntry extends ZipEntry { - - public UtcAdjustedZipEntry(String name) { - super(name); - setTime(OffsetDateTime.now() - .toEpochSecond()); - } - - public UtcAdjustedZipEntry(ZipEntry e) { - super(e); - setTime(OffsetDateTime.now() - .toEpochSecond()); - } -} \ No newline at end of file diff --git a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/DetermineServiceCreateUpdateServiceActionsStepTest.java b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/DetermineServiceCreateUpdateServiceActionsStepTest.java index c8dfb8cc56..7800704780 100644 --- a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/DetermineServiceCreateUpdateServiceActionsStepTest.java +++ b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/DetermineServiceCreateUpdateServiceActionsStepTest.java @@ -23,6 +23,7 @@ import org.cloudfoundry.multiapps.controller.core.model.DynamicResolvableParameter; import org.cloudfoundry.multiapps.controller.core.model.ImmutableDynamicResolvableParameter; import org.cloudfoundry.multiapps.controller.process.Messages; +import org.cloudfoundry.multiapps.controller.process.util.ArchiveEntryExtractor; import org.cloudfoundry.multiapps.controller.process.util.ServiceAction; import org.cloudfoundry.multiapps.controller.process.variables.Variables; import org.junit.jupiter.api.Test; @@ -43,6 +44,8 @@ class DetermineServiceCreateUpdateServiceActionsStepTest extends SyncFlowableSte private static final String SERVICE_NAME = "service"; + private ArchiveEntryExtractor archiveEntryExtractor; + public static Stream testExecute() { return Stream.of( // @formatter:off @@ -330,7 +333,8 @@ private CloudServiceInstanceExtended createMockUserProvidedServiceInstance(Cloud @Override protected DetermineServiceCreateUpdateServiceActionsStep createStep() { - return new DetermineServiceCreateUpdateServiceActionsStep(); + archiveEntryExtractor = Mockito.mock(ArchiveEntryExtractor.class); + return new DetermineServiceCreateUpdateServiceActionsStep(archiveEntryExtractor); } private static class StepInput { diff --git a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/ProcessMtaArchiveStepTest.java b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/ProcessMtaArchiveStepTest.java index 32f132d46b..ed225acb7f 100644 --- a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/ProcessMtaArchiveStepTest.java +++ b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/ProcessMtaArchiveStepTest.java @@ -85,7 +85,7 @@ void testExecute() { DescriptorParserFacadeFactory descriptorParserFactory = Mockito.mock(DescriptorParserFacadeFactory.class); Mockito.when(descriptorParserFactory.getInstance()) .thenReturn(new DescriptorParserFacade()); - Mockito.when(archiveEntryExtractor.readFullEntry(any(), any())) + Mockito.when(archiveEntryExtractor.extractEntryBytes(any(), any())) .thenReturn(loadFile("test-manifest-1.MF")) .thenReturn(loadFile("test-mtad-1.yaml")); step.descriptorParserFactory = descriptorParserFactory; diff --git a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculatorTest.java b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculatorTest.java index 0812cd3877..4193f6ad19 100644 --- a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculatorTest.java +++ b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculatorTest.java @@ -59,7 +59,7 @@ void setUp() throws Exception { consumer); return null; }).when(archiveEntryExtractor) - .processFileEntryContent(any(), any(), any()); + .processFileEntryBytes(any(), any(), any()); applicationDigestCalculator = new ApplicationDigestCalculator(fileService, new ApplicationArchiveIterator(), archiveEntryExtractor); } @@ -148,7 +148,7 @@ void testDigestCalculationWhenExceptionIsThrown() { SPACE_GUID, APP_ARCHIVE_ID); doThrow(new SLException("Cannot calculate digest")).when(archiveEntryExtractor) - .processFileEntryContent(any(), any(), any()); + .processFileEntryBytes(any(), any(), any()); Exception exception = assertThrows(Exception.class, () -> applicationDigestCalculator.calculateApplicationDigest(applicationArchiveContext)); assertEquals("Cannot calculate digest", exception.getMessage()); diff --git a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ArchiveEntryExtractorTest.java b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ArchiveEntryExtractorTest.java index 722fd0ad4e..c689963ee1 100644 --- a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ArchiveEntryExtractorTest.java +++ b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ArchiveEntryExtractorTest.java @@ -65,7 +65,7 @@ void readFullDeploymentDescriptorFile(String mtarFileName, ArchiveEntryWithStrea throws FileStorageException, IOException { prepareFileService(getClass().getResourceAsStream(mtarFileName), deploymentDescriptorEntry.getStartPosition(), deploymentDescriptorEntry.getEndPosition()); - byte[] bytesRead = archiveEntryExtractor.readFullEntry(buildFileEntryProperty(Integer.MAX_VALUE), deploymentDescriptorEntry); + byte[] bytesRead = archiveEntryExtractor.extractEntryBytes(buildFileEntryProperty(Integer.MAX_VALUE), deploymentDescriptorEntry); assertDeploymentDescriptorAreEqual(new String(bytesRead)); } @@ -86,19 +86,19 @@ private void assertDeploymentDescriptorAreEqual(String actualDeploymentDescripto assertEquals(expectedDeploymentDescriptor, actualDeploymentDescriptor); } - static Stream processFileEntryContent() { + static Stream processFileEntryBytes() { return Stream.of(Arguments.of("stored-mta.mtar", STORED_DEPLOYMENT_DESCRIPTOR_ENTRY), Arguments.of("deflated-mta.mtar", DEFLATED_DEPLOYMENT_DESCRIPTOR_ENTRY)); } @ParameterizedTest @MethodSource - void processFileEntryContent(String mtarFileName, ArchiveEntryWithStreamPositions deploymentDescriptorEntry) + void processFileEntryBytes(String mtarFileName, ArchiveEntryWithStreamPositions deploymentDescriptorEntry) throws FileStorageException, IOException { prepareFileService(getClass().getResourceAsStream(mtarFileName), deploymentDescriptorEntry.getStartPosition(), deploymentDescriptorEntry.getEndPosition()); StringBuilder actualDeploymentDescriptorContent = new StringBuilder(); - archiveEntryExtractor.processFileEntryContent(buildFileEntryProperty(Integer.MAX_VALUE), deploymentDescriptorEntry, + archiveEntryExtractor.processFileEntryBytes(buildFileEntryProperty(Integer.MAX_VALUE), deploymentDescriptorEntry, (byteBuffer, bytesRead) -> actualDeploymentDescriptorContent.append(new String(Arrays.copyOfRange(byteBuffer, 0, @@ -118,7 +118,7 @@ void processFileEntryContentWithExceedingSizeEntry(String mtarFileName, ArchiveE prepareFileService(getClass().getResourceAsStream(mtarFileName), deploymentDescriptorEntry.getStartPosition(), deploymentDescriptorEntry.getEndPosition()); Exception exception = assertThrows(ContentException.class, - () -> archiveEntryExtractor.processFileEntryContent(buildFileEntryProperty(2), + () -> archiveEntryExtractor.processFileEntryBytes(buildFileEntryProperty(2), deploymentDescriptorEntry, (byteBuffer, bytesRead) -> { })); diff --git a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ServiceBindingParametersGetterTest.java b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ServiceBindingParametersGetterTest.java index 59324cc5d3..0ae79eb6ba 100644 --- a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ServiceBindingParametersGetterTest.java +++ b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ServiceBindingParametersGetterTest.java @@ -220,7 +220,7 @@ private void prepareContext(CloudServiceInstanceExtended serviceInstance) { private void prepareFileService(Map fileProvidedParameters) { String fileProvidedParametersJson = JsonUtil.toJson(fileProvidedParameters); - when(archiveEntryExtractor.readFullEntry(any(), any())).thenReturn(fileProvidedParametersJson.getBytes()); + when(archiveEntryExtractor.extractEntryBytes(any(), any())).thenReturn(fileProvidedParametersJson.getBytes()); } private void prepareClient(Map bindingParameters, boolean serviceBindingExist) {