diff options
Diffstat (limited to 'src/com/isode/stroke/queries/GenericRequest.java')
-rw-r--r-- | src/com/isode/stroke/queries/GenericRequest.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/com/isode/stroke/queries/GenericRequest.java b/src/com/isode/stroke/queries/GenericRequest.java new file mode 100644 index 0000000..cfbfb52 --- /dev/null +++ b/src/com/isode/stroke/queries/GenericRequest.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2010, 2011 Isode Limited, London, England. + * All rights reserved. + */ +/* + * Copyright (c) 2010, Remko Tron¨on. + * All rights reserved. + */ + +package com.isode.stroke.queries; + +import com.isode.stroke.elements.ErrorPayload; +import com.isode.stroke.elements.IQ; +import com.isode.stroke.elements.Payload; +import com.isode.stroke.jid.JID; +import com.isode.stroke.signals.Signal2; + +/** + * IQ Request for standard payload. + */ +public class GenericRequest<T extends Payload> extends Request { + + public Signal2<T, ErrorPayload> onResponse = new Signal2<T, ErrorPayload>(); + + public GenericRequest(IQ.Type type, JID receiver, Payload payload, IQRouter router) { + super(type, receiver, payload, router); + } + + @Override + protected void handleResponse(Payload payload, ErrorPayload error) { + T genericPayload = null; + try { + genericPayload = (T)payload; + } catch (Exception ex) { + /* This isn't legal XMPP, so treat as NULL.*/ + } + onResponse.emit(genericPayload, error); + } + + protected T getPayloadGeneric() { + return (T)getPayload(); + } + +} |