Skip to content

Commit 1a7571f

Browse files
committed
Refactor RuntimeValues to allow storing Objects
1 parent 7fc4a91 commit 1a7571f

21 files changed

Lines changed: 75 additions & 118 deletions

src/main/java/eu/openanalytics/containerproxy/backend/docker/AbstractDockerBackend.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ protected List<String> convertEnv(Map<String, String> env) {
155155
return res;
156156
}
157157

158-
protected Map<RuntimeValueKey, RuntimeValue> parseLabelsAsRuntimeValues(String containerId, ImmutableMap<String, String> labels) {
158+
protected Map<RuntimeValueKey<?>, RuntimeValue> parseLabelsAsRuntimeValues(String containerId, ImmutableMap<String, String> labels) {
159159
if (labels == null) {
160160
return null;
161161
}
@@ -166,9 +166,9 @@ protected Map<RuntimeValueKey, RuntimeValue> parseLabelsAsRuntimeValues(String c
166166
return null;
167167
}
168168

169-
Map<RuntimeValueKey, RuntimeValue> runtimeValues = new HashMap<>();
169+
Map<RuntimeValueKey<?>, RuntimeValue> runtimeValues = new HashMap<>();
170170

171-
for (RuntimeValueKey key : RuntimeValueKeyRegistry.getRuntimeValueKeys()) {
171+
for (RuntimeValueKey<?> key : RuntimeValueKeyRegistry.getRuntimeValueKeys()) {
172172
if (key.getIncludeAsLabel() || key.getIncludeAsAnnotation()) {
173173
String value = labels.get(key.getKeyAsLabel());
174174
if (value != null) {

src/main/java/eu/openanalytics/containerproxy/backend/docker/DockerEngineBackend.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ public List<ExistingContainerInfo> scanExistingContainers() throws Exception {
172172
continue; // not recovering stopped/broken apps
173173
}
174174

175-
Map<RuntimeValueKey, RuntimeValue> runtimeValues = parseLabelsAsRuntimeValues(container.id(), container.labels());
175+
Map<RuntimeValueKey<?>, RuntimeValue> runtimeValues = parseLabelsAsRuntimeValues(container.id(), container.labels());
176176
if (runtimeValues == null) {
177177
continue;
178178
}

src/main/java/eu/openanalytics/containerproxy/backend/docker/DockerSwarmBackend.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ public List<ExistingContainerInfo> scanExistingContainers() throws Exception {
205205
continue;
206206
}
207207

208-
Map<RuntimeValueKey, RuntimeValue> runtimeValues = parseLabelsAsRuntimeValues(containersInService.get(0).id(), containerSpec.labels());
208+
Map<RuntimeValueKey<?>, RuntimeValue> runtimeValues = parseLabelsAsRuntimeValues(containersInService.get(0).id(), containerSpec.labels());
209209
if (runtimeValues == null) {
210210
continue;
211211
}

src/main/java/eu/openanalytics/containerproxy/backend/kubernetes/KubernetesBackend.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ public List<ExistingContainerInfo> scanExistingContainers() {
524524
continue; // this isn't a container created by us
525525
}
526526

527-
Map<RuntimeValueKey, RuntimeValue> runtimeValues = parseLabelsAndAnnotationsAsRuntimeValues(containerId, labels, annotations);
527+
Map<RuntimeValueKey<?>, RuntimeValue> runtimeValues = parseLabelsAndAnnotationsAsRuntimeValues(containerId, labels, annotations);
528528
if (runtimeValues == null) {
529529
continue;
530530
}
@@ -553,7 +553,7 @@ public List<ExistingContainerInfo> scanExistingContainers() {
553553
return containers;
554554
}
555555

556-
private Map<RuntimeValueKey, RuntimeValue> parseLabelsAndAnnotationsAsRuntimeValues(String containerId,
556+
private Map<RuntimeValueKey<?>, RuntimeValue> parseLabelsAndAnnotationsAsRuntimeValues(String containerId,
557557
Map<String, String> labels,
558558
Map<String, String> annotations) {
559559

@@ -563,9 +563,9 @@ private Map<RuntimeValueKey, RuntimeValue> parseLabelsAndAnnotationsAsRuntimeVal
563563
return null;
564564
}
565565

566-
Map<RuntimeValueKey, RuntimeValue> runtimeValues = new HashMap<>();
566+
Map<RuntimeValueKey<?>, RuntimeValue> runtimeValues = new HashMap<>();
567567

568-
for (RuntimeValueKey key : RuntimeValueKeyRegistry.getRuntimeValueKeys()) {
568+
for (RuntimeValueKey<?> key : RuntimeValueKeyRegistry.getRuntimeValueKeys()) {
569569
if (key.getIncludeAsLabel()) {
570570
String value = labels.get(key.getKeyAsLabel());
571571
if (value != null) {

src/main/java/eu/openanalytics/containerproxy/model/runtime/ExistingContainerInfo.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
public class ExistingContainerInfo {
3232

3333
public ExistingContainerInfo(String containerId,
34-
Map<RuntimeValueKey, RuntimeValue> runtimeValues,
34+
Map<RuntimeValueKey<?>, RuntimeValue> runtimeValues,
3535
String image,
3636
Map<Integer, Integer> portBindings,
3737
Map<String, Object> parameters
@@ -45,7 +45,7 @@ public ExistingContainerInfo(String containerId,
4545
}
4646

4747
private final String containerId;
48-
private final Map<RuntimeValueKey, RuntimeValue> runtimeValues;
48+
private final Map<RuntimeValueKey<?>, RuntimeValue> runtimeValues;
4949
private final String image;
5050
private final Map<Integer, Integer> portBindings;
5151
private final Map<String, Object> parameters;
@@ -54,7 +54,7 @@ public String getContainerId() {
5454
return containerId;
5555
}
5656

57-
public Map<RuntimeValueKey, RuntimeValue> getRuntimeValues() {
57+
public Map<RuntimeValueKey<?>, RuntimeValue> getRuntimeValues() {
5858
return runtimeValues;
5959
}
6060

@@ -71,7 +71,7 @@ public Map<String, Object> getParameters() {
7171
return parameters;
7272
}
7373

74-
public RuntimeValue getRuntimeValue(RuntimeValueKey key) {
74+
public RuntimeValue getRuntimeValue(RuntimeValueKey<?> key) {
7575
return runtimeValues.get(key);
7676
}
7777

src/main/java/eu/openanalytics/containerproxy/model/runtime/Proxy.java

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.RuntimeValueKey;
2626
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.RuntimeValueKeyRegistry;
2727
import eu.openanalytics.containerproxy.model.spec.ProxySpec;
28-
import eu.openanalytics.containerproxy.model.spec.WebSocketReconnectionMode;
2928
import net.minidev.json.annotate.JsonIgnore;
3029

3130
import java.net.URI;
@@ -35,16 +34,6 @@
3534
import java.util.Map;
3635
import java.util.Objects;
3736

38-
import com.fasterxml.jackson.annotation.JsonProperty;
39-
import com.fasterxml.jackson.annotation.JsonTypeName;
40-
import com.fasterxml.jackson.databind.annotation.JsonNaming;
41-
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.RuntimeValue;
42-
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.RuntimeValueKey;
43-
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.RuntimeValueKeyRegistry;
44-
import eu.openanalytics.containerproxy.model.spec.ProxySpec;
45-
import eu.openanalytics.containerproxy.model.spec.WebSocketReconnectionMode;
46-
import net.minidev.json.annotate.JsonIgnore;
47-
4837
public class Proxy {
4938

5039
private String id;
@@ -56,12 +45,11 @@ public class Proxy {
5645
private long startupTimestamp;
5746
private long createdTimestamp;
5847
private String userId;
59-
private WebSocketReconnectionMode webSocketReconnectionMode;
60-
48+
6149
private List<Container> containers;
6250
private Map<String,URI> targets;
6351

64-
private Map<RuntimeValueKey, RuntimeValue> runtimeValues = new HashMap<>();
52+
private Map<RuntimeValueKey<?>, RuntimeValue> runtimeValues = new HashMap<>();
6553

6654
public Proxy() {
6755
containers = new ArrayList<>();
@@ -136,14 +124,6 @@ public void setTargets(Map<String, URI> targets) {
136124
this.targets = targets;
137125
}
138126

139-
public WebSocketReconnectionMode getWebSocketReconnectionMode() {
140-
return webSocketReconnectionMode;
141-
}
142-
143-
public void setWebSocketReconnectionMode(WebSocketReconnectionMode webSocketReconnectionMode) {
144-
this.webSocketReconnectionMode = webSocketReconnectionMode;
145-
}
146-
147127
@JsonProperty("runtimeValues")
148128
public Map<String, String> getRuntimeValuesJson() {
149129
// only output key<->value in JSON
@@ -155,11 +135,11 @@ public Map<String, String> getRuntimeValuesJson() {
155135
}
156136

157137
@JsonIgnore
158-
public Map<RuntimeValueKey, RuntimeValue> getRuntimeValues() {
138+
public Map<RuntimeValueKey<?>, RuntimeValue> getRuntimeValues() {
159139
return runtimeValues;
160140
}
161141

162-
public void setRuntimeValues(Map<RuntimeValueKey, RuntimeValue> runtimeValues) {
142+
public void setRuntimeValues(Map<RuntimeValueKey<?>, RuntimeValue> runtimeValues) {
163143
this.runtimeValues = runtimeValues;
164144
}
165145

@@ -177,7 +157,7 @@ public void addRuntimeValues(List<RuntimeValue> runtimeValues) {
177157
}
178158
}
179159

180-
public void addRuntimeValues(Map<RuntimeValueKey, RuntimeValue> runtimeValues) {
160+
public void addRuntimeValues(Map<RuntimeValueKey<?>, RuntimeValue> runtimeValues) {
181161
for (RuntimeValue runtimeValue: runtimeValues.values()) {
182162
addRuntimeValue(runtimeValue);
183163
}
@@ -191,7 +171,14 @@ public String getRuntimeValue(String keyAsEnvVar) {
191171
return getRuntimeValue(RuntimeValueKeyRegistry.getRuntimeValue(keyAsEnvVar));
192172
}
193173

194-
public String getRuntimeValue(RuntimeValueKey key) {
174+
public <T> T getRuntimeObject(RuntimeValueKey<T> key) {
175+
Objects.requireNonNull(key, "key may not be null");
176+
RuntimeValue runtimeValue = runtimeValues.get(key);
177+
Objects.requireNonNull(runtimeValue, "did not found a value for key " + key.getKeyAsEnvVar());
178+
return runtimeValue.getObject();
179+
}
180+
181+
public <T> String getRuntimeValue(RuntimeValueKey<T> key) {
195182
Objects.requireNonNull(key, "key may not be null");
196183
RuntimeValue runtimeValue = runtimeValues.get(key);
197184
Objects.requireNonNull(runtimeValue, "did not found a value for key " + key.getKeyAsEnvVar());

src/main/java/eu/openanalytics/containerproxy/model/runtime/runtimevalues/CreatedTimestampKey.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020
*/
2121
package eu.openanalytics.containerproxy.model.runtime.runtimevalues;
2222

23-
public class CreatedTimestampKey extends RuntimeValueKey {
23+
public class CreatedTimestampKey extends RuntimeValueKey<String> {
2424

2525
private CreatedTimestampKey() {
2626
super("openanalytics.eu/sp-proxy-created-timestamp",
2727
"SHINYPROXY_CREATED_TIMESTAMP",
2828
false,
2929
true,
3030
false,
31-
true);
31+
true, String.class);
3232
}
3333

3434
public static CreatedTimestampKey inst = new CreatedTimestampKey();

src/main/java/eu/openanalytics/containerproxy/model/runtime/runtimevalues/InstanceIdKey.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020
*/
2121
package eu.openanalytics.containerproxy.model.runtime.runtimevalues;
2222

23-
public class InstanceIdKey extends RuntimeValueKey {
23+
public class InstanceIdKey extends RuntimeValueKey<String> {
2424

2525
private InstanceIdKey() {
2626
super("openanalytics.eu/sp-instance",
2727
"SHINYPROXY_INSTANCE",
2828
true,
2929
false,
3030
false,
31-
true);
31+
true, String.class);
3232
}
3333

3434
public static InstanceIdKey inst = new InstanceIdKey();

src/main/java/eu/openanalytics/containerproxy/model/runtime/runtimevalues/ProxiedAppKey.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020
*/
2121
package eu.openanalytics.containerproxy.model.runtime.runtimevalues;
2222

23-
public class ProxiedAppKey extends RuntimeValueKey {
23+
public class ProxiedAppKey extends RuntimeValueKey<String> {
2424

2525
private ProxiedAppKey() {
2626
super("openanalytics.eu/sp-proxied-app",
2727
"SHINYPROXY_PROXIED_APP",
2828
true,
2929
false,
3030
false,
31-
true);
31+
true, String.class);
3232
}
3333

3434
public static ProxiedAppKey inst = new ProxiedAppKey();

src/main/java/eu/openanalytics/containerproxy/model/runtime/runtimevalues/ProxyIdKey.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020
*/
2121
package eu.openanalytics.containerproxy.model.runtime.runtimevalues;
2222

23-
public class ProxyIdKey extends RuntimeValueKey {
23+
public class ProxyIdKey extends RuntimeValueKey<String> {
2424

2525
private ProxyIdKey() {
2626
super("openanalytics.eu/sp-proxy-id",
2727
"SHINYPROXY_PROXY_ID",
2828
true,
2929
false,
3030
false,
31-
true);
31+
true, String.class);
3232
}
3333

3434
public static ProxyIdKey inst = new ProxyIdKey();

0 commit comments

Comments
 (0)