package com.voxeo.moho.xmpp; import java.io.IOException; import org.w3c.dom.Element; import com.voxeo.moho.Framework; import com.voxeo.moho.SignalException; import com.voxeo.servlet.xmpp.IQRequest; import com.voxeo.servlet.xmpp.IQResponse; public class XMPPIQEventImpl extends XMPPEventImpl implements XMPPIQEvent { protected boolean _rejected = false; protected boolean _accepted = false; public XMPPIQEventImpl(Framework framework, IQRequest request) { super(framework, request); } @Override public synchronized boolean isAccepted() { return _accepted; } @Override public synchronized boolean isRejected() { return _rejected; } @Override public void accept() throws SignalException { accept(null); } @Override public synchronized void reject(Reason reason, String text) { _rejected = true; IQRequest request = (IQRequest) _request; try { IQResponse reponse = request.createError(Reason.BAD_REQUEST.getErrorType(), Reason.BAD_REQUEST.getCondition(), text); reponse.send(); } catch (IOException e) { throw new SignalException(e); } } @Override public void reject(Reason reason) { reject(reason, null); } @Override public synchronized void accept(Element... elem) { _accepted = true; IQRequest request = (IQRequest) _request; try { IQResponse reponse = request.createResult(elem); reponse.send(); } catch (IOException e) { throw new SignalException(e); } } @Override public boolean isProcessed() { return isAccepted() || isRejected(); } }