Skip to content

Commit

Permalink
Refactoring and code cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
IvanBorislavovDimitrov committed Nov 22, 2024
1 parent 82153dd commit b60a0a7
Show file tree
Hide file tree
Showing 14 changed files with 127 additions and 118 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -116,15 +116,16 @@ public <T> 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);
}
}

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()));
Expand Down
3 changes: 2 additions & 1 deletion multiapps-controller-process/src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

}
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,7 @@ private MtaArchiveHelper createMtaArchiveHelperFromManifest(ProcessContext conte
List<ArchiveEntryWithStreamPositions> 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);
Expand All @@ -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);
}
Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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) {
Expand Down
Loading

0 comments on commit b60a0a7

Please sign in to comment.