mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-22 14:22:05 +01:00
Update Message Archive Management (XEP-0313) support to urn:xmpp:mam:2
Fixes SMACK-890.
This commit is contained in:
parent
a51663448b
commit
f045c0dd08
9 changed files with 25 additions and 25 deletions
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright © 2016 Florian Schmaus and Fernando Ramirez
|
* Copyright © 2016-2020 Florian Schmaus and Fernando Ramirez
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -38,7 +38,7 @@ import org.jxmpp.jid.Jid;
|
||||||
*/
|
*/
|
||||||
public class MamElements {
|
public class MamElements {
|
||||||
|
|
||||||
public static final String NAMESPACE = "urn:xmpp:mam:1";
|
public static final String NAMESPACE = "urn:xmpp:mam:2";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MAM result extension class.
|
* MAM result extension class.
|
||||||
|
|
|
@ -17,22 +17,22 @@
|
||||||
<!-- XEP-0313: Message Archive Management -->
|
<!-- XEP-0313: Message Archive Management -->
|
||||||
<iqProvider>
|
<iqProvider>
|
||||||
<elementName>prefs</elementName>
|
<elementName>prefs</elementName>
|
||||||
<namespace>urn:xmpp:mam:1</namespace>
|
<namespace>urn:xmpp:mam:2</namespace>
|
||||||
<className>org.jivesoftware.smackx.mam.provider.MamPrefsIQProvider</className>
|
<className>org.jivesoftware.smackx.mam.provider.MamPrefsIQProvider</className>
|
||||||
</iqProvider>
|
</iqProvider>
|
||||||
<iqProvider>
|
<iqProvider>
|
||||||
<elementName>query</elementName>
|
<elementName>query</elementName>
|
||||||
<namespace>urn:xmpp:mam:1</namespace>
|
<namespace>urn:xmpp:mam:2</namespace>
|
||||||
<className>org.jivesoftware.smackx.mam.provider.MamQueryIQProvider</className>
|
<className>org.jivesoftware.smackx.mam.provider.MamQueryIQProvider</className>
|
||||||
</iqProvider>
|
</iqProvider>
|
||||||
<iqProvider>
|
<iqProvider>
|
||||||
<elementName>fin</elementName>
|
<elementName>fin</elementName>
|
||||||
<namespace>urn:xmpp:mam:1</namespace>
|
<namespace>urn:xmpp:mam:2</namespace>
|
||||||
<className>org.jivesoftware.smackx.mam.provider.MamFinIQProvider</className>
|
<className>org.jivesoftware.smackx.mam.provider.MamFinIQProvider</className>
|
||||||
</iqProvider>
|
</iqProvider>
|
||||||
<extensionProvider>
|
<extensionProvider>
|
||||||
<elementName>result</elementName>
|
<elementName>result</elementName>
|
||||||
<namespace>urn:xmpp:mam:1</namespace>
|
<namespace>urn:xmpp:mam:2</namespace>
|
||||||
<className>org.jivesoftware.smackx.mam.provider.MamResultProvider</className>
|
<className>org.jivesoftware.smackx.mam.provider.MamResultProvider</className>
|
||||||
</extensionProvider>
|
</extensionProvider>
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
public class MamFinProviderTest extends MamTest {
|
public class MamFinProviderTest extends MamTest {
|
||||||
|
|
||||||
static final String exmapleMamFinXml = "<fin xmlns='urn:xmpp:mam:1' stable='true'>"
|
static final String exmapleMamFinXml = "<fin xmlns='urn:xmpp:mam:2' stable='true'>"
|
||||||
+ "<set xmlns='http://jabber.org/protocol/rsm'>" + "<max>10</max>" + "<after>09af3-cc343-b409f</after>"
|
+ "<set xmlns='http://jabber.org/protocol/rsm'>" + "<max>10</max>" + "<after>09af3-cc343-b409f</after>"
|
||||||
+ "</set>" + "</fin>";
|
+ "</set>" + "</fin>";
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ public class MamFinProviderTest extends MamTest {
|
||||||
public void checkQueryLimitedResults() throws Exception {
|
public void checkQueryLimitedResults() throws Exception {
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
final String IQ_LIMITED_RESULTS_EXAMPLE = "<iq type='result' id='u29303'>"
|
final String IQ_LIMITED_RESULTS_EXAMPLE = "<iq type='result' id='u29303'>"
|
||||||
+ "<fin xmlns='urn:xmpp:mam:1' complete='true'>"
|
+ "<fin xmlns='urn:xmpp:mam:2' complete='true'>"
|
||||||
+ "<set xmlns='http://jabber.org/protocol/rsm'>"
|
+ "<set xmlns='http://jabber.org/protocol/rsm'>"
|
||||||
+ "<first index='0'>23452-4534-1</first>"
|
+ "<first index='0'>23452-4534-1</first>"
|
||||||
+ "<last>390-2342-22</last>" + "<count>16</count>"
|
+ "<last>390-2342-22</last>" + "<count>16</count>"
|
||||||
|
|
|
@ -33,19 +33,19 @@ import org.jxmpp.jid.Jid;
|
||||||
|
|
||||||
public class MamPrefIQProviderTest extends MamTest {
|
public class MamPrefIQProviderTest extends MamTest {
|
||||||
|
|
||||||
private static final String exampleMamPrefsIQ1 = "<iq type='set' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:1' default='roster'>"
|
private static final String exampleMamPrefsIQ1 = "<iq type='set' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:2' default='roster'>"
|
||||||
+ "<always>" + "<jid>romeo@montague.lit</jid>" + "</always>" + "<never>"
|
+ "<always>" + "<jid>romeo@montague.lit</jid>" + "</always>" + "<never>"
|
||||||
+ "<jid>montague@montague.lit</jid>" + "</never>" + "</prefs>" + "</iq>";
|
+ "<jid>montague@montague.lit</jid>" + "</never>" + "</prefs>" + "</iq>";
|
||||||
|
|
||||||
private static final String exampleMamPrefsIQ2 = "<iq type='set' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:1' default='roster'>"
|
private static final String exampleMamPrefsIQ2 = "<iq type='set' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:2' default='roster'>"
|
||||||
+ "<always>" + "<jid>romeo@montague.lit</jid>" + "<jid>montague@montague.lit</jid>" + "</always>"
|
+ "<always>" + "<jid>romeo@montague.lit</jid>" + "<jid>montague@montague.lit</jid>" + "</always>"
|
||||||
+ "<never>" + "</never>" + "</prefs>" + "</iq>";
|
+ "<never>" + "</never>" + "</prefs>" + "</iq>";
|
||||||
|
|
||||||
private static final String exampleMamPrefsIQ3 = "<iq type='get' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:1'>" + "</prefs>"
|
private static final String exampleMamPrefsIQ3 = "<iq type='get' id='juliet3'>" + "<prefs xmlns='urn:xmpp:mam:2'>" + "</prefs>"
|
||||||
+ "</iq>";
|
+ "</iq>";
|
||||||
|
|
||||||
private static final String exampleMamPrefsResultIQ = "<iq type='result' id='juliet3'>"
|
private static final String exampleMamPrefsResultIQ = "<iq type='result' id='juliet3'>"
|
||||||
+ "<prefs xmlns='urn:xmpp:mam:1' default='roster'>" + "<always>" + "<jid>romeo@montague.lit</jid>"
|
+ "<prefs xmlns='urn:xmpp:mam:2' default='roster'>" + "<always>" + "<jid>romeo@montague.lit</jid>"
|
||||||
+ "</always>" + "<never>" + "<jid>sarasa@montague.lit</jid>" + "<jid>montague@montague.lit</jid>"
|
+ "</always>" + "<never>" + "<jid>sarasa@montague.lit</jid>" + "<jid>montague@montague.lit</jid>"
|
||||||
+ "</never>" + "</prefs>" + "</iq>";
|
+ "</never>" + "</prefs>" + "</iq>";
|
||||||
|
|
||||||
|
|
|
@ -35,18 +35,18 @@ import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
public class MamQueryIQProviderTest {
|
public class MamQueryIQProviderTest {
|
||||||
|
|
||||||
private static final String exampleMamQueryIQ1 = "<iq type='set' id='query4'>" + "<query xmlns='urn:xmpp:mam:1' queryid='test'>"
|
private static final String exampleMamQueryIQ1 = "<iq type='set' id='query4'>" + "<query xmlns='urn:xmpp:mam:2' queryid='test'>"
|
||||||
+ "<x xmlns='jabber:x:data' type='submit'>" + "<field type='hidden' var='FORM_TYPE'>"
|
+ "<x xmlns='jabber:x:data' type='submit'>" + "<field type='hidden' var='FORM_TYPE'>"
|
||||||
+ "<value>urn:xmpp:mam:1</value>" + "</field>"
|
+ "<value>urn:xmpp:mam:2</value>" + "</field>"
|
||||||
+ "<field type='text-single' var='urn:example:xmpp:free-text-search'>"
|
+ "<field type='text-single' var='urn:example:xmpp:free-text-search'>"
|
||||||
+ "<value>Where arth thou, my Juliet?</value>" + "</field>"
|
+ "<value>Where arth thou, my Juliet?</value>" + "</field>"
|
||||||
+ "<field type='text-single' var='urn:example:xmpp:stanza-content'>"
|
+ "<field type='text-single' var='urn:example:xmpp:stanza-content'>"
|
||||||
+ "<value>{http://jabber.org/protocol/mood}mood/lonely</value>" + "</field>" + "</x>" + "</query>"
|
+ "<value>{http://jabber.org/protocol/mood}mood/lonely</value>" + "</field>" + "</x>" + "</query>"
|
||||||
+ "</iq>";
|
+ "</iq>";
|
||||||
|
|
||||||
private static final String exampleMamQueryIQ2 = "<iq type='result' id='form1'>" + "<query xmlns='urn:xmpp:mam:1'>"
|
private static final String exampleMamQueryIQ2 = "<iq type='result' id='form1'>" + "<query xmlns='urn:xmpp:mam:2'>"
|
||||||
+ "<x xmlns='jabber:x:data' type='form'>" + "<field type='hidden' var='FORM_TYPE'>"
|
+ "<x xmlns='jabber:x:data' type='form'>" + "<field type='hidden' var='FORM_TYPE'>"
|
||||||
+ "<value>urn:xmpp:mam:1</value>" + "</field>" + "<field type='jid-single' var='with'/>"
|
+ "<value>urn:xmpp:mam:2</value>" + "</field>" + "<field type='jid-single' var='with'/>"
|
||||||
+ "<field type='text-single' var='start'/>" + "<field type='text-single' var='end'/>"
|
+ "<field type='text-single' var='start'/>" + "<field type='text-single' var='end'/>"
|
||||||
+ "<field type='text-single' var='urn:example:xmpp:free-text-search'/>"
|
+ "<field type='text-single' var='urn:example:xmpp:free-text-search'/>"
|
||||||
+ "<field type='text-single' var='urn:example:xmpp:stanza-content'/>" + "</x>" + "</query>" + "</iq>";
|
+ "<field type='text-single' var='urn:example:xmpp:stanza-content'/>" + "</x>" + "</query>" + "</iq>";
|
||||||
|
@ -80,7 +80,7 @@ public class MamQueryIQProviderTest {
|
||||||
assertEquals(dataForm2.getType(), DataForm.Type.form);
|
assertEquals(dataForm2.getType(), DataForm.Type.form);
|
||||||
|
|
||||||
List<FormField> fields2 = dataForm2.getFields();
|
List<FormField> fields2 = dataForm2.getFields();
|
||||||
assertEquals(fields2.get(0).getValues().get(0).toString(), "urn:xmpp:mam:1");
|
assertEquals(fields2.get(0).getValues().get(0).toString(), "urn:xmpp:mam:2");
|
||||||
assertTrue(fields2.get(0).getValues().size() == 1);
|
assertTrue(fields2.get(0).getValues().size() == 1);
|
||||||
assertEquals(fields2.get(1).getType(), FormField.Type.jid_single);
|
assertEquals(fields2.get(1).getType(), FormField.Type.jid_single);
|
||||||
assertEquals(fields2.get(2).getType(), FormField.Type.text_single);
|
assertEquals(fields2.get(2).getType(), FormField.Type.text_single);
|
||||||
|
|
|
@ -34,7 +34,7 @@ import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
public class MamResultProviderTest {
|
public class MamResultProviderTest {
|
||||||
|
|
||||||
private static final String exampleMamResultXml = "<result xmlns='urn:xmpp:mam:1' queryid='f27' id='28482-98726-73623'>"
|
private static final String exampleMamResultXml = "<result xmlns='urn:xmpp:mam:2' queryid='f27' id='28482-98726-73623'>"
|
||||||
+ "<forwarded xmlns='urn:xmpp:forward:0'>" + "<delay xmlns='urn:xmpp:delay' stamp='2010-07-10T23:08:25Z'/>"
|
+ "<forwarded xmlns='urn:xmpp:forward:0'>" + "<delay xmlns='urn:xmpp:delay' stamp='2010-07-10T23:08:25Z'/>"
|
||||||
+ "<message xmlns='jabber:client' to='juliet@capulet.lit/balcony' from='romeo@montague.lit/orchard' "
|
+ "<message xmlns='jabber:client' to='juliet@capulet.lit/balcony' from='romeo@montague.lit/orchard' "
|
||||||
+ "type='chat'>"
|
+ "type='chat'>"
|
||||||
|
@ -42,7 +42,7 @@ public class MamResultProviderTest {
|
||||||
+ "</message>" + "</forwarded>" + "</result>";
|
+ "</message>" + "</forwarded>" + "</result>";
|
||||||
|
|
||||||
private static final String exampleResultMessage = "<message id='aeb213' to='juliet@capulet.lit/chamber'>"
|
private static final String exampleResultMessage = "<message id='aeb213' to='juliet@capulet.lit/chamber'>"
|
||||||
+ "<result xmlns='urn:xmpp:mam:1' queryid='f27' id='28482-98726-73623'>"
|
+ "<result xmlns='urn:xmpp:mam:2' queryid='f27' id='28482-98726-73623'>"
|
||||||
+ "<forwarded xmlns='urn:xmpp:forward:0'>" + "<delay xmlns='urn:xmpp:delay' stamp='2010-07-10T23:08:25Z'/>"
|
+ "<forwarded xmlns='urn:xmpp:forward:0'>" + "<delay xmlns='urn:xmpp:delay' stamp='2010-07-10T23:08:25Z'/>"
|
||||||
+ "<message xmlns='jabber:client' from='witch@shakespeare.lit' to='macbeth@shakespeare.lit'>"
|
+ "<message xmlns='jabber:client' from='witch@shakespeare.lit' to='macbeth@shakespeare.lit'>"
|
||||||
+ "<body>Hail to thee</body>" + "</message>" + "</forwarded>" + "</result>" + "</message>";
|
+ "<body>Hail to thee</body>" + "</message>" + "</forwarded>" + "</result>" + "</message>";
|
||||||
|
|
|
@ -29,9 +29,9 @@ import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
public class PagingTest extends MamTest {
|
public class PagingTest extends MamTest {
|
||||||
|
|
||||||
private static final String pagingStanza = "<iq id='sarasa' type='set'>" + "<query xmlns='urn:xmpp:mam:1' queryid='testid'>"
|
private static final String pagingStanza = "<iq id='sarasa' type='set'>" + "<query xmlns='urn:xmpp:mam:2' queryid='testid'>"
|
||||||
+ "<x xmlns='jabber:x:data' type='submit'>" + "<field var='FORM_TYPE'>"
|
+ "<x xmlns='jabber:x:data' type='submit'>" + "<field var='FORM_TYPE'>"
|
||||||
+ "<value>urn:xmpp:mam:1</value>" + "</field>" + "</x>" + "<set xmlns='http://jabber.org/protocol/rsm'>"
|
+ "<value>urn:xmpp:mam:2</value>" + "</field>" + "</x>" + "<set xmlns='http://jabber.org/protocol/rsm'>"
|
||||||
+ "<max>10</max>" + "</set>" + "</query>" + "</iq>";
|
+ "<max>10</max>" + "</set>" + "</query>" + "</iq>";
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -46,7 +46,7 @@ public class PagingTest extends MamTest {
|
||||||
mamQueryIQ.addExtension(rsmSet);
|
mamQueryIQ.addExtension(rsmSet);
|
||||||
|
|
||||||
assertEquals(mamQueryIQ.getDataForm(), dataForm);
|
assertEquals(mamQueryIQ.getDataForm(), dataForm);
|
||||||
assertEquals(mamQueryIQ.getDataForm().getFields().get(0).getValues().get(0).toString(), "urn:xmpp:mam:1");
|
assertEquals(mamQueryIQ.getDataForm().getFields().get(0).getValues().get(0).toString(), "urn:xmpp:mam:2");
|
||||||
assertEquals(pagingStanza, mamQueryIQ.toXML(StreamOpen.CLIENT_NAMESPACE).toString());
|
assertEquals(pagingStanza, mamQueryIQ.toXML(StreamOpen.CLIENT_NAMESPACE).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,12 +40,12 @@ import org.jxmpp.jid.impl.JidCreate;
|
||||||
|
|
||||||
public class QueryArchiveTest extends MamTest {
|
public class QueryArchiveTest extends MamTest {
|
||||||
|
|
||||||
private static final String mamSimpleQueryIQ = "<iq id='sarasa' type='set'>" + "<query xmlns='urn:xmpp:mam:1' queryid='testid'>"
|
private static final String mamSimpleQueryIQ = "<iq id='sarasa' type='set'>" + "<query xmlns='urn:xmpp:mam:2' queryid='testid'>"
|
||||||
+ "<x xmlns='jabber:x:data' type='submit'>" + "<field var='FORM_TYPE'>" + "<value>"
|
+ "<x xmlns='jabber:x:data' type='submit'>" + "<field var='FORM_TYPE'>" + "<value>"
|
||||||
+ MamElements.NAMESPACE + "</value>" + "</field>" + "</x>" + "</query>" + "</iq>";
|
+ MamElements.NAMESPACE + "</value>" + "</field>" + "</x>" + "</query>" + "</iq>";
|
||||||
|
|
||||||
private static final String mamQueryResultExample = "<message to='hag66@shakespeare.lit/pda' from='coven@chat.shakespeare.lit' id='iasd207'>"
|
private static final String mamQueryResultExample = "<message to='hag66@shakespeare.lit/pda' from='coven@chat.shakespeare.lit' id='iasd207'>"
|
||||||
+ "<result xmlns='urn:xmpp:mam:1' queryid='g27' id='34482-21985-73620'>"
|
+ "<result xmlns='urn:xmpp:mam:2' queryid='g27' id='34482-21985-73620'>"
|
||||||
+ "<forwarded xmlns='urn:xmpp:forward:0'>"
|
+ "<forwarded xmlns='urn:xmpp:forward:0'>"
|
||||||
+ "<delay xmlns='urn:xmpp:delay' stamp='2002-10-13T23:58:37.000+00:00'/>" + "<message "
|
+ "<delay xmlns='urn:xmpp:delay' stamp='2002-10-13T23:58:37.000+00:00'/>" + "<message "
|
||||||
+ "xmlns='jabber:client' from='coven@chat.shakespeare.lit/firstwitch' " + "id='162BEBB1-F6DB-4D9A-9BD8-CFDCC801A0B2' "
|
+ "xmlns='jabber:client' from='coven@chat.shakespeare.lit/firstwitch' " + "id='162BEBB1-F6DB-4D9A-9BD8-CFDCC801A0B2' "
|
||||||
|
|
|
@ -30,7 +30,7 @@ import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
public class ResultsLimitTest extends MamTest {
|
public class ResultsLimitTest extends MamTest {
|
||||||
|
|
||||||
private static final String resultsLimitStanza = "<iq id='sarasa' type='set'>" + "<query xmlns='urn:xmpp:mam:1' queryid='testid'>"
|
private static final String resultsLimitStanza = "<iq id='sarasa' type='set'>" + "<query xmlns='urn:xmpp:mam:2' queryid='testid'>"
|
||||||
+ "<x xmlns='jabber:x:data' type='submit'>" + "<field var='FORM_TYPE'>" + "<value>"
|
+ "<x xmlns='jabber:x:data' type='submit'>" + "<field var='FORM_TYPE'>" + "<value>"
|
||||||
+ MamElements.NAMESPACE + "</value>" + "</field>" + "</x>" + "<set xmlns='http://jabber.org/protocol/rsm'>"
|
+ MamElements.NAMESPACE + "</value>" + "</field>" + "</x>" + "<set xmlns='http://jabber.org/protocol/rsm'>"
|
||||||
+ "<max>10</max>" + "</set>" + "</query>" + "</iq>";
|
+ "<max>10</max>" + "</set>" + "</query>" + "</iq>";
|
||||||
|
|
Loading…
Reference in a new issue