package com.sissi.pipeline.in.iq.roster.get; import com.sissi.context.JID; import com.sissi.context.JIDContext; import com.sissi.pipeline.in.ProxyProcessor; import com.sissi.protocol.Protocol; import com.sissi.protocol.ProtocolType; import com.sissi.protocol.iq.roster.GroupItem; import com.sissi.protocol.iq.roster.Roster; import com.sissi.ucenter.relation.Relation; import com.sissi.ucenter.relation.roster.RosterRelation; import com.sissi.ucenter.vcard.VCardContext; /** * Roster列表 * * @author kim 2013-10-31 */ public class RosterGetProcessor extends ProxyProcessor { private final VCardContext vcardContext; public RosterGetProcessor(VCardContext vcardContext) { super(); this.vcardContext = vcardContext; } @Override public boolean input(JIDContext context, Protocol protocol) { context.write(this.prepare(context, protocol.cast(Roster.class).clear()).parent().reply().setType(ProtocolType.RESULT)); return false; } private Roster prepare(JIDContext context, Roster roster) { for (Relation each : super.myRelations(context.jid())) { JID to = super.build(each.jid()); roster.add(new GroupItem(each.cast(RosterRelation.class)).nickname(this.vcardContext.pull(to, VCardContext.FIELD_NICK).getValue(), to.user())); } return roster; } }