Skip to content

Commit a77e556

Browse files
committed
improve defaults subtraction
1 parent 351a6ec commit a77e556

File tree

6 files changed

+14
-22
lines changed

6 files changed

+14
-22
lines changed

xtraplatform-entities/src/main/java/de/ii/xtraplatform/entities/app/EntityDataDefaultsStoreImpl.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -271,10 +271,7 @@ private List<Identifier> getCacheKeys(
271271

272272
@Override
273273
public Map<String, Object> subtractDefaults(
274-
Identifier identifier,
275-
Optional<String> subType,
276-
Map<String, Object> data,
277-
List<String> ignoreKeys) {
274+
Identifier identifier, Optional<String> subType, Map<String, Object> data) {
278275

279276
Identifier defaultsIdentifier = EntityDataStore.defaults(identifier, subType);
280277

@@ -287,9 +284,10 @@ public Map<String, Object> subtractDefaults(
287284
Map<String, Object> defaults =
288285
valueEncodingMap.deserialize(
289286
defaultsIdentifier, payload, valueEncodingBuilder.getDefaultFormat(), false);
287+
EntityFactory factory = getFactory(defaultsIdentifier);
290288

291289
return MapSubtractor.subtract(
292-
data, defaults, ignoreKeys, getFactory(defaultsIdentifier).getListEntryKeys());
290+
data, defaults, factory.getIgnoreKeys(), factory.getListEntryKeys());
293291

294292
} catch (Throwable e) {
295293
boolean br = true;

xtraplatform-entities/src/main/java/de/ii/xtraplatform/entities/app/EntityDataStoreImpl.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
package de.ii.xtraplatform.entities.app;
99

1010
import com.github.azahnen.dagger.annotations.AutoBind;
11-
import com.google.common.collect.ImmutableList;
1211
import com.google.common.collect.Maps;
1312
import com.google.common.collect.ObjectArrays;
1413
import com.google.common.util.concurrent.MoreExecutors;
@@ -592,8 +591,7 @@ public CompletableFuture<EntityData> put(String id, EntityData data, String... p
592591
Map<String, Object> map = asMap(identifier, data);
593592

594593
Map<String, Object> withoutDefaults =
595-
defaultsStore.subtractDefaults(
596-
identifier, data.getEntitySubType(), map, ImmutableList.of());
594+
defaultsStore.subtractDefaults(identifier, data.getEntitySubType(), map);
597595

598596
return getEventSourcing()
599597
.pushPartialMutationEvent(identifier, withoutDefaults)
@@ -645,8 +643,7 @@ public CompletableFuture<EntityData> patch(
645643

646644
// TODO: I guess the correct way to define ignoreKeys would be in EntityFactory
647645
Map<String, Object> withoutDefaults =
648-
defaultsStore.subtractDefaults(
649-
identifier, merged.getEntitySubType(), map, ImmutableList.of("enabled"));
646+
defaultsStore.subtractDefaults(identifier, merged.getEntitySubType(), map);
650647

651648
Map<String, Object> withoutResetted =
652649
MapAligner.align(

xtraplatform-entities/src/main/java/de/ii/xtraplatform/entities/app/MapSubtractor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,12 @@ public static Map<String, Object> subtract(
5656
for (String key : data.keySet()) {
5757
if (ignoreKeys.contains(key)) {
5858
result.put(key, data.get(key));
59+
continue;
5960
}
6061

6162
if (newEntries.containsKey(key)) {
6263
result.put(key, newEntries.get(key));
64+
continue;
6365
}
6466

6567
if (differingEntries.containsKey(key)) {

xtraplatform-entities/src/main/java/de/ii/xtraplatform/entities/domain/EntityDataDefaultsStore.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
import de.ii.xtraplatform.values.domain.Identifier;
1111
import java.io.IOException;
12-
import java.util.List;
1312
import java.util.Map;
1413
import java.util.Optional;
1514
import java.util.concurrent.CompletableFuture;
@@ -18,10 +17,7 @@ public interface EntityDataDefaultsStore extends MergeableKeyValueStore<Map<Stri
1817
String EVENT_TYPE = "defaults";
1918

2019
Map<String, Object> subtractDefaults(
21-
Identifier identifier,
22-
Optional<String> subType,
23-
Map<String, Object> data,
24-
List<String> ignoreKeys);
20+
Identifier identifier, Optional<String> subType, Map<String, Object> data);
2521

2622
Map<String, Object> asMap(Identifier identifier, EntityData entityData) throws IOException;
2723

xtraplatform-entities/src/main/java/de/ii/xtraplatform/entities/domain/EntityFactory.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package de.ii.xtraplatform.entities.domain;
99

1010
import com.github.azahnen.dagger.annotations.AutoMultiBind;
11+
import java.util.List;
1112
import java.util.Map;
1213
import java.util.Optional;
1314
import java.util.Set;
@@ -77,6 +78,10 @@ default Map<String, String> getListEntryKeys() {
7778
return Map.of();
7879
}
7980

81+
default List<String> getIgnoreKeys() {
82+
return List.of("enabled");
83+
}
84+
8085
void addEntityListener(Consumer<PersistentEntity> listener, boolean existing);
8186

8287
void addEntityGoneListener(Consumer<PersistentEntity> listener);

xtraplatform-entities/src/main/java/de/ii/xtraplatform/entities/domain/maptobuilder/BuildableMap.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,15 @@ public abstract static class Builder {}
2424

2525
@Value.Derived
2626
Map<String, T> getDelegate() {
27-
return /*Stream.concat(
28-
getInstances().entrySet()
29-
.stream(),
30-
*/ getBuilders().entrySet().stream()
27+
return getBuilders().entrySet().stream()
3128
.map(
3229
entry ->
3330
new AbstractMap.SimpleImmutableEntry<>(entry.getKey(), entry.getValue().build()))
34-
// )
3531
.collect(ImmutableMap.toImmutableMap(Map.Entry::getKey, Map.Entry::getValue));
3632
}
3733

3834
abstract Map<String, U> getBuilders();
3935

40-
// abstract Map<String, T> getInstances();
41-
4236
@Override
4337
protected Map<String, T> delegate() {
4438
return getDelegate();

0 commit comments

Comments
 (0)