package com.sissi.pipeline.in.message.muc.subject; import com.sissi.context.JIDBuilder; import com.sissi.pipeline.in.ClassMatcher; import com.sissi.protocol.Protocol; import com.sissi.protocol.message.Message; import com.sissi.protocol.message.MessageType; /** * 匹配JID.bare && Message.subject && !Message.body * * @author kim 2014年3月6日 */ public class MessageMuc2SubjectMatcher extends ClassMatcher { private final JIDBuilder jidBuilder; private final boolean smart; public MessageMuc2SubjectMatcher(JIDBuilder jidBuilder, boolean smart) { super(Message.class); this.jidBuilder = jidBuilder; this.smart = smart; } public boolean match(Protocol protocol) { return super.match(protocol) && this.jidBuilder.build(protocol.getTo()).isBare() && this.subject(protocol.cast(Message.class)) && this.groupchat(protocol); } private boolean subject(Message message) { return message.subject() && !message.body(); } private boolean groupchat(Protocol protocol) { if (this.smart) { protocol.setType(MessageType.GROUPCHAT.toString()); } return true; } }