X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=infra%2Ftranslate-impl%2Fsrc%2Fmain%2Fjava%2Fio%2Ffd%2Fhoneycomb%2Ftranslate%2Fimpl%2Fwrite%2FGenericListWriter.java;h=92467a8e8017ce083e21e1e43644785d44238fb1;hb=299ea091899183df220c3ae7943cd4ea53cf6ac3;hp=4e05ce018bd10dc0e0a7060ec28410eab53fdb66;hpb=1326e9fa5cffe326b82aeee9d82d008526aff947;p=honeycomb.git diff --git a/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/GenericListWriter.java b/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/GenericListWriter.java index 4e05ce018..92467a8e8 100644 --- a/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/GenericListWriter.java +++ b/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/GenericListWriter.java @@ -16,6 +16,8 @@ package io.fd.honeycomb.translate.impl.write; +import static io.fd.honeycomb.translate.impl.write.GenericWriter.isUpdateSupported; + import io.fd.honeycomb.translate.spi.write.ListWriterCustomizer; import io.fd.honeycomb.translate.util.RWUtils; import io.fd.honeycomb.translate.util.write.AbstractGenericWriter; @@ -39,7 +41,7 @@ public final class GenericListWriter, K e public GenericListWriter(@Nonnull final InstanceIdentifier type, @Nonnull final ListWriterCustomizer customizer) { - super(type); + super(type, isUpdateSupported(customizer)); this.customizer = customizer; } @@ -77,33 +79,27 @@ public final class GenericListWriter, K e @Override protected void writeCurrent(final InstanceIdentifier id, final D data, final WriteContext ctx) throws WriteFailedException { - // Make sure the key is present - if (isWildcarded(id)) { - super.writeCurrent(getSpecificId(id, data), data, ctx); - } else { - super.writeCurrent(id, data, ctx); - } + super.writeCurrent(getId(id, data), data, ctx); } @Override protected void updateCurrent(final InstanceIdentifier id, final D dataBefore, final D dataAfter, final WriteContext ctx) throws WriteFailedException { - // Make sure the key is present - if (isWildcarded(id)) { - super.updateCurrent(getSpecificId(id, dataBefore), dataBefore, dataAfter, ctx); - } else { - super.updateCurrent(id, dataBefore, dataAfter, ctx); - } + super.updateCurrent(getId(id, dataBefore), dataBefore, dataAfter, ctx); } @Override protected void deleteCurrent(final InstanceIdentifier id, final D dataBefore, final WriteContext ctx) throws WriteFailedException { + super.deleteCurrent(getId(id, dataBefore), dataBefore, ctx); + } + + private InstanceIdentifier getId(final InstanceIdentifier id, final D current) { // Make sure the key is present if (isWildcarded(id)) { - super.deleteCurrent(getSpecificId(id, dataBefore), dataBefore, ctx); + return getSpecificId(id, current); } else { - super.deleteCurrent(id, dataBefore, ctx); + return id; } }