package com.erdaoya.springcloud.comx.schema.onError;
import com.erdaoya.springcloud.comx.utils.config.ConfigException;
import com.erdaoya.springcloud.comx.context.Context;
import com.erdaoya.springcloud.comx.schema.datadecor.DecorException;
import com.erdaoya.springcloud.comx.source.SourceException;
import com.erdaoya.springcloud.comx.utils.config.Config;
/**
* Created by xue on 1/12/17.
*/
public abstract class Strategy {
public static Strategy fromConf(Config config) throws StrategyException {
String type = config.str("type", "fail");
switch (type) {
case "ignore": return IgnoreStrategy.getInstance();
case "fail": return FailStrategy.getInstance();
case "byDefault": return new ByDefaultStrategy(config);
default: throw new StrategyException("unkown strategy, type:" + type);
}
}
abstract public Object handleSourceException(Exception ex, Context context) throws Exception;
abstract public Object handleDecorException(Exception ex, Context context, Object data) throws ConfigException, SourceException, DecorException;
}