1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2025-09-09 18:29:45 +02:00

Make Forwarded a generic type

Fixes SMACK-821.
This commit is contained in:
Florian Schmaus 2020-09-23 17:39:53 +02:00
parent c1b32f8e11
commit fe7d3bec30
13 changed files with 101 additions and 51 deletions

View file

@ -132,8 +132,8 @@ public final class CarbonManager extends Manager {
final Message wrappingMessage = (Message) stanza;
final CarbonExtension carbonExtension = CarbonExtension.from(wrappingMessage);
final Direction direction = carbonExtension.getDirection();
final Forwarded forwarded = carbonExtension.getForwarded();
final Message carbonCopy = (Message) forwarded.getForwardedStanza();
final Forwarded<Message> forwarded = carbonExtension.getForwarded();
final Message carbonCopy = forwarded.getForwardedStanza();
final BareJid from = carbonCopy.getFrom().asBareJid();
carbonsListenerAsyncButOrdered.performAsyncButOrdered(from, new Runnable() {

View file

@ -1,6 +1,6 @@
/**
*
* Copyright 2013-2014 Georg Lukas
* Copyright 2013-2014 Georg Lukas, 2020 Florian Schmaus
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -38,7 +38,7 @@ public class CarbonExtension implements ExtensionElement {
public static final String NAMESPACE = Carbon.NAMESPACE;
private final Direction dir;
private final Forwarded fwd;
private final Forwarded<Message> fwd;
/**
* Construct a Carbon message extension.
@ -46,7 +46,7 @@ public class CarbonExtension implements ExtensionElement {
* @param dir Determines if the carbon is being sent/received
* @param fwd The forwarded message.
*/
public CarbonExtension(Direction dir, Forwarded fwd) {
public CarbonExtension(Direction dir, Forwarded<Message> fwd) {
this.dir = dir;
this.fwd = fwd;
}
@ -65,7 +65,7 @@ public class CarbonExtension implements ExtensionElement {
*
* @return the {@link Forwarded} message contained in this Carbon.
*/
public Forwarded getForwarded() {
public Forwarded<Message> getForwarded() {
return fwd;
}

View file

@ -1,6 +1,6 @@
/**
*
* Copyright 2013-2014 Georg Lukas
* Copyright 2013-2014 Georg Lukas, 2020 Florian Schmaus.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -18,6 +18,7 @@ package org.jivesoftware.smackx.carbons.provider;
import java.io.IOException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.parsing.SmackParsingException;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
@ -38,18 +39,16 @@ import org.jivesoftware.smackx.forward.provider.ForwardedProvider;
*/
public class CarbonManagerProvider extends ExtensionElementProvider<CarbonExtension> {
private static final ForwardedProvider FORWARDED_PROVIDER = new ForwardedProvider();
@Override
public CarbonExtension parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException {
Direction dir = Direction.valueOf(parser.getName());
Forwarded fwd = null;
Forwarded<Message> fwd = null;
boolean done = false;
while (!done) {
XmlPullParser.Event eventType = parser.next();
if (eventType == XmlPullParser.Event.START_ELEMENT && parser.getName().equals("forwarded")) {
fwd = FORWARDED_PROVIDER.parse(parser);
fwd = ForwardedProvider.parseForwardedMessage(parser, xmlEnvironment);
}
else if (eventType == XmlPullParser.Event.END_ELEMENT && dir == Direction.valueOf(parser.getName()))
done = true;

View file

@ -632,7 +632,7 @@ public final class MamManager extends Manager {
private final MamFinIQ mamFin;
private final List<Message> mamResultCarrierMessages;
private final List<MamResultExtension> mamResultExtensions;
private final List<Forwarded> forwardedMessages;
private final List<Forwarded<Message>> forwardedMessages;
private final List<Message> messages;
private MamQueryPage(StanzaCollector stanzaCollector, MamFinIQ mamFin) {
@ -642,7 +642,7 @@ public final class MamManager extends Manager {
List<Message> mamResultCarrierMessages = new ArrayList<>(mamResultCarrierStanzas.size());
List<MamResultExtension> mamResultExtensions = new ArrayList<>(mamResultCarrierStanzas.size());
List<Forwarded> forwardedMessages = new ArrayList<>(mamResultCarrierStanzas.size());
List<Forwarded<Message>> forwardedMessages = new ArrayList<>(mamResultCarrierStanzas.size());
for (Stanza mamResultStanza : mamResultCarrierStanzas) {
Message resultMessage = (Message) mamResultStanza;
@ -665,7 +665,7 @@ public final class MamManager extends Manager {
return messages;
}
public List<Forwarded> getForwarded() {
public List<Forwarded<Message>> getForwarded() {
return forwardedMessages;
}

View file

@ -22,6 +22,7 @@ import javax.xml.namespace.QName;
import org.jivesoftware.smack.packet.Element;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.MessageView;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smack.util.XmlStringBuilder;
@ -69,7 +70,7 @@ public class MamElements {
/**
* the forwarded element.
*/
private final Forwarded forwarded;
private final Forwarded<Message> forwarded;
/**
* the query id.
@ -83,7 +84,7 @@ public class MamElements {
* @param id TODO javadoc me please
* @param forwarded TODO javadoc me please
*/
public MamResultExtension(String queryId, String id, Forwarded forwarded) {
public MamResultExtension(String queryId, String id, Forwarded<Message> forwarded) {
if (StringUtils.isEmpty(id)) {
throw new IllegalArgumentException("id must not be null or empty");
}
@ -109,7 +110,7 @@ public class MamElements {
*
* @return the forwarded element
*/
public Forwarded getForwarded() {
public Forwarded<Message> getForwarded() {
return forwarded;
}

View file

@ -1,6 +1,6 @@
/**
*
* Copyright 2016 Fernando Ramirez
* Copyright 2016 Fernando Ramirez, 2020 Florian Schmaus
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -18,6 +18,7 @@ package org.jivesoftware.smackx.mam.provider;
import java.io.IOException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.parsing.SmackParsingException;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
@ -40,7 +41,7 @@ public class MamResultProvider extends ExtensionElementProvider<MamResultExtensi
@Override
public MamResultExtension parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException {
Forwarded forwarded = null;
Forwarded<Message> forwarded = null;
String queryId = parser.getAttributeValue("", "queryid");
String id = parser.getAttributeValue("", "id");
@ -51,7 +52,7 @@ public class MamResultProvider extends ExtensionElementProvider<MamResultExtensi
case START_ELEMENT:
switch (name) {
case Forwarded.ELEMENT:
forwarded = ForwardedProvider.INSTANCE.parse(parser);
forwarded = ForwardedProvider.parseForwardedMessage(parser, xmlEnvironment);
break;
}
break;

View file

@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.Properties;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.parsing.SmackParsingException;
import org.jivesoftware.smack.test.util.SmackTestUtil;
import org.jivesoftware.smack.util.PacketParserUtils;
@ -48,7 +49,7 @@ public class CarbonTest extends ExperimentalInitializerTest {
XmlPullParser parser;
String control;
CarbonExtension cc;
Forwarded fwd;
Forwarded<Message> fwd;
control = XMLBuilder.create("sent")
.e("forwarded")

View file

@ -59,10 +59,10 @@ public class MamResultProviderTest {
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = calendar.getTime();
Forwarded forwarded = mamResultExtension.getForwarded();
Forwarded<Message> forwarded = mamResultExtension.getForwarded();
assertEquals(forwarded.getDelayInformation().getStamp(), date);
Message message = (Message) forwarded.getForwardedStanza();
Message message = forwarded.getForwardedStanza();
assertEquals(message.getFrom().toString(), "romeo@montague.lit/orchard");
assertEquals(message.getTo().toString(), "juliet@capulet.lit/balcony");
assertEquals(message.getBody(),
@ -81,10 +81,10 @@ public class MamResultProviderTest {
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = calendar.getTime();
Forwarded forwarded = mamResultExtension.getForwarded();
Forwarded<Message> forwarded = mamResultExtension.getForwarded();
assertEquals(forwarded.getDelayInformation().getStamp(), date);
Message forwardedMessage = (Message) forwarded.getForwardedStanza();
Message forwardedMessage = forwarded.getForwardedStanza();
assertEquals(forwardedMessage.getFrom().toString(), "witch@shakespeare.lit");
assertEquals(forwardedMessage.getTo().toString(), "macbeth@shakespeare.lit");
assertEquals(forwardedMessage.getBody(), "Hail to thee");

View file

@ -79,7 +79,7 @@ public class QueryArchiveTest extends MamTest {
.setBody("Thrice the brinded cat hath mew.")
.build();
Forwarded forwarded = new Forwarded(delay, forwardedMessage);
Forwarded<Message> forwarded = new Forwarded<>(forwardedMessage, delay);
message.addExtension(new MamResultExtension("g27", "34482-21985-73620", forwarded));
@ -90,7 +90,7 @@ public class QueryArchiveTest extends MamTest {
assertEquals(mamResultExtension.getId(), "34482-21985-73620");
assertEquals(mamResultExtension.getForwarded().getDelayInformation().getStamp(), date);
Message resultMessage = (Message) mamResultExtension.getForwarded().getForwardedStanza();
Message resultMessage = mamResultExtension.getForwarded().getForwardedStanza();
assertEquals(resultMessage.getFrom(), JidCreate.from("coven@chat.shakespeare.lit/firstwitch"));
assertEquals(resultMessage.getStanzaId(), "162BEBB1-F6DB-4D9A-9BD8-CFDCC801A0B2");
assertEquals(resultMessage.getType(), Type.chat);