1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2025-12-07 13:41:08 +01:00

Introduce StanzaBuilder

As first step to immutable Stanza types.
This commit is contained in:
Florian Schmaus 2019-10-24 15:45:08 +02:00
parent 926c5892ad
commit 5db6191110
134 changed files with 2576 additions and 764 deletions

View file

@ -39,7 +39,7 @@ public class IBBPacketUtils {
* @return an error IQ
*/
public static IQ createErrorIQ(Jid from, Jid to, StanzaError.Condition condition) {
StanzaError.Builder xmppError = StanzaError.getBuilder(condition);
StanzaError xmppError = StanzaError.getBuilder(condition).build();
IQ errorIQ = new ErrorIQ(xmppError);
errorIQ.setType(IQ.Type.error);
errorIQ.setFrom(from);

View file

@ -31,6 +31,7 @@ import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.StanzaBuilder;
import org.jivesoftware.smack.util.stringencoder.Base64;
import org.jivesoftware.smackx.InitExtensions;
@ -266,8 +267,9 @@ public class InBandBytestreamSessionMessageTest extends InitExtensions {
// build invalid packet with out of order sequence
String base64Data = Base64.encode("Data");
DataPacketExtension dpe = new DataPacketExtension(sessionID, 123, base64Data);
Message dataMessage = new Message();
dataMessage.addExtension(dpe);
Message dataMessage = StanzaBuilder.buildMessage()
.addExtension(dpe)
.build();
// add data packets
listener.processStanza(dataMessage);
@ -307,8 +309,9 @@ public class InBandBytestreamSessionMessageTest extends InitExtensions {
for (int i = 0; i < controlData.length / blockSize; i++) {
String base64Data = Base64.encodeToString(controlData, i * blockSize, blockSize);
DataPacketExtension dpe = new DataPacketExtension(sessionID, i, base64Data);
Message dataMessage = new Message();
dataMessage.addExtension(dpe);
Message dataMessage = StanzaBuilder.buildMessage()
.addExtension(dpe)
.build();
listener.processStanza(dataMessage);
}
@ -352,8 +355,9 @@ public class InBandBytestreamSessionMessageTest extends InitExtensions {
for (int i = 0; i < controlData.length / blockSize; i++) {
String base64Data = Base64.encodeToString(controlData, i * blockSize, blockSize);
DataPacketExtension dpe = new DataPacketExtension(sessionID, i, base64Data);
Message dataMessage = new Message();
dataMessage.addExtension(dpe);
Message dataMessage = StanzaBuilder.buildMessage()
.addExtension(dpe)
.build();
listener.processStanza(dataMessage);
}

View file

@ -413,8 +413,8 @@ public class Socks5ByteStreamManagerTest {
Verification.requestTypeGET);
// build error packet to reject SOCKS5 Bytestream
StanzaError.Builder builder = StanzaError.getBuilder(StanzaError.Condition.not_acceptable);
IQ rejectPacket = new ErrorIQ(builder);
StanzaError stanzaError = StanzaError.getBuilder(StanzaError.Condition.not_acceptable).build();
IQ rejectPacket = new ErrorIQ(stanzaError);
rejectPacket.setFrom(targetJID);
rejectPacket.setTo(initiatorJID);

View file

@ -184,7 +184,7 @@ public class Socks5ClientForInitiatorTest {
XMPPConnection connection = ConnectionUtils.createMockedConnection(protocol, initiatorJID);
// build error response as reply to the stream activation
IQ error = new ErrorIQ(StanzaError.getBuilder(StanzaError.Condition.internal_server_error));
IQ error = new ErrorIQ(StanzaError.getBuilder(StanzaError.Condition.internal_server_error).build());
error.setFrom(proxyJID);
error.setTo(initiatorJID);

View file

@ -23,6 +23,7 @@ import static org.jivesoftware.smack.test.util.XmlUnitUtils.assertXmlSimilar;
import java.util.Date;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.packet.StanzaBuilder;
import org.jivesoftware.smack.test.util.SmackTestSuite;
import org.jivesoftware.smack.test.util.TestUtils;
import org.jivesoftware.smack.xml.XmlPullParser;
@ -50,7 +51,9 @@ public class IdleTest extends SmackTestSuite {
@Test
public void helperTest() {
Presence presence = new Presence(Presence.Type.available);
Presence presence = StanzaBuilder.buildPresence()
.ofType(Presence.Type.available)
.build();
IdleElement.addToPresence(presence);
IdleElement element = IdleElement.fromPresence(presence);
assertNotNull(element);

View file

@ -22,6 +22,7 @@ import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertTrue;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.StanzaBuilder;
import org.jivesoftware.smack.test.util.SmackTestSuite;
import org.jivesoftware.smackx.mood.element.MoodElement;
@ -32,7 +33,7 @@ public class MoodManagerTest extends SmackTestSuite {
@Test
public void addMessageTest() {
Message message = new Message();
Message message = StanzaBuilder.buildMessage().build();
MoodManager.addMoodToMessage(message, Mood.sad);
assertTrue(message.hasExtension(MoodElement.ELEMENT, MoodElement.NAMESPACE));
@ -43,7 +44,7 @@ public class MoodManagerTest extends SmackTestSuite {
assertFalse(element.hasConcretisation());
assertFalse(element.hasText());
message = new Message();
message = StanzaBuilder.buildMessage().build();
MoodManager.addMoodToMessage(message, Mood.happy, new MoodConcretisationTest.EcstaticMoodConcretisation());
element = MoodElement.fromMessage(message);
assertTrue(element.hasConcretisation());

View file

@ -67,7 +67,7 @@ public class ConfigureFormTest extends InitExtensions {
PubSub errorIq = new PubSub();
errorIq.setType(Type.error);
errorIq.setFrom(PubSubManagerTest.DUMMY_PUBSUB_SERVICE);
StanzaError.Builder error = StanzaError.getBuilder(Condition.forbidden);
StanzaError error = StanzaError.getBuilder(Condition.forbidden).build();
errorIq.setError(error);
con.addIQReply(errorIq);

View file

@ -27,7 +27,9 @@ import java.util.Properties;
import org.jivesoftware.smack.DummyConnection;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.MessageBuilder;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.packet.StanzaBuilder;
import org.jivesoftware.smack.test.util.WaitForPacketListener;
import org.jivesoftware.smack.util.PacketParserUtils;
import org.jivesoftware.smack.xml.XmlPullParser;
@ -38,7 +40,6 @@ import org.jivesoftware.smackx.receipts.DeliveryReceiptManager.AutoReceiptMode;
import com.jamesmurty.utils.XMLBuilder;
import org.junit.Test;
import org.jxmpp.jid.Jid;
import org.jxmpp.jid.impl.JidCreate;
public class DeliveryReceiptTest extends InitExtensions {
@ -66,10 +67,13 @@ public class DeliveryReceiptTest extends InitExtensions {
assertTrue(DeliveryReceiptManager.hasDeliveryReceiptRequest(p));
Message m = new Message(JidCreate.from("romeo@montague.com"), Message.Type.normal);
assertFalse(DeliveryReceiptManager.hasDeliveryReceiptRequest(m));
DeliveryReceiptRequest.addTo(m);
assertTrue(DeliveryReceiptManager.hasDeliveryReceiptRequest(m));
MessageBuilder messageBuilder = StanzaBuilder.buildMessage("request-id")
.to("romeo@montague.com")
.ofType(Message.Type.normal)
;
assertFalse(DeliveryReceiptManager.hasDeliveryReceiptRequest(messageBuilder.build()));
DeliveryReceiptRequest.addTo(messageBuilder);
assertTrue(DeliveryReceiptManager.hasDeliveryReceiptRequest(messageBuilder.build()));
}
@Test
@ -81,10 +85,12 @@ public class DeliveryReceiptTest extends InitExtensions {
TestReceiptReceivedListener rrl = new TestReceiptReceivedListener();
drm.addReceiptReceivedListener(rrl);
Message m = new Message(JidCreate.from("romeo@montague.com"), Message.Type.normal);
m.setFrom(JidCreate.from("julia@capulet.com"));
m.setStanzaId("reply-id");
m.addExtension(new DeliveryReceipt("original-test-id"));
Message m = StanzaBuilder.buildMessage("reply-id")
.from("julia@capulet.com")
.to("romeo@montague.com")
.ofType(Message.Type.normal)
.addExtension(new DeliveryReceipt("original-test-id"))
.build();
c.processStanza(m);
rrl.waitUntilInvocationOrTimeout();
@ -110,13 +116,15 @@ public class DeliveryReceiptTest extends InitExtensions {
assertEquals(AutoReceiptMode.always, drm.getAutoReceiptMode());
// test auto-receipts
Message m = new Message(JidCreate.from("julia@capulet.com"), Message.Type.normal);
m.setFrom(JidCreate.from("romeo@montague.com"));
m.setStanzaId("test-receipt-request");
DeliveryReceiptRequest.addTo(m);
MessageBuilder messageBuilder = StanzaBuilder.buildMessage("test-receipt-request")
.to("julia@capulet.com")
.from("romeo@montague.com")
.ofType(Message.Type.normal)
;
DeliveryReceiptRequest.addTo(messageBuilder);
// the DRM will send a reply-packet
c.processStanza(m);
c.processStanza(messageBuilder.build());
Stanza reply = c.getSentPacket();
DeliveryReceipt r = DeliveryReceipt.from((Message) reply);

View file

@ -24,6 +24,7 @@ import java.net.URI;
import java.net.URISyntaxException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.StanzaBuilder;
import org.jivesoftware.smack.test.util.SmackTestSuite;
import org.jivesoftware.smackx.usertune.element.UserTuneElement;
@ -45,8 +46,9 @@ public class UserTuneManagerTest extends SmackTestSuite{
builder.setUri(uri);
UserTuneElement userTuneElement = builder.build();
Message message = new Message();
message.addExtension(userTuneElement);
Message message = StanzaBuilder.buildMessage()
.addExtension(userTuneElement)
.build();
assertTrue(message.hasExtension(UserTuneElement.ELEMENT, UserTuneElement.NAMESPACE));
assertTrue(UserTuneElement.hasUserTuneElement(message));