aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/com/juick
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/juick')
-rw-r--r--src/test/java/com/juick/tests/SerializationTests.java6
-rw-r--r--src/test/java/com/juick/xmpp/extensions/JuickMessage.java173
-rw-r--r--src/test/java/com/juick/xmpp/extensions/JuickUser.java78
3 files changed, 255 insertions, 2 deletions
diff --git a/src/test/java/com/juick/tests/SerializationTests.java b/src/test/java/com/juick/tests/SerializationTests.java
index 61b86c5f..022a1bc7 100644
--- a/src/test/java/com/juick/tests/SerializationTests.java
+++ b/src/test/java/com/juick/tests/SerializationTests.java
@@ -6,7 +6,6 @@ import com.juick.Message;
import com.juick.Tag;
import com.juick.User;
import com.juick.json.MessageSerializer;
-import com.juick.json.UserSerializer;
import com.juick.xmpp.extensions.JuickMessage;
import org.json.JSONObject;
import org.junit.Test;
@@ -14,7 +13,10 @@ import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
-import javax.xml.bind.*;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
diff --git a/src/test/java/com/juick/xmpp/extensions/JuickMessage.java b/src/test/java/com/juick/xmpp/extensions/JuickMessage.java
new file mode 100644
index 00000000..ae7fc89c
--- /dev/null
+++ b/src/test/java/com/juick/xmpp/extensions/JuickMessage.java
@@ -0,0 +1,173 @@
+/*
+ * Juick
+ * Copyright (C) 2008-2011, Ugnich Anton
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.juick.xmpp.extensions;
+
+import com.juick.Tag;
+import com.juick.util.DateFormattersHolder;
+import com.juick.xmpp.StanzaChild;
+import com.juick.xmpp.utils.XmlUtils;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.text.ParseException;
+
+/**
+ * @author Ugnich Anton
+ */
+public class JuickMessage extends com.juick.Message implements StanzaChild {
+ public final static String XMLNS = "http://juick.com/message";
+ public final static String TagName = "juick";
+
+ public JuickMessage() {
+ }
+
+ public JuickMessage(com.juick.Message msg) {
+ super(msg);
+ }
+
+ @Override
+ public String getXMLNS() {
+ return XMLNS;
+ }
+
+ @Override
+ public JuickMessage parse(XmlPullParser parser) throws XmlPullParserException, IOException, ParseException {
+ JuickMessage jmsg = new JuickMessage();
+
+ final String sMID = parser.getAttributeValue(null, "mid");
+ if (sMID != null) {
+ jmsg.setMid(Integer.parseInt(sMID));
+ }
+ final String sRID = parser.getAttributeValue(null, "rid");
+ if (sRID != null) {
+ jmsg.setRid(Integer.parseInt(sRID));
+ }
+ final String sReplyTo = parser.getAttributeValue(null, "replyto");
+ if (sReplyTo != null) {
+ jmsg.setReplyto(Integer.parseInt(sReplyTo));
+ }
+ final String sPrivacy = parser.getAttributeValue(null, "privacy");
+ if (sPrivacy != null) {
+ jmsg.setPrivacy(Integer.parseInt(sPrivacy));
+ }
+ final String sFriendsOnly = parser.getAttributeValue(null, "friendsonly");
+ if (sFriendsOnly != null) {
+ jmsg.FriendsOnly = true;
+ }
+ final String sReadOnly = parser.getAttributeValue(null, "readonly");
+ if (sReadOnly != null) {
+ jmsg.ReadOnly = true;
+ }
+ String ts = parser.getAttributeValue(null, "ts");
+ if (ts != null) {
+ jmsg.setDate(DateFormattersHolder.getMessageFormatterInstance().parse(ts));
+ }
+ jmsg.setAttachmentType(parser.getAttributeValue(null, "attach"));
+
+ while (parser.next() == XmlPullParser.START_TAG) {
+ final String tag = parser.getName();
+ final String xmlns = parser.getNamespace();
+ if (tag.equals("body")) {
+ jmsg.setText(XmlUtils.getTagText(parser));
+ } else if (tag.equals(JuickUser.TagName) && xmlns != null && xmlns.equals(JuickUser.XMLNS)) {
+ jmsg.setUser(new JuickUser().parse(parser));
+ } else if (tag.equals("tag")) {
+ jmsg.getTags().add(new Tag(XmlUtils.getTagText(parser)));
+ } else {
+ XmlUtils.skip(parser);
+ }
+ }
+ return jmsg;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+
+ builder.append("<").append(TagName).append(" xmlns=\"").append(XMLNS).append("\"");
+
+ if (getMid() > 0)
+ builder.append(" mid=\"").append(getMid()).append("\"");
+
+ if (getRid() > 0)
+ builder.append(" rid=\"").append(getRid()).append("\"");
+
+ if (getReplyto() > 0)
+ builder.append(" replyto=\"").append(getReplyto()).append("\"");
+
+ builder.append(" privacy=\"").append(getPrivacy()).append("\"");
+
+ if (FriendsOnly)
+ builder.append(" friendsonly=\"1\"");
+
+ if (ReadOnly)
+ builder.append(" readonly=\"1\"");
+
+ if (getDate() != null)
+ builder.append(" ts=\"")
+ .append(DateFormattersHolder.getMessageFormatterInstance().format(getDate()))
+ .append("\"");
+
+ if (getAttachmentType() != null)
+ builder.append(" attach=\"").append(getAttachmentType()).append("\"");
+
+ builder.append(">");
+
+ if (getUser() != null)
+ builder.append(JuickUser.toString(getUser()));
+
+ if (getText() != null)
+ builder.append("<body>").append(XmlUtils.escape(getText())).append("</body>");
+
+ for (com.juick.Tag tag : getTags())
+ builder.append("<tag>").append(XmlUtils.escape(tag.getName())).append("</tag>");
+
+ builder.append("</").append(TagName).append(">");
+
+ return builder.toString();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == this)
+ return true;
+
+ if (!(obj instanceof JuickMessage))
+ return false;
+
+ JuickMessage jmsg = (JuickMessage) obj;
+ return (this.getMid() == jmsg.getMid() && this.getRid() == jmsg.getRid());
+ }
+
+ @Override
+ public int compareTo(Object obj) throws ClassCastException {
+ if (obj == this)
+ return 0;
+
+ if (!(obj instanceof JuickMessage))
+ throw new ClassCastException();
+
+ JuickMessage jmsg = (JuickMessage) obj;
+ int cmp = Integer.compare(jmsg.getMid(), getMid());
+ if (cmp == 0)
+ cmp = Integer.compare(getRid(), jmsg.getRid());
+
+ return cmp;
+ }
+}
diff --git a/src/test/java/com/juick/xmpp/extensions/JuickUser.java b/src/test/java/com/juick/xmpp/extensions/JuickUser.java
new file mode 100644
index 00000000..08e38c41
--- /dev/null
+++ b/src/test/java/com/juick/xmpp/extensions/JuickUser.java
@@ -0,0 +1,78 @@
+/*
+ * Juick
+ * Copyright (C) 2008-2011, Ugnich Anton
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.juick.xmpp.extensions;
+
+import com.juick.xmpp.StanzaChild;
+import com.juick.xmpp.utils.XmlUtils;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+
+/**
+ * @author Ugnich Anton
+ */
+public class JuickUser extends com.juick.User implements StanzaChild {
+ public final static String XMLNS = "http://juick.com/user";
+ public final static String TagName = "user";
+
+ public JuickUser() {
+ }
+
+ public JuickUser(com.juick.User user) {
+ super(user);
+ }
+
+ @Override
+ public String getXMLNS() {
+ return XMLNS;
+ }
+
+ @Override
+ public JuickUser parse(final XmlPullParser parser) throws XmlPullParserException, IOException {
+ JuickUser juser = new JuickUser();
+ String strUID = parser.getAttributeValue(null, "uid");
+ if (strUID != null) {
+ juser.setUid(Integer.parseInt(strUID));
+ }
+ juser.setName(parser.getAttributeValue(null, "uname"));
+ XmlUtils.skip(parser);
+ return juser;
+ }
+
+ public static String toString(com.juick.User user) {
+ StringBuilder builder = new StringBuilder();
+
+ builder.append("<").append(TagName).append(" xmlns='").append(XMLNS).append("'");
+
+ if (user.getUid() > 0)
+ builder.append(" uid='").append(user.getUid()).append("'");
+
+ if (user.getName() != null && user.getName().length() > 0)
+ builder.append(" uname='").append(XmlUtils.escape(user.getName())).append("'");
+
+ builder.append("/>");
+
+ return builder.toString();
+ }
+
+ @Override
+ public String toString() {
+ return toString(this);
+ }
+}