Package com.sissi.pipeline.in.iq.roster

Source Code of com.sissi.pipeline.in.iq.roster.RosterItemProcessor

package com.sissi.pipeline.in.iq.roster;

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.iq.roster.Group;
import com.sissi.protocol.iq.roster.GroupItem;
import com.sissi.protocol.iq.roster.Roster;
import com.sissi.protocol.iq.roster.RosterSubscription;

/**
* Roster名册推送
*
* @author kim 2013年12月12日
*/
abstract public class RosterItemProcessor extends ProxyProcessor {

  private final Group group;

  /**
   * @param group 默认Group
   */
  public RosterItemProcessor(Group group) {
    super();
    this.group = group;
  }

  @Override
  public boolean input(JIDContext context, Protocol protocol) {
    GroupItem item = protocol.cast(Roster.class).first();
    JID to = super.build(item.getJid());
    item.addOnEmpty(this.group).setAsk(this.ask()).setSubscription(this.subscription(context.jid(), to)).setJid(to.asStringWithBare());
    // Roster Set/Remove From必须=null
    super.broadcast(context.jid(), protocol.parent().setFrom((String) null));
    return true;
  }

  /**
   * 实现类是否附加ASK
   *
   * @return
   */
  abstract protected boolean ask();

  /**
   * 实现类附加的订阅关系
   *
   * @param master
   * @param slave
   * @return
   */
  abstract protected RosterSubscription subscription(JID master, JID slave);
}
TOP

Related Classes of com.sissi.pipeline.in.iq.roster.RosterItemProcessor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.