From c082e8c3100c9396dc6feb7c1e2a6fd2b43d0f08 Mon Sep 17 00:00:00 2001 From: Theresa Kamerman Date: Mon, 3 Apr 2023 13:35:12 -0700 Subject: [PATCH] Remove InMemoryStore option from AerieAppDriver The InMemory versions of the repositories are either stubs or only defined enough to be used in testing. Therefore, we should remove the ability to initiate Aerie using an InMemoryStore. - Remove classes that are unused as of this pruning --- .../aerie/merlin/server/AerieAppDriver.java | 11 -- .../merlin/server/config/InMemoryStore.java | 3 - .../jpl/aerie/merlin/server/config/Store.java | 2 +- .../mocks/InMemoryMissionModelRepository.java | 107 ------------------ .../merlin/server/utilities/FileUtils.java | 17 --- 5 files changed, 1 insertion(+), 139 deletions(-) delete mode 100644 merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/config/InMemoryStore.java delete mode 100644 merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/mocks/InMemoryMissionModelRepository.java delete mode 100644 merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/utilities/FileUtils.java diff --git a/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/AerieAppDriver.java b/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/AerieAppDriver.java index ba82f2ad74..7671c509c9 100644 --- a/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/AerieAppDriver.java +++ b/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/AerieAppDriver.java @@ -4,15 +4,11 @@ import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import gov.nasa.jpl.aerie.merlin.server.config.AppConfiguration; -import gov.nasa.jpl.aerie.merlin.server.config.InMemoryStore; import gov.nasa.jpl.aerie.merlin.server.config.PostgresStore; import gov.nasa.jpl.aerie.merlin.server.config.Store; import gov.nasa.jpl.aerie.merlin.server.http.LocalAppExceptionBindings; import gov.nasa.jpl.aerie.merlin.server.http.MerlinBindings; import gov.nasa.jpl.aerie.merlin.server.http.MissionModelRepositoryExceptionBindings; -import gov.nasa.jpl.aerie.merlin.server.mocks.InMemoryMissionModelRepository; -import gov.nasa.jpl.aerie.merlin.server.mocks.InMemoryPlanRepository; -import gov.nasa.jpl.aerie.merlin.server.remotes.InMemoryResultsCellRepository; import gov.nasa.jpl.aerie.merlin.server.remotes.MissionModelRepository; import gov.nasa.jpl.aerie.merlin.server.remotes.PlanRepository; import gov.nasa.jpl.aerie.merlin.server.remotes.ResultsCellRepository; @@ -125,13 +121,6 @@ private static Stores loadStores(final AppConfiguration config) { new PostgresPlanRepository(hikariDataSource), new PostgresMissionModelRepository(hikariDataSource), new PostgresResultsCellRepository(hikariDataSource)); - } else if (store instanceof InMemoryStore) { - final var inMemoryPlanRepository = new InMemoryPlanRepository(); - return new Stores( - inMemoryPlanRepository, - new InMemoryMissionModelRepository(), - new InMemoryResultsCellRepository(inMemoryPlanRepository)); - } else { throw new UnexpectedSubtypeError(Store.class, store); } diff --git a/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/config/InMemoryStore.java b/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/config/InMemoryStore.java deleted file mode 100644 index 8f477baf1a..0000000000 --- a/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/config/InMemoryStore.java +++ /dev/null @@ -1,3 +0,0 @@ -package gov.nasa.jpl.aerie.merlin.server.config; - -public record InMemoryStore() implements Store {} diff --git a/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/config/Store.java b/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/config/Store.java index 9e32802598..bfd9a6dca9 100644 --- a/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/config/Store.java +++ b/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/config/Store.java @@ -1,5 +1,5 @@ package gov.nasa.jpl.aerie.merlin.server.config; public sealed interface Store - permits PostgresStore, InMemoryStore + permits PostgresStore {} diff --git a/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/mocks/InMemoryMissionModelRepository.java b/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/mocks/InMemoryMissionModelRepository.java deleted file mode 100644 index ef8241165c..0000000000 --- a/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/mocks/InMemoryMissionModelRepository.java +++ /dev/null @@ -1,107 +0,0 @@ -package gov.nasa.jpl.aerie.merlin.server.mocks; - -import gov.nasa.jpl.aerie.merlin.protocol.model.InputType.Parameter; -import gov.nasa.jpl.aerie.merlin.protocol.model.InputType.ValidationNotice; -import gov.nasa.jpl.aerie.merlin.server.models.ActivityDirectiveId; -import gov.nasa.jpl.aerie.merlin.server.models.ActivityType; -import gov.nasa.jpl.aerie.merlin.server.models.Constraint; -import gov.nasa.jpl.aerie.merlin.server.models.MissionModelJar; -import gov.nasa.jpl.aerie.merlin.server.models.PlanId; -import gov.nasa.jpl.aerie.merlin.server.models.Timestamp; -import gov.nasa.jpl.aerie.merlin.server.remotes.MissionModelAccessException; -import gov.nasa.jpl.aerie.merlin.server.remotes.MissionModelRepository; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; - -import static gov.nasa.jpl.aerie.merlin.server.utilities.FileUtils.getUniqueFilePath; - -public final class InMemoryMissionModelRepository implements MissionModelRepository { - private final Path MISSION_MODEL_FILE_PATH; - private final Map missionModels = new HashMap<>(); - private int nextMissionModelId; - - public InMemoryMissionModelRepository() { - try { - MISSION_MODEL_FILE_PATH = Files.createTempDirectory("mock_missionModel_files").toAbsolutePath(); - } catch (final IOException ex) { - throw new RuntimeException(ex); - } - } - - public String createMissionModel(final MissionModelJar missionModelJar) { - // Store MissionModel JAR - final Path location = getUniqueFilePath(missionModelJar, MISSION_MODEL_FILE_PATH); - try { - Files.copy(missionModelJar.path, location); - } catch (final IOException e) { - throw new MissionModelAccessException(missionModelJar.path, e); - } - - final MissionModelJar newJar = new MissionModelJar(missionModelJar); - newJar.path = location; - - final String missionModelId = Objects.toString(this.nextMissionModelId++); - this.missionModels.put(missionModelId, newJar); - - return missionModelId; - } - - @Override - public void updateModelParameters(final String missionModelId, final List modelParameters) - { - } - - @Override - public void updateActivityTypes(final String missionModelId, final Map activityTypes) - { - } - - @Override - public void updateActivityDirectiveValidations(final ActivityDirectiveId directiveId, final PlanId planId, final Timestamp argumentsModifiedTime, final List notices) - { - } - - public void deleteMissionModel(final String missionModelId) throws NoSuchMissionModelException { - final MissionModelJar missionModelJar = getMissionModel(missionModelId); - - // Delete mission model JAR - try { - Files.deleteIfExists(missionModelJar.path); - } catch (final IOException e) { - throw new MissionModelAccessException(missionModelJar.path, e); - } - - this.missionModels.remove(missionModelId); - } - - @Override - public MissionModelJar getMissionModel(final String missionModelId) throws NoSuchMissionModelException { - final MissionModelJar missionModel = Optional - .ofNullable(this.missionModels.get(missionModelId)) - .orElseThrow(NoSuchMissionModelException::new); - - return new MissionModelJar(missionModel); - } - - @Override - public Map getConstraints(final String missionModelId){ - return Map.of(); - } - - @Override - public Map getAllMissionModels() { - return new HashMap<>(this.missionModels); - } - - @Override - public Map getActivityTypes(final String missionModelId) { - return Map.of(); - } -} diff --git a/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/utilities/FileUtils.java b/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/utilities/FileUtils.java deleted file mode 100644 index 5629dd634d..0000000000 --- a/merlin-server/src/main/java/gov/nasa/jpl/aerie/merlin/server/utilities/FileUtils.java +++ /dev/null @@ -1,17 +0,0 @@ -package gov.nasa.jpl.aerie.merlin.server.utilities; - -import gov.nasa.jpl.aerie.merlin.server.models.MissionModelJar; - -import java.nio.file.Files; -import java.nio.file.Path; - -public final class FileUtils { - public static Path getUniqueFilePath(final MissionModelJar missionModelJar, final Path basePath) { - final String basename = missionModelJar.name; - Path path = basePath.resolve(basename + ".jar"); - for (int i = 0; Files.exists(path); ++i) { - path = basePath.resolve(basename + "_" + i + ".jar"); - } - return path; - } -}