1 52 53 package org.jivesoftware.smackx.packet; 54 55 import java.util.*; 56 57 import org.jivesoftware.smack.*; 58 import org.jivesoftware.smack.filter.*; 59 import org.jivesoftware.smack.packet.*; 60 import org.jivesoftware.smack.test.SmackTestCase; 61 62 67 public class XHTMLExtensionTest extends SmackTestCase { 68 69 private int bodiesSent; 70 private int bodiesReceived; 71 72 76 public XHTMLExtensionTest(String name) { 77 super(name); 78 } 79 80 85 public void testSendSimpleXHTMLMessage() { 86 Chat chat1 = getConnection(0).createChat(getBareJID(1)); 88 89 Message msg = chat1.createMessage(); 91 msg.setSubject("Any subject you want"); 92 msg.setBody("Hey John, this is my new green!!!!"); 93 XHTMLExtension xhtmlExtension = new XHTMLExtension(); 95 xhtmlExtension.addBody( 96 "<body><p style='font-size:large'>Hey John, this is my new <span style='color:green'>green</span><em>!!!!</em></p></body>"); 97 msg.addExtension(xhtmlExtension); 98 99 try { 101 chat1.sendMessage(msg); 102 Thread.sleep(200); 103 } 104 catch (Exception e) { 105 fail("An error occured sending the message with XHTML"); 106 } 107 } 108 109 117 public void testSendSimpleXHTMLMessageAndDisplayReceivedXHTMLMessage() { 118 Chat chat1 = getConnection(0).createChat(getBareJID(1)); 120 final Chat chat2 = new Chat(getConnection(1), getBareJID(0), chat1.getThreadID()); 121 122 PacketFilter packetFilter = 126 new PacketExtensionFilter("html", "http://jabber.org/protocol/xhtml-im"); 127 PacketListener packetListener = new PacketListener() { 128 public void processPacket(Packet packet) { 129 Message message = (Message) packet; 130 assertNotNull("Body is null", message.getBody()); 131 try { 132 XHTMLExtension xhtmlExtension = 133 (XHTMLExtension) message.getExtension( 134 "html", 135 "http://jabber.org/protocol/xhtml-im"); 136 assertNotNull( 137 "Message without extension \"http://jabber.org/protocol/xhtml-im\"", 138 xhtmlExtension); 139 assertTrue("Message without XHTML bodies", xhtmlExtension.getBodiesCount() > 0); 140 for (Iterator it = xhtmlExtension.getBodies(); it.hasNext();) { 141 String body = (String ) it.next(); 142 System.out.println(body); 143 } 144 } 145 catch (ClassCastException e) { 146 fail("ClassCastException - Most probable cause is that smack providers is misconfigured"); 147 } 148 try { 149 chat2.sendMessage("ok"); 150 } 151 catch (Exception e) { 152 fail("An error occured sending ack " + e.getMessage()); 153 } 154 } 155 }; 156 getConnection(1).addPacketListener(packetListener, packetFilter); 157 158 Message msg = chat1.createMessage(); 160 msg.setSubject("Any subject you want"); 161 msg.setBody("Hey John, this is my new green!!!!"); 162 XHTMLExtension xhtmlExtension = new XHTMLExtension(); 164 xhtmlExtension.addBody( 165 "<body><p style='font-size:large'>Hey John, this is my new <span style='color:green'>green</span><em>!!!!</em></p></body>"); 166 msg.addExtension(xhtmlExtension); 167 168 try { 170 chat1.sendMessage(msg); 171 } 172 catch (Exception e) { 173 fail("An error occured sending the message with XHTML"); 174 } 175 msg = chat1.nextMessage(1000); 177 assertNotNull("No reply received", msg); 178 } 179 180 188 public void testSendComplexXHTMLMessageAndDisplayReceivedXHTMLMessage() { 189 Chat chat1 = getConnection(0).createChat(getBareJID(1)); 191 final Chat chat2 = new Chat(getConnection(1), getBareJID(0), chat1.getThreadID()); 192 193 PacketFilter packetFilter = 197 new PacketExtensionFilter("html", "http://jabber.org/protocol/xhtml-im"); 198 PacketListener packetListener = new PacketListener() { 199 public void processPacket(Packet packet) { 200 int received = 0; 201 Message message = (Message) packet; 202 assertNotNull("Body is null", message.getBody()); 203 try { 204 XHTMLExtension xhtmlExtension = 205 (XHTMLExtension) message.getExtension( 206 "html", 207 "http://jabber.org/protocol/xhtml-im"); 208 assertNotNull( 209 "Message without extension \"http://jabber.org/protocol/xhtml-im\"", 210 xhtmlExtension); 211 assertTrue("Message without XHTML bodies", xhtmlExtension.getBodiesCount() > 0); 212 for (Iterator it = xhtmlExtension.getBodies(); it.hasNext();) { 213 received++; 214 System.out.println((String ) it.next()); 215 } 216 bodiesReceived = received; 217 } 218 catch (ClassCastException e) { 219 fail("ClassCastException - Most probable cause is that smack providers is misconfigured"); 220 } 221 } 222 }; 223 getConnection(1).addPacketListener(packetListener, packetFilter); 224 225 Message msg = chat1.createMessage(); 227 msg.setSubject("Any subject you want"); 228 msg.setBody( 229 "awesome! As Emerson once said: A foolish consistency is the hobgoblin of little minds."); 230 XHTMLExtension xhtmlExtension = new XHTMLExtension(); 232 xhtmlExtension.addBody( 233 "<body xml:lang=\"es-ES\"><h1>impresionante!</h1><p>Como Emerson dijo una vez:</p><blockquote><p>Una consistencia ridícula es el espantajo de mentes pequeñas.</p></blockquote></body>"); 234 xhtmlExtension.addBody( 235 "<body xml:lang=\"en-US\"><h1>awesome!</h1><p>As Emerson once said:</p><blockquote><p>A foolish consistency is the hobgoblin of little minds.</p></blockquote></body>"); 236 msg.addExtension(xhtmlExtension); 237 238 try { 240 bodiesSent = xhtmlExtension.getBodiesCount(); 241 bodiesReceived = 0; 242 chat1.sendMessage(msg); 243 Thread.sleep(300); 244 } 245 catch (Exception e) { 246 fail("An error occured sending the message with XHTML"); 247 } 248 assertEquals( 250 "Number of sent and received XHTMP bodies does not match", 251 bodiesSent, 252 bodiesReceived); 253 } 254 255 protected int getMaxConnections() { 256 return 2; 257 } 258 259 } 260 | Popular Tags |