diff options
author | Kevin Smith <git@kismith.co.uk> | 2011-07-01 09:19:49 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2011-07-01 09:19:49 (GMT) |
commit | 2da71a8a85486a494343f1662d64fb5ae5a2a44e (patch) | |
tree | 23992f9f2a00bac23b345e5c2cc9c1194efc25be /src/com/isode/stroke/serializer/payloadserializers/ErrorSerializer.java | |
download | stroke-2da71a8a85486a494343f1662d64fb5ae5a2a44e.zip stroke-2da71a8a85486a494343f1662d64fb5ae5a2a44e.tar.bz2 |
Initial import
Diffstat (limited to 'src/com/isode/stroke/serializer/payloadserializers/ErrorSerializer.java')
-rw-r--r-- | src/com/isode/stroke/serializer/payloadserializers/ErrorSerializer.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/com/isode/stroke/serializer/payloadserializers/ErrorSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/ErrorSerializer.java new file mode 100644 index 0000000..9c34d53 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/ErrorSerializer.java @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2010, Isode Limited, London, England. + * All rights reserved. + */ +/* + * Copyright (c) 2010, Remko Tron¨on. + * All rights reserved. + */ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.elements.ErrorPayload; +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.xml.XMLTextNode; + +class ErrorSerializer extends GenericPayloadSerializer<ErrorPayload> { + + public ErrorSerializer() { + super(ErrorPayload.class); + } + + @Override + protected String serializePayload(ErrorPayload error) { + String result = "<error type=\""; + switch (error.getType()) { + case Continue: result += "continue"; break; + case Modify: result += "modify"; break; + case Auth: result += "auth"; break; + case Wait: result += "wait"; break; + default: result += "cancel"; break; + } + result += "\">"; + + String conditionElement; + switch (error.getCondition()) { + case BadRequest: conditionElement = "bad-request"; break; + case Conflict: conditionElement = "conflict"; break; + case FeatureNotImplemented: conditionElement = "feature-not-implemented"; break; + case Forbidden: conditionElement = "forbidden"; break; + case Gone: conditionElement = "gone"; break; + case InternalServerError: conditionElement = "internal-server-error"; break; + case ItemNotFound: conditionElement = "item-not-found"; break; + case JIDMalformed: conditionElement = "jid-malformed"; break; + case NotAcceptable: conditionElement = "not-acceptable"; break; + case NotAllowed: conditionElement = "not-allowed"; break; + case NotAuthorized: conditionElement = "not-authorized"; break; + case PaymentRequired: conditionElement = "payment-required"; break; + case RecipientUnavailable: conditionElement = "recipient-unavailable"; break; + case Redirect: conditionElement = "redirect"; break; + case RegistrationRequired: conditionElement = "registration-required"; break; + case RemoteServerNotFound: conditionElement = "remote-server-not-found"; break; + case RemoteServerTimeout: conditionElement = "remote-server-timeout"; break; + case ResourceConstraint: conditionElement = "resource-constraint"; break; + case ServiceUnavailable: conditionElement = "service-unavailable"; break; + case SubscriptionRequired: conditionElement = "subscription-required"; break; + case UnexpectedRequest: conditionElement = "unexpected-request"; break; + default: conditionElement = "undefined-condition"; break; + } + result += "<" + conditionElement + " xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>"; + + if (error.getText().length() != 0) { + XMLTextNode textNode = new XMLTextNode(error.getText()); + result += "<text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">" + textNode.serialize() + "</text>"; + } + + result += "</error>"; + return result; + } + +} |