This is an automated email from the ASF dual-hosted git repository. ralaoui pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mina-vysper.git
The following commit(s) were added to refs/heads/master by this push: new 3d7d92c XEP-0313 MAM: broadcast urn:xmpp:sid:0 and jabber:x:data features 3d7d92c is described below commit 3d7d92c668dc1fcdef1ba4b97424cae1116cc189 Author: Réda Housni Alaoui <reda.housniala...@gmail.com> AuthorDate: Sun Sep 8 18:14:44 2019 +0200 XEP-0313 MAM: broadcast urn:xmpp:sid:0 and jabber:x:data features --- .../xep0313_mam/MAMInfoRequestListener.java | 42 +++++++++++++++++ .../modules/extension/xep0313_mam/MAMModule.java | 1 + .../xep0313_mam/MAMInfoRequestListenerTest.java | 53 ++++++++++++++++++++++ 3 files changed, 96 insertions(+) diff --git a/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MAMInfoRequestListener.java b/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MAMInfoRequestListener.java new file mode 100644 index 0000000..50f7101 --- /dev/null +++ b/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MAMInfoRequestListener.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.vysper.xmpp.modules.extension.xep0313_mam; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.vysper.xmpp.modules.servicediscovery.management.Feature; +import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoElement; +import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequest; +import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequestListener; +import org.apache.vysper.xmpp.protocol.NamespaceURIs; + +/** + * @author Réda Housni Alaoui + */ +public class MAMInfoRequestListener implements InfoRequestListener { + @Override + public List<InfoElement> getInfosFor(InfoRequest request) { + List<InfoElement> infoElements = new ArrayList<>(); + infoElements.add(new Feature(NamespaceURIs.XEP0359_STANZA_IDS)); + infoElements.add(new Feature(NamespaceURIs.JABBER_X_DATA)); + return infoElements; + } +} diff --git a/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MAMModule.java b/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MAMModule.java index 71833c8..ed70eac 100644 --- a/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MAMModule.java +++ b/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MAMModule.java @@ -82,6 +82,7 @@ public class MAMModule extends DefaultDiscoAwareModule implements ServerInfoRequ protected void addInfoRequestListeners(List<InfoRequestListener> infoRequestListeners) { infoRequestListeners.add(new UserInfoRequestListener(messageArchives, NAMESPACE_V1)); infoRequestListeners.add(new UserInfoRequestListener(messageArchives, NAMESPACE_V2)); + infoRequestListeners.add(new MAMInfoRequestListener()); } @Override diff --git a/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MAMInfoRequestListenerTest.java b/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MAMInfoRequestListenerTest.java new file mode 100644 index 0000000..a1d3e4c --- /dev/null +++ b/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MAMInfoRequestListenerTest.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.vysper.xmpp.modules.extension.xep0313_mam; + +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.apache.vysper.xmpp.protocol.NamespaceURIs; +import org.jivesoftware.smack.SmackException; +import org.jivesoftware.smack.XMPPException; +import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; +import org.jivesoftware.smackx.disco.packet.DiscoverInfo; +import org.junit.Test; + +/** + * @author Réda Housni Alaoui + */ +public class MAMInfoRequestListenerTest extends IntegrationTest { + + @Test + public void discoverInfo() throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, + InterruptedException, SmackException.NoResponseException { + ServiceDiscoveryManager discoveryManager = ServiceDiscoveryManager.getInstanceFor(alice()); + DiscoverInfo discoverInfo = discoveryManager.discoverInfo(alice().getUser().asBareJid()); + List<DiscoverInfo.Feature> features = discoverInfo.getFeatures(); + + assertTrue(containsFeature(features, NamespaceURIs.XEP0359_STANZA_IDS)); + assertTrue(containsFeature(features, NamespaceURIs.JABBER_X_DATA)); + } + + private boolean containsFeature(List<DiscoverInfo.Feature> features, String featureUri) { + return features.stream().map(DiscoverInfo.Feature::getVar).anyMatch(featureUri::equals); + } + +}