Skip to content

Commit

Permalink
MID-8842 ninja - bugfix in unzip when downloading distribution
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Sep 13, 2023
1 parent 2590058 commit 3748256
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import java.util.zip.ZipInputStream;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.fusesource.jansi.Ansi;

import com.evolveum.midpoint.ninja.action.Action;
Expand Down Expand Up @@ -56,17 +55,19 @@ public DownloadDistributionResult execute() throws Exception {
private File unzipDistribution(File distributionZip) throws IOException {
final File tempDirectory = options.getTempDirectory();

String name = distributionZip.getName();
File distribution = new File(tempDirectory, StringUtils.left(name, name.length() - 4));
if (distribution.exists()) {
distribution.delete();
}
File distribution;

byte[] buffer = new byte[1024];
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(distributionZip))) {
ZipEntry zipEntry = zis.getNextEntry();

distribution = newFile(tempDirectory, zipEntry);
if (distribution.exists() && distribution.isDirectory()) {
FileUtils.deleteDirectory(distribution);
}

while (zipEntry != null) {
File newFile = newFile(distribution, zipEntry);
File newFile = newFile(tempDirectory, zipEntry);
if (zipEntry.isDirectory()) {
if (!newFile.isDirectory() && !newFile.mkdirs()) {
throw new IOException("Failed to create directory " + newFile);
Expand All @@ -90,15 +91,6 @@ private File unzipDistribution(File distributionZip) throws IOException {
}
}

File[] files = distribution.listFiles();
if (files != null && files.length == 1) {
File zipRootDirectory = files[0];
for (File file : zipRootDirectory.listFiles()) {
FileUtils.moveToDirectory(file, distribution, false);
}
zipRootDirectory.delete();
}

if (options.getDistributionDirectory() != null) {
File distributionDirectory = options.getDistributionDirectory();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
import java.nio.charset.StandardCharsets;
import java.util.*;

import com.evolveum.midpoint.ninja.util.BasicLightweightIdentifierGenerator;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.springframework.core.io.FileSystemResource;
Expand All @@ -26,6 +24,7 @@
import com.evolveum.midpoint.ninja.action.Action;
import com.evolveum.midpoint.ninja.action.ActionResult;
import com.evolveum.midpoint.ninja.impl.LogTarget;
import com.evolveum.midpoint.ninja.util.BasicLightweightIdentifierGenerator;
import com.evolveum.midpoint.ninja.util.ConsoleFormat;
import com.evolveum.midpoint.ninja.util.NinjaUtils;
import com.evolveum.midpoint.prism.PrismContext;
Expand Down Expand Up @@ -57,6 +56,9 @@ public class InitialObjectsAction extends Action<InitialObjectsOptions, ActionRe

private static final String INITIAL_OBJECTS_RESOURCE_PATTERN = "classpath*:/initial-objects/**/*.xml";

private static final String OPERATION_UPDATE_OBJECTS = "Initial objects update";
private static final String OPERATION_PROCESS_FILE = "Process file";

@Override
public String getOperationName() {
return "initial objects";
Expand Down Expand Up @@ -88,7 +90,7 @@ public ActionResult<InitialObjectsResult> execute() throws Exception {
}
}

OperationResult result = new OperationResult("Initial objects update");
OperationResult result = new OperationResult(OPERATION_UPDATE_OBJECTS);

List<Resource> resources = new ArrayList<>();
List<File> files = options.getFiles();
Expand Down Expand Up @@ -163,7 +165,7 @@ public ActionResult<InitialObjectsResult> execute() throws Exception {
private <O extends ObjectType> ObjectReferenceType processFile(
Resource resource, OperationResult parentResult, InitialObjectsResult actionResult, Writer writer) {

OperationResult result = parentResult.createSubresult("Process file");
OperationResult result = parentResult.createSubresult(OPERATION_PROCESS_FILE);

final PrismContext prismContext = context.getPrismContext();
final RepositoryService repository = context.getRepository();
Expand Down

0 comments on commit 3748256

Please sign in to comment.