aboutsummaryrefslogtreecommitdiffstats
path: root/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlag.java
diff options
context:
space:
mode:
Diffstat (limited to 'configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlag.java')
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlag.java47
1 files changed, 47 insertions, 0 deletions
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlag.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlag.java
new file mode 100644
index 00000000000..c706a2b1e51
--- /dev/null
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlag.java
@@ -0,0 +1,47 @@
+// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.configserver.flags.http;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.yahoo.container.jdisc.HttpResponse;
+import com.yahoo.jdisc.Response;
+import com.yahoo.vespa.flags.FlagDefinition;
+import com.yahoo.vespa.flags.json.DimensionHelper;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * @author hakonhall
+ */
+public class DefinedFlag extends HttpResponse {
+ private static ObjectMapper mapper = new ObjectMapper();
+
+ private final FlagDefinition flagDefinition;
+
+ public DefinedFlag(FlagDefinition flagDefinition) {
+ super(Response.Status.OK);
+ this.flagDefinition = flagDefinition;
+ }
+
+ @Override
+ public void render(OutputStream outputStream) throws IOException {
+ ObjectNode rootNode = mapper.createObjectNode();
+ renderFlagDefinition(flagDefinition, rootNode);
+ mapper.writeValue(outputStream, rootNode);
+ }
+
+ static void renderFlagDefinition(FlagDefinition flagDefinition, ObjectNode definitionNode) {
+ definitionNode.put("description", flagDefinition.getDescription());
+ definitionNode.put("modification-effect", flagDefinition.getModificationEffect());
+ ArrayNode dimensionsNode = definitionNode.putArray("dimensions");
+ flagDefinition.getDimensions().forEach(dimension -> dimensionsNode.add(DimensionHelper.toWire(dimension)));
+ }
+
+ @Override
+ public String getContentType() {
+ return "application/json";
+ }
+
+}