Skip to content

Commit

Permalink
JNG-1110 Allowing null value in attributes and immutable behaviour is…
Browse files Browse the repository at this point in the history
… removed from collections (to be consistent)
  • Loading branch information
robertcsakany committed Feb 28, 2020
1 parent 5e3f9ed commit ff7b104
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 38 deletions.
116 changes: 80 additions & 36 deletions src/main/java/hu/blackbelt/judo/dao/api/Payload.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.google.common.collect.ImmutableMap;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public interface Payload extends Map<String, Object> {
Expand All @@ -21,102 +22,145 @@ static Payload map(String k1, Object v1) {
}

static Payload map(String k1, Object v1, String k2, Object v2) {
return asPayload(ImmutableMap.of(k1, v1, k2, v2));
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); }});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3) {
return asPayload(ImmutableMap.of(k1, v1, k2, v2, k3, v3));
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4) {
return asPayload(ImmutableMap.of(k1, v1, k2, v2, k3, v3, k4, v4));
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5) {
return asPayload(ImmutableMap.of(k1, v1, k2, v2, k3, v3, k4, v4, k5, v5));

return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6) {
return asPayload(ImmutableMap.<String, Object>builder()
.put(k1, v1).put(k2, v2).put(k3, v3).put(k4, v4).put(k5, v5).put(k6, v6).build());
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7) {
return asPayload(ImmutableMap.<String, Object>builder()
.put(k1, v1).put(k2, v2).put(k3, v3).put(k4, v4).put(k5, v5).put(k6, v6)
.put(k7, v7).build());
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8) {
return asPayload(ImmutableMap.<String, Object>builder()
.put(k1, v1).put(k2, v2).put(k3, v3).put(k4, v4).put(k5, v5).put(k6, v6)
.put(k7, v7).put(k8, v8).build());
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9) {
return asPayload(ImmutableMap.<String, Object>builder()
.put(k1, v1).put(k2, v2).put(k3, v3).put(k4, v4).put(k5, v5).put(k6, v6)
.put(k7, v7).put(k8, v8).put(k9, v9).build());
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9, String k10, Object v10) {
return asPayload(ImmutableMap.<String, Object>builder()
.put(k1, v1).put(k2, v2).put(k3, v3).put(k4, v4).put(k5, v5).put(k6, v6)
.put(k7, v7).put(k8, v8).put(k9, v9).put(k10, v10).build());
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9); put(k10, v10);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9, String k10, Object v10, String k11, Object v11) {
return asPayload(ImmutableMap.<String, Object>builder()
.put(k1, v1).put(k2, v2).put(k3, v3).put(k4, v4).put(k5, v5).put(k6, v6)
.put(k7, v7).put(k8, v8).put(k9, v9).put(k10, v10).put(k11, v11).build());
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9); put(k10, v10); put(k11, v11);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9, String k10, Object v10, String k11, Object v11, String k12, Object v12) {
return asPayload(ImmutableMap.<String, Object>builder()
.put(k1, v1).put(k2, v2).put(k3, v3).put(k4, v4).put(k5, v5).put(k6, v6)
.put(k7, v7).put(k8, v8).put(k9, v9).put(k10, v10).put(k11, v11).put(k12, v12).build());
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9); put(k10, v10); put(k11, v11); put(k12, v12);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9, String k10, Object v10, String k11, Object v11, String k12, Object v12,
String k13, Object v13) {
return asPayload(ImmutableMap.<String, Object>builder()
.put(k1, v1).put(k2, v2).put(k3, v3).put(k4, v4).put(k5, v5).put(k6, v6)
.put(k7, v7).put(k8, v8).put(k9, v9).put(k10, v10).put(k11, v11).put(k12, v12)
.put(k13, v13).build());
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9); put(k10, v10); put(k11, v11); put(k12, v12);
put(k13, v13);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9, String k10, Object v10, String k11, Object v11, String k12, Object v12,
String k13, Object v13, String k14, Object v14) {
return asPayload(ImmutableMap.<String, Object>builder()
.put(k1, v1).put(k2, v2).put(k3, v3).put(k4, v4).put(k5, v5).put(k6, v6)
.put(k7, v7).put(k8, v8).put(k9, v9).put(k10, v10).put(k11, v11).put(k12, v12)
.put(k13, v13).put(k13, v13).put(k14, v14).build());
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9); put(k10, v10); put(k11, v11); put(k12, v12);
put(k13, v13); put(k14, v14);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9, String k10, Object v10, String k11, Object v11, String k12, Object v12,
String k13, Object v13, String k14, Object v14, String k15, Object v15) {
return asPayload(ImmutableMap.<String, Object>builder()
.put(k1, v1).put(k2, v2).put(k3, v3).put(k4, v4).put(k5, v5).put(k6, v6)
.put(k7, v7).put(k8, v8).put(k9, v9).put(k10, v10).put(k11, v11).put(k12, v12)
.put(k13, v13).put(k13, v13).put(k14, v14).put(k15, v15).build());
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9); put(k10, v10); put(k11, v11); put(k12, v12);
put(k13, v13); put(k14, v14); put(k15, v15);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9, String k10, Object v10, String k11, Object v11, String k12, Object v12,
String k13, Object v13, String k14, Object v14, String k15, Object v15, String k16, Object v16) {
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9); put(k10, v10); put(k11, v11); put(k12, v12);
put(k13, v13); put(k14, v14); put(k15, v15); put(k16, v16);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9, String k10, Object v10, String k11, Object v11, String k12, Object v12,
String k13, Object v13, String k14, Object v14, String k15, Object v15, String k16, Object v16,
String k17, Object v17) {
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9); put(k10, v10); put(k11, v11); put(k12, v12);
put(k13, v13); put(k14, v14); put(k15, v15); put(k16, v16); put(k17, v17);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9, String k10, Object v10, String k11, Object v11, String k12, Object v12,
String k13, Object v13, String k14, Object v14, String k15, Object v15, String k16, Object v16,
String k17, Object v17, String k18, Object v18) {
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9); put(k10, v10); put(k11, v11); put(k12, v12);
put(k13, v13); put(k14, v14); put(k15, v15); put(k16, v16); put(k17, v17); put(k18, v18);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9, String k10, Object v10, String k11, Object v11, String k12, Object v12,
String k13, Object v13, String k14, Object v14, String k15, Object v15, String k16, Object v16,
String k17, Object v17, String k18, Object v18, String k19, Object v19) {
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9); put(k10, v10); put(k11, v11); put(k12, v12);
put(k13, v13); put(k14, v14); put(k15, v15); put(k16, v16); put(k17, v17); put(k18, v18); put(k19, v19);}});
}

static Payload map(String k1, Object v1, String k2, Object v2, String k3, Object v3, String k4, Object v4,
String k5, Object v5, String k6, Object v6, String k7, Object v7, String k8, Object v8,
String k9, Object v9, String k10, Object v10, String k11, Object v11, String k12, Object v12,
String k13, Object v13, String k14, Object v14, String k15, Object v15, String k16, Object v16,
String k17, Object v17, String k18, Object v18, String k19, Object v19, String k20, Object v20) {
return asPayload(new HashMap<String, Object>() {{ put(k1, v1); put(k2, v2); put(k3, v3); put(k4, v4);
put(k5, v5); put(k6, v6); put(k7, v7); put(k8, v8); put(k9, v9); put(k10, v10); put(k11, v11); put(k12, v12);
put(k13, v13); put(k14, v14); put(k15, v15); put(k16, v16); put(k17, v17); put(k18, v18); put(k19, v19);
put(k20, v20);}});
}

Payload getAsPayload(String name);
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/hu/blackbelt/judo/dao/api/PayloadImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ public PayloadImpl(Map<String, Object> map) {
for (String key : new TreeSet<String>(map.keySet())) {
Object value = map.get(key);
if (value instanceof List) {
this.internal.put(key, ImmutableList.copyOf((List<Map<String, Object>>) value).stream().map(
this.internal.put(key, ((List<Map<String, Object>>) value).stream().map(
e -> asPayload(e)).collect(Collectors.toList()));
} else if (value instanceof Collection) {
this.internal.put(key, ImmutableSet.copyOf((Collection<Map<String, Object>>) value).stream().map(
this.internal.put(key, ((Collection<Map<String, Object>>) value).stream().map(
e -> asPayload(e)).collect(Collectors.toSet()));
} else if (value instanceof Map) {
this.internal.put(key, asPayload((Map<String, Object>) value));
Expand Down
9 changes: 9 additions & 0 deletions src/test/java/hu/blackbelt/judo/dao/api/PayloadImplTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,13 @@ public void testPayloadFromMap() {

}

@Test
public void testPayloadStatic() {
Payload payload = Payload.map("k1", null, "k2", "string");
assertThat(payload, isA(Payload.class));
assertThat(payload.getAs(String.class, "k1"), equalTo(null));
assertThat(payload.getAs(String.class, "k2"), equalTo("string"));
}


}

0 comments on commit ff7b104

Please sign in to comment.