Skip to content

Commit

Permalink
Add Handler for MissionModelLoadFailures to MerlinBindings
Browse files Browse the repository at this point in the history
- Remove unthrown exception from `getActivityTypes`
  • Loading branch information
Mythicaeda committed Jun 7, 2024
1 parent 5b79f79 commit 49cd32a
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import gov.nasa.jpl.aerie.merlin.server.models.PlanId;
import gov.nasa.jpl.aerie.merlin.server.services.GenerateConstraintsLibAction;
import gov.nasa.jpl.aerie.merlin.server.services.GetSimulationResultsAction;
import gov.nasa.jpl.aerie.merlin.server.services.LocalMissionModelService;
import gov.nasa.jpl.aerie.merlin.server.services.MissionModelService;
import gov.nasa.jpl.aerie.merlin.server.services.PlanService;
import gov.nasa.jpl.aerie.permissions.Action;
Expand Down Expand Up @@ -126,6 +127,8 @@ private void postRefreshModelParameters(final Context ctx) {
ctx.status(400).result(ResponseSerializers.serializeInvalidEntityException(ex).toString());
} catch (final MissionModelService.NoSuchMissionModelException ex) {
ctx.status(404).result(ResponseSerializers.serializeNoSuchMissionModelException(ex).toString());
} catch (final LocalMissionModelService.MissionModelLoadException ex) {
ctx.status(400).result(ResponseSerializers.serializeMissionModelLoadException(ex).toString());
}
}

Expand All @@ -140,6 +143,8 @@ private void postRefreshActivityTypes(final Context ctx) {
ctx.status(400).result(ResponseSerializers.serializeInvalidEntityException(ex).toString());
} catch (final MissionModelService.NoSuchMissionModelException ex) {
ctx.status(404).result(ResponseSerializers.serializeNoSuchMissionModelException(ex).toString());
} catch (final LocalMissionModelService.MissionModelLoadException ex) {
ctx.status(400).result(ResponseSerializers.serializeMissionModelLoadException(ex).toString());
}
}

Expand All @@ -154,6 +159,8 @@ private void postRefreshResourceTypes(Context ctx) {
ctx.status(400).result(ResponseSerializers.serializeInvalidEntityException(ex).toString());
} catch (final MissionModelService.NoSuchMissionModelException ex) {
ctx.status(404).result(ResponseSerializers.serializeNoSuchMissionModelException(ex).toString());
} catch (final LocalMissionModelService.MissionModelLoadException ex) {
ctx.status(400).result(ResponseSerializers.serializeMissionModelLoadException(ex).toString());
}
}

Expand All @@ -171,6 +178,8 @@ private void getResourceTypes(final Context ctx) {
ctx.status(400).result(ResponseSerializers.serializeInvalidEntityException(ex).toString());
} catch (final MissionModelService.NoSuchMissionModelException ex) {
ctx.status(404).result(ResponseSerializers.serializeNoSuchMissionModelException(ex).toString());
} catch (final LocalMissionModelService.MissionModelLoadException ex) {
ctx.status(400).result(ResponseSerializers.serializeMissionModelLoadException(ex).toString());
}
}

Expand Down Expand Up @@ -286,6 +295,8 @@ private void validateActivityArguments(final Context ctx) {
ctx.status(400).result(ResponseSerializers.serializeInvalidJsonException(ex).toString());
} catch (final InvalidEntityException ex) {
ctx.status(400).result(ResponseSerializers.serializeInvalidEntityException(ex).toString());
} catch (final LocalMissionModelService.MissionModelLoadException ex) {
ctx.status(400).result(ResponseSerializers.serializeMissionModelLoadException(ex).toString());
}
}

Expand All @@ -307,6 +318,8 @@ private void validateModelArguments(final Context ctx) {
ctx.status(400).result(ResponseSerializers.serializeInvalidJsonException(ex).toString());
} catch (final InvalidEntityException ex) {
ctx.status(400).result(ResponseSerializers.serializeInvalidEntityException(ex).toString());
} catch (final LocalMissionModelService.MissionModelLoadException ex) {
ctx.status(400).result(ResponseSerializers.serializeMissionModelLoadException(ex).toString());
}
}

Expand All @@ -329,6 +342,8 @@ private void validatePlan(final Context ctx) {
ctx.status(404).result(ResponseSerializers.serializeNoSuchPlanException(ex).toString());
} catch (final MissionModelService.NoSuchMissionModelException ex) {
ctx.status(404).result(ResponseSerializers.serializeNoSuchMissionModelException(ex).toString());
} catch (final LocalMissionModelService.MissionModelLoadException ex) {
ctx.status(400).result(ResponseSerializers.serializeMissionModelLoadException(ex).toString());
}
}

Expand All @@ -348,6 +363,8 @@ private void getModelEffectiveArguments(final Context ctx) {
ctx.status(400).result(ResponseSerializers.serializeInvalidJsonException(ex).toString());
} catch (final InvalidEntityException ex) {
ctx.status(400).result(ResponseSerializers.serializeInvalidEntityException(ex).toString());
} catch (final LocalMissionModelService.MissionModelLoadException ex) {
ctx.status(400).result(ResponseSerializers.serializeMissionModelLoadException(ex).toString());
}
}

Expand All @@ -373,6 +390,8 @@ private void getActivityEffectiveArguments(final Context ctx) {
ctx.status(400).result(ResponseSerializers.serializeInvalidJsonException(ex).toString());
} catch (final InvalidEntityException ex) {
ctx.status(400).result(ResponseSerializers.serializeInvalidEntityException(ex).toString());
} catch (final LocalMissionModelService.MissionModelLoadException ex) {
ctx.status(400).result(ResponseSerializers.serializeMissionModelLoadException(ex).toString());
}
}

Expand All @@ -391,6 +410,8 @@ private void getActivityEffectiveArgumentsBulk(final Context ctx) {
ctx.status(400).result(ResponseSerializers.serializeInvalidJsonException(ex).toString());
} catch (final InvalidEntityException ex) {
ctx.status(400).result(ResponseSerializers.serializeInvalidEntityException(ex).toString());
} catch (final LocalMissionModelService.MissionModelLoadException ex) {
ctx.status(400).result(ResponseSerializers.serializeMissionModelLoadException(ex).toString());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -538,6 +538,7 @@ public static JsonValue serializeMissionModelLoadException(
// TODO: Improve diagnostic information?
return Json.createObjectBuilder()
.add("message", ex.getMessage())
.add("type", "Mission Model Load Failure")
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import gov.nasa.jpl.aerie.merlin.protocol.types.ValueSchema;
import gov.nasa.jpl.aerie.merlin.server.models.ActivityDirectiveForValidation;
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.MissionModelId;
import gov.nasa.jpl.aerie.merlin.server.models.MissionModelJar;
import gov.nasa.jpl.aerie.merlin.server.remotes.MissionModelRepository;
Expand Down Expand Up @@ -95,12 +94,10 @@ public Map<String, ValueSchema> getResourceSchemas(final String missionModelId)
* @param missionModelId The ID of the mission model to load.
* @return The set of all activity types in the named mission model, indexed by name.
* @throws NoSuchMissionModelException If no mission model is known by the given ID.
* @throws MissionModelLoadException If the mission model cannot be loaded -- the JAR may be invalid, or the mission model
* it contains may not abide by the expected contract at load time.
*/
@Override
public Map<String, ActivityType> getActivityTypes(final String missionModelId)
throws NoSuchMissionModelException, MissionModelLoadException
throws NoSuchMissionModelException
{
try {
return missionModelRepository.getActivityTypes(missionModelId);
Expand Down

0 comments on commit 49cd32a

Please sign in to comment.