package com.sissi.ucenter.relation.muc.apply.impl;
import com.sissi.context.JID;
import com.sissi.field.Fields;
import com.sissi.protocol.iq.data.XDataType;
import com.sissi.protocol.iq.data.XField;
import com.sissi.protocol.iq.data.XFieldType;
import com.sissi.protocol.iq.data.XInput;
import com.sissi.ucenter.relation.muc.MucRelationContext;
import com.sissi.ucenter.relation.muc.apply.ApplySupport;
import com.sissi.ucenter.relation.muc.apply.RequestConfig;
/**
* 请求转发, Support永远返回True</p>Sample: <message to="last@conference.sissi.pw" xmlns:stream="http://etherx.jabber.org/streams"><x type="submit" xmlns="jabber:x:data"><field type="hidden" var="FORM_TYPE"><value>http://jabber.org/protocol/muc#request</value></field><field label="Requested role" type="text-single" var="muc#role"><value>participant</value></field></x></message>
*
* @author kim 2014年5月5日
*/
public class ForwardApplyContext implements ApplySupport {
private final XInput jid = new XInput(XFieldType.TEXT_SINGLE.toString(), "JID", RequestConfig.JID.toString());
private final XInput nick = new XInput(XFieldType.TEXT_SINGLE.toString(), "Nickname", RequestConfig.ROOMNICK.toString());
private final XInput allow = new XInput(XFieldType.BOOLEAN.toString(), "Allow", RequestConfig.REQUEST_ALLOW.toString(), Boolean.FALSE.toString());
private final MucRelationContext relationContext;
public ForwardApplyContext(MucRelationContext relationContext) {
super();
this.relationContext = relationContext;
}
@Override
public boolean apply(JID invoker, JID group, Fields fields) {
fields.add(this.jid.clone().value(invoker.asString())).add(this.nick.clone().value(this.relationContext.ourRelation(invoker, group).name())).add(this.allow);
fields.findField(XDataType.FORM_TYPE.toString(), XField.class).type(XFieldType.HIDDEN);
return true;
}
/*
* Support永远返回True
*
* @see com.sissi.ucenter.relation.muc.request.RequestSupport#support(com.sissi.field.Fields)
*/
@Override
public boolean support(Fields fields) {
return true;
}
}