package com.netflix.astyanax.contrib.dualwrites; import java.nio.ByteBuffer; import java.util.Date; import java.util.UUID; import com.netflix.astyanax.ColumnListMutation; import com.netflix.astyanax.Serializer; import com.netflix.astyanax.model.ColumnPath; /** * Class that implements the {@link ColumnListMutation} interface and acts as a dual router for capturing all the dual writes. * Note that it purely maintains state in 2 separate ColumnListMutation objects, each corresponding to the source of destination keyspace / mutation batches * * @author poberai * * @param <C> */ @SuppressWarnings("deprecation") public class DualWritesColumnListMutation<C> implements ColumnListMutation<C> { private final ColumnListMutation<C> primary; private final ColumnListMutation<C> secondary; public DualWritesColumnListMutation(ColumnListMutation<C> primaryClm, ColumnListMutation<C> secondaryClm) { primary = primaryClm; secondary = secondaryClm; } @Override public <V> ColumnListMutation<C> putColumn(C columnName, V value, Serializer<V> valueSerializer, Integer ttl) { primary.putColumn(columnName, value, valueSerializer, ttl); secondary.putColumn(columnName, value, valueSerializer, ttl); return this; } @Override public <V> ColumnListMutation<C> putColumnIfNotNull(C columnName, V value, Serializer<V> valueSerializer, Integer ttl) { primary.putColumnIfNotNull(columnName, value, valueSerializer, ttl); secondary.putColumnIfNotNull(columnName, value, valueSerializer, ttl); return this; } @Override public <SC> ColumnListMutation<SC> withSuperColumn(ColumnPath<SC> superColumnPath) { throw new RuntimeException("Not Implemented"); } @Override public ColumnListMutation<C> putColumn(C columnName, String value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, String value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, String value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, String value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putCompressedColumn(C columnName, String value, Integer ttl) { primary.putCompressedColumn(columnName, value, ttl); secondary.putCompressedColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putCompressedColumn(C columnName, String value) { primary.putCompressedColumn(columnName, value); secondary.putCompressedColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putCompressedColumnIfNotNull(C columnName, String value, Integer ttl) { primary.putCompressedColumnIfNotNull(columnName, value, ttl); secondary.putCompressedColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putCompressedColumnIfNotNull(C columnName, String value) { primary.putCompressedColumnIfNotNull(columnName, value); secondary.putCompressedColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, byte[] value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, byte[] value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, byte[] value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, byte[] value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, byte value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, byte value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Byte value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Byte value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, short value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, short value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Short value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Short value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, int value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, int value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Integer value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Integer value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, long value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, long value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Long value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Long value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, boolean value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, boolean value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Boolean value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Boolean value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, ByteBuffer value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, ByteBuffer value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, ByteBuffer value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, ByteBuffer value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, Date value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, Date value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Date value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Date value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, float value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, float value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Float value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Float value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, double value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, double value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Double value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, Double value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, UUID value, Integer ttl) { primary.putColumn(columnName, value, ttl); secondary.putColumn(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumn(C columnName, UUID value) { primary.putColumn(columnName, value); secondary.putColumn(columnName, value); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, UUID value, Integer ttl) { primary.putColumnIfNotNull(columnName, value, ttl); secondary.putColumnIfNotNull(columnName, value, ttl); return this; } @Override public ColumnListMutation<C> putColumnIfNotNull(C columnName, UUID value) { primary.putColumnIfNotNull(columnName, value); secondary.putColumnIfNotNull(columnName, value); return this; } @Override public ColumnListMutation<C> putEmptyColumn(C columnName, Integer ttl) { primary.putEmptyColumn(columnName, ttl); secondary.putEmptyColumn(columnName, ttl); return this; } @Override public ColumnListMutation<C> putEmptyColumn(C columnName) { primary.putEmptyColumn(columnName); secondary.putEmptyColumn(columnName); return this; } @Override public ColumnListMutation<C> incrementCounterColumn(C columnName, long amount) { primary.incrementCounterColumn(columnName, amount); secondary.incrementCounterColumn(columnName, amount); return this; } @Override public ColumnListMutation<C> deleteColumn(C columnName) { primary.deleteColumn(columnName); secondary.deleteColumn(columnName); return this; } @Override public ColumnListMutation<C> setTimestamp(long timestamp) { primary.setTimestamp(timestamp); secondary.setTimestamp(timestamp); return this; } @Override public ColumnListMutation<C> delete() { primary.delete(); secondary.delete(); return this; } @Override public ColumnListMutation<C> setDefaultTtl(Integer ttl) { primary.setDefaultTtl(ttl); secondary.setDefaultTtl(ttl); return this; } }