package com.sissi.pipeline.in.iq.register.store; import com.sissi.context.JIDContext; import com.sissi.field.Fields; import com.sissi.pipeline.Input; import com.sissi.protocol.Protocol; import com.sissi.protocol.iq.register.Register; import com.sissi.ucenter.register.RegisterContext; /** * @author kim 2013年12月5日 */ abstract class RegisterStoreProcessor implements Input { private final RegisterContext registerContext; private final Input proxy; /** * @param registerContext * @param proxy 提交完成后的回调Input */ public RegisterStoreProcessor(RegisterContext registerContext, Input proxy) { super(); this.proxy = proxy; this.registerContext = registerContext; } @Override public boolean input(JIDContext context, Protocol protocol) { Register register = protocol.cast(Register.class); return this.registerContext.register(this.username(register), this.process(register)) ? true : this.proxy.input(context, protocol.parent()); } abstract protected Fields process(Fields fields); abstract protected String username(Fields fields); }