package cn.mutils.app.push;
import java.util.ArrayList;
import java.util.List;
import cn.mutils.app.os.ContextOwner;
import cn.mutils.core.json.JsonUtil;
/**
* Implements {@link IPushManager}
*/
@SuppressWarnings({"rawtypes", "unchecked", "UnusedAssignment"})
public class PushManager extends ContextOwner implements IPushManager {
protected List<Class<? extends IPushDispatcher<?>>> mDispatchers;
@Override
public void add(Class<? extends IPushDispatcher<?>> dispatcherClass) {
if (mDispatchers == null) {
mDispatchers = new ArrayList<Class<? extends IPushDispatcher<?>>>();
}
mDispatchers.add(dispatcherClass);
}
@Override
public void onMessage(String message) {
if (mDispatchers == null) {
return;
}
Object json = null;
try {
json = JsonUtil.fromString(message);
} catch (Exception e) {
return;
}
for (Class<? extends IPushDispatcher<?>> dispatcherClass : mDispatchers) {
IPushDispatcher dispatcher = null;
try {
dispatcher = JsonUtil.fromJson(json, dispatcherClass);
dispatcher.setManager(this);
if (!dispatcher.preTranslateMessage()) {
Object msg = dispatcher.translateMessage();
if (msg != null) {
dispatcher.onMessage(msg);
}
}
} catch (Exception e) {
// Exception
} finally {
if (dispatcher != null) {
dispatcher.setManager(null);
}
}
}
}
}