aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@oath.com>2019-01-15 14:45:09 +0100
committerHåkon Hallingstad <hakon@oath.com>2019-01-15 14:45:09 +0100
commit37685c817eae352d8245cd4e179b0bd96971c3eb (patch)
tree3934431c06541cbbd759219049408006dbbe39ca
parentbb4d6627a9046cb9728f1bb97d76c5d290e7b3e9 (diff)
Return 404 if flag is not defined
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/DefinedFlag.java7
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/flags/FlagsHandler.java8
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"));