/** * Get the expected high {@link Watermark}. A default {@link Gson} object will be used to deserialize the watermark. * * @param watermarkClass the watermark class for this {@code WorkUnit}. * @return the expected high watermark in this {@code WorkUnit}. */ public <T extends Watermark> T getExpectedHighWatermark(Class<T> watermarkClass) { return getExpectedHighWatermark(watermarkClass, GSON); }
/** * Get the expected high {@link Watermark}. * * @param watermarkClass the watermark class for this {@code WorkUnit}. * @param gson a {@link Gson} object used to deserialize the watermark. * @return the expected high watermark in this {@code WorkUnit}. */ public <T extends Watermark> T getExpectedHighWatermark(Class<T> watermarkClass, Gson gson) { JsonElement json = getExpectedHighWatermark(); if (json == null) { return null; } return gson.fromJson(json, watermarkClass); }
@Override public void setActualHighWatermark(WorkUnitState wus) { wus.setActualHighWatermark(wus.getWorkunit().getExpectedHighWatermark(LongWatermark.class)); }
/** * Sets the actual high watermark by reading the expected high watermark * {@inheritDoc} * @see gobblin.data.management.conversion.hive.watermarker.HiveSourceWatermarker#setActualHighWatermark(gobblin.configuration.WorkUnitState) */ @Override public void setActualHighWatermark(WorkUnitState wus) { if (Boolean.valueOf(wus.getPropAsBoolean(IS_WATERMARK_WORKUNIT_KEY))) { wus.setActualHighWatermark(wus.getWorkunit().getExpectedHighWatermark(MultiKeyValueLongWatermark.class)); } else { wus.setActualHighWatermark(wus.getWorkunit().getExpectedHighWatermark(LongWatermark.class)); } }