diff options
author | Håkon Hallingstad <hakon@oath.com> | 2019-01-15 14:45:09 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@oath.com> | 2019-01-15 14:45:09 +0100 |
commit | 37685c817eae352d8245cd4e179b0bd96971c3eb (patch) | |
tree | 3934431c06541cbbd759219049408006dbbe39ca | |
parent | bb4d6627a9046cb9728f1bb97d76c5d290e7b3e9 (diff) |
Return 404 if flag is not defined
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/DefinedFlag.java | 7 | ||||
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/FlagsHandler.java | 8 |
2 files changed, 10 insertions, 5 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/DefinedFlag.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/DefinedFlag.java index 1c59113787d..92397fc84a7 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/DefinedFlag.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/DefinedFlag.java @@ -12,7 +12,6 @@ import com.yahoo.vespa.flags.json.DimensionHelper; import java.io.IOException; import java.io.OutputStream; -import java.util.Optional; /** * @author hakonhall @@ -20,9 +19,9 @@ import java.util.Optional; public class DefinedFlag extends HttpResponse { private static ObjectMapper mapper = new ObjectMapper(); - private final Optional<FlagDefinition> flagDefinition; + private final FlagDefinition flagDefinition; - public DefinedFlag(Optional<FlagDefinition> flagDefinition) { + public DefinedFlag(FlagDefinition flagDefinition) { super(Response.Status.OK); this.flagDefinition = flagDefinition; } @@ -30,7 +29,7 @@ public class DefinedFlag extends HttpResponse { @Override public void render(OutputStream outputStream) throws IOException { ObjectNode rootNode = mapper.createObjectNode(); - flagDefinition.ifPresent(definition -> renderFlagDefinition(definition, rootNode)); + renderFlagDefinition(flagDefinition, rootNode); mapper.writeValue(outputStream, rootNode); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/FlagsHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/FlagsHandler.java index 1cf1ff3c307..6b07448ee04 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/FlagsHandler.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/FlagsHandler.java @@ -41,7 +41,7 @@ public class FlagsHandler extends HttpHandler { if (path.matches("/flags/v1/data")) return getFlagDataList(request); if (path.matches("/flags/v1/data/{flagId}")) return getFlagData(findFlagId(request, path)); if (path.matches("/flags/v1/defined")) return new DefinedFlags(Flags.getAllFlags()); - if (path.matches("/flags/v1/defined/{flagId}")) return new DefinedFlag(Flags.getFlag(findFlagId(request, path))); + if (path.matches("/flags/v1/defined/{flagId}")) return getDefinedFlag(findFlagId(request, path)); throw new NotFoundException("Nothing at path '" + path + "'"); } @@ -65,6 +65,12 @@ public class FlagsHandler extends HttpHandler { return uri.getScheme() + "://" + uri.getHost() + port + "/flags/v1"; } + private HttpResponse getDefinedFlag(FlagId flagId) { + FlagDefinition definition = Flags.getFlag(flagId) + .orElseThrow(() -> new NotFoundException("Flag " + flagId + " not defined")); + return new DefinedFlag(definition); + } + private HttpResponse getFlagDataList(HttpRequest request) { return new FlagDataListResponse(flagsV1Uri(request), flagsDb.getAllFlags(), Objects.equals(request.getProperty("recursive"), "true")); |