package com.linkedin.databus.client.test; /* * * Copyright 2013 LinkedIn Corp. All rights reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ import java.util.ArrayList; import java.util.List; import org.apache.avro.Schema; import org.apache.log4j.Logger; import com.linkedin.databus.client.consumer.DelegatingDatabusCombinedConsumer; import com.linkedin.databus.client.pub.ConsumerCallbackResult; import com.linkedin.databus.client.pub.DatabusCombinedConsumer; import com.linkedin.databus.client.pub.DbusEventDecoder; import com.linkedin.databus.client.pub.SCN; import com.linkedin.databus.core.DbusEvent; public class CallbackTrackingDatabusConsumer extends DelegatingDatabusCombinedConsumer { final List<String> _callbacks = new ArrayList<String>(); String _lastCallback; public CallbackTrackingDatabusConsumer(DatabusCombinedConsumer delegate, Logger log) { super(delegate, log); } public List<String> getCallbacks() { return _callbacks; } public String getLastCallback() { return _lastCallback; } public void resetCallbacks() { _callbacks.clear(); _lastCallback = null; } void registerCallback(String cb) { _lastCallback = cb; _callbacks.add(cb); } @Override public ConsumerCallbackResult onStartConsumption() { registerCallback("onStartConsumption()"); return super.onStartConsumption(); } @Override public ConsumerCallbackResult onStopConsumption() { registerCallback("onStopConsumption()"); return super.onStopConsumption(); } @Override public ConsumerCallbackResult onStartDataEventSequence(SCN startScn) { registerCallback("onStartDataEventSequence(" + startScn + ")"); return super.onStartDataEventSequence(startScn); } @Override public ConsumerCallbackResult onEndDataEventSequence(SCN endScn) { registerCallback("onEndDataEventSequence(" + endScn + ")"); return super.onEndDataEventSequence(endScn); } @Override public ConsumerCallbackResult onRollback(SCN rollbackScn) { registerCallback("onRollback(" + rollbackScn + ")"); return super.onRollback(rollbackScn); } @Override public ConsumerCallbackResult onStartSource(String source, Schema sourceSchema) { registerCallback("onStartSource(" + source + ")"); return super.onStartSource(source, sourceSchema); } @Override public ConsumerCallbackResult onEndSource(String source, Schema sourceSchema) { registerCallback("onEndSource(" + source + ")"); return super.onEndSource(source, sourceSchema); } @Override public ConsumerCallbackResult onDataEvent(DbusEvent e, DbusEventDecoder eventDecoder) { registerCallback("onDataEvent(" + e + ")"); return super.onDataEvent(e, eventDecoder); } @Override public ConsumerCallbackResult onCheckpoint(SCN checkpointScn) { registerCallback("onCheckpoint(" + checkpointScn + ")"); return super.onCheckpoint(checkpointScn); } @Override public ConsumerCallbackResult onError(Throwable err) { registerCallback("onError(" + err.getClass().getName() + ":" + err.getMessage() + ")"); return super.onError(err); } @Override public ConsumerCallbackResult onStartBootstrap() { registerCallback("onStartBootstrap()"); return super.onStartBootstrap(); } @Override public ConsumerCallbackResult onStopBootstrap() { registerCallback("onStopBootstrap()"); return super.onStopBootstrap(); } @Override public ConsumerCallbackResult onStartBootstrapSequence(SCN startScn) { registerCallback("onStartBootstrapSequence(" + startScn + ")"); return super.onStartBootstrapSequence(startScn); } @Override public ConsumerCallbackResult onEndBootstrapSequence(SCN endScn) { registerCallback("onEndBootstrapSequence(" + endScn + ")"); return super.onEndBootstrapSequence(endScn); } @Override public ConsumerCallbackResult onStartBootstrapSource(String source, Schema sourceSchema) { registerCallback("onStartBootstrapSource(" + source + ")"); return super.onStartBootstrapSource(source, sourceSchema); } @Override public ConsumerCallbackResult onEndBootstrapSource(String source, Schema sourceSchema) { registerCallback("onEndBootstrapSource(" + source + ")"); return super.onEndBootstrapSource(source, sourceSchema); } @Override public ConsumerCallbackResult onBootstrapEvent(DbusEvent e, DbusEventDecoder eventDecoder) { registerCallback("onBootstrapEvent(" + e + ")"); return super.onBootstrapEvent(e, eventDecoder); } @Override public ConsumerCallbackResult onBootstrapRollback(SCN rollbackScn) { registerCallback("onBootstrapRollback(" + rollbackScn + ")"); return super.onBootstrapRollback(rollbackScn); } @Override public ConsumerCallbackResult onBootstrapCheckpoint(SCN checkpointScn) { registerCallback("onBootstrapCheckpoint(" + checkpointScn + ")"); return super.onBootstrapCheckpoint(checkpointScn); } @Override public ConsumerCallbackResult onBootstrapError(Throwable err) { registerCallback("onBootstrapError(" + err.getClass().getName() + ":" + err.getMessage() + ")"); return super.onBootstrapError(err); } }