Files
litmus-be/litmus-client/src/main/java/com/navi/medici/client/ExperimentBackupHandlerFile.java
chandresh pancholi 48d8d94dbe variant integration with litmus
Signed-off-by: chandresh pancholi <chandresh.pancholi@navi.com>
2021-10-21 20:53:01 +05:30

56 lines
2.1 KiB
Java

package com.navi.medici.client;
import com.navi.medici.config.LitmusConfig;
import com.navi.medici.exception.LitmusException;
import com.navi.medici.request.v1.LitmusExperiment;
import com.navi.medici.response.LitmusExperimentCollection;
import com.navi.medici.util.JacksonUtils;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import lombok.extern.log4j.Log4j2;
import org.apache.logging.log4j.core.util.IOUtils;
@Log4j2
public class ExperimentBackupHandlerFile implements ExperimentBackupHandler {
private final String backupFile;
public ExperimentBackupHandlerFile(LitmusConfig config) {
this.backupFile = config.getBackupFile();
}
@Override
public LitmusExperimentCollection read() {
log.info("Litmus will try to load experiments states from temporary backup");
try (FileReader reader = new FileReader(backupFile)) {
return JacksonUtils.stringToObject(IOUtils.toString(reader), LitmusExperimentCollection.class);
} catch (FileNotFoundException e) {
log.info(
" Litmus could not find the backup-file '"
+ backupFile
+ ". This is expected behavior the first time litmus runs in a new environment.");
} catch (IOException | IllegalStateException e) {
log.error("");
}
List<LitmusExperiment> emptyList = Collections.emptyList();
return LitmusExperimentCollection.builder()
.litmusExperiments(emptyList)
.build();
}
@Override
public void write(LitmusExperimentCollection experimentCollection) {
try (FileWriter writer = new FileWriter(backupFile)) {
writer.write(JacksonUtils.objectToString(experimentCollection));
} catch (IOException e) {
throw new LitmusException(
"Litmus was unable to backup experiments to file: " + backupFile, e);
}
}
}