package com.sissi.ucenter.relation.muc.apply.register; import com.mongodb.BasicDBObjectBuilder; import com.sissi.config.Dictionary; import com.sissi.config.MongoConfig; import com.sissi.context.JID; import com.sissi.context.JIDBuilder; import com.sissi.field.Fields; import com.sissi.protocol.iq.data.XField; import com.sissi.ucenter.relation.muc.apply.RequestConfig; /** * 拒绝更新个人信息请求(Information).索引策略:{"jid":1,"affiliations.jid":1} * * @author kim 2014年5月4日 */ public class MongoRegisterRejectContext extends RegisterApplyContext { private final MongoConfig config; private final JIDBuilder jidBuilder; public MongoRegisterRejectContext(MongoConfig config, JIDBuilder jidBuilder) { super("0"); this.config = config; this.jidBuilder = jidBuilder; } @Override public boolean apply(JID invoker, JID target, Fields fields) { JID jid = this.jidBuilder.build(fields.findField(RequestConfig.JID.toString(), XField.class).getValue().toString()); this.config.collection().update(BasicDBObjectBuilder.start().add(Dictionary.FIELD_JID, target.asStringWithBare()).add(Dictionary.FIELD_INFORMATIONS + "." + Dictionary.FIELD_JID, jid.asStringWithBare()).get(), BasicDBObjectBuilder.start("$pull", BasicDBObjectBuilder.start(Dictionary.FIELD_INFORMATIONS, BasicDBObjectBuilder.start(Dictionary.FIELD_JID, jid.asStringWithBare()).get()).get()).get()); return false; } }