Author: mjakl
Date: Sat Jun 27 19:24:36 2009
New Revision: 789009
URL: http://svn.apache.org/viewvc?rev=789009&view=rev
Log:
* Made disco testable for the pubsub module
* Fixed some minor typos in javadoc
* dico#info for the pubsub service is tested
Added:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java
Modified:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java
Modified:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java?rev=789009&r1=789008&r2=789009&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java
(original)
+++
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java
Sat Jun 27 19:24:36 2009
@@ -126,7 +126,7 @@
}
/**
- * must be overriden by specialized IQ handlers
+ * must be overridden by specialized IQ handlers
*/
protected Stanza executeIQLogic(IQStanza stanza, ServerRuntimeContext
serverRuntimeContext, SessionContext sessionContext) {
// this is default behavior and must be replaced by overrider
Modified:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java?rev=789009&r1=789008&r2=789009&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
(original)
+++
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
Sat Jun 27 19:24:36 2009
@@ -106,8 +106,7 @@
*
* @see ServerInfoRequestListener#getServerInfosFor(InfoRequest)
*/
- public List<InfoElement> getServerInfosFor(InfoRequest request)
- throws ServiceDiscoveryRequestException {
+ public List<InfoElement> getServerInfosFor(InfoRequest request) throws
ServiceDiscoveryRequestException {
List<InfoElement> infoElements = new ArrayList<InfoElement>();
infoElements.add(new Identity("pubsub", "service"));
infoElements.add(new Feature(NamespaceURIs.XEP0060_PUBSUB));
Modified:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java?rev=789009&r1=789008&r2=789009&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
(original)
+++
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
Sat Jun 27 19:24:36 2009
@@ -74,7 +74,7 @@
ServiceCollector serviceCollector = null;
// TODO if the target entity does not exist, return
error/cancel/item-not-found
- // TODO more strictly, server can also return
error/cancel/service-unaivable
+ // TODO more strictly, server can also return
error/cancel/service-unavailable
// retrieve the service collector
try {
Modified:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java?rev=789009&r1=789008&r2=789009&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
(original)
+++
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
Sat Jun 27 19:24:36 2009
@@ -24,17 +24,22 @@
import org.apache.vysper.storage.OpenStorageProviderRegistry;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
import
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.AbstractStanzaGenerator;
import
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.CollectionnodeInMemoryStorageProvider;
import
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeInMemoryStorageProvider;
+import
org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceCollector;
import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionState;
import org.apache.vysper.xmpp.server.TestSessionContext;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.state.resourcebinding.ResourceState;
+import org.apache.vysper.xmpp.writer.SystemOutStanzaWriter;
/**
@@ -50,13 +55,15 @@
protected IQHandler handler = null;
protected CollectionNode root = null;
protected LeafNode node = null;
+
+ // for debugging
+ protected SystemOutStanzaWriter stanzaWriter = new SystemOutStanzaWriter();
@Override
protected void setUp() throws Exception {
super.setUp();
-
- sessionContext =
TestSessionContext.createWithStanzaReceiverRelayAuthenticated();
- configureStorageProvider();
+
+ sessionContext = createTestSessionContext();
clientBare = new EntityImpl("tester", "vysper.org", null);
sessionContext.setInitiatingEntity(clientBare);
@@ -71,12 +78,35 @@
handler = getHandler();
}
+
+ protected TestSessionContext createTestSessionContext() {
+ SessionStateHolder sessionStateHolder = new SessionStateHolder();
+ sessionStateHolder.setState(SessionState.AUTHENTICATED);
+ StanzaReceiverRelay relay = new
org.apache.vysper.xmpp.delivery.StanzaReceiverRelay();
+ DefaultServerRuntimeContext serverContext = new
DefaultServerRuntimeContext(new EntityImpl(null, "pubsub.vysper.org", null),
relay);
+ relay.setServerRuntimeContext(serverContext);
+ TestSessionContext tsc = new TestSessionContext(serverContext,
sessionStateHolder);
+
+ configureStorageProvider(tsc);
+ configureServiceRegistry(tsc);
+ configurePubsubModule(tsc);
+ return tsc;
+ }
- protected void configureStorageProvider() {
+ protected void configureServiceRegistry(TestSessionContext tsc) {
+ ServiceCollector serviceCollector = new ServiceCollector();
+ ((DefaultServerRuntimeContext)
tsc.getServerRuntimeContext()).registerServerRuntimeContextService(serviceCollector);
+ }
+
+ protected void configurePubsubModule(TestSessionContext tsc) {
+ ((DefaultServerRuntimeContext)
tsc.getServerRuntimeContext()).addModule(new PublishSubscribeModule());
+ }
+
+ protected void configureStorageProvider(TestSessionContext tsc) {
OpenStorageProviderRegistry storageProviderRegistry = new
OpenStorageProviderRegistry();
storageProviderRegistry.add(new
CollectionnodeInMemoryStorageProvider());
storageProviderRegistry.add(new LeafNodeInMemoryStorageProvider());
- ((DefaultServerRuntimeContext)
sessionContext.getServerRuntimeContext()).setStorageProviderRegistry(storageProviderRegistry);
+ ((DefaultServerRuntimeContext)
tsc.getServerRuntimeContext()).setStorageProviderRegistry(storageProviderRegistry);
}
private void setResourceConnected(String boundResourceId) {
Added:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java?rev=789009&view=auto
==============================================================================
---
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java
(added)
+++
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java
Sat Jun 27 19:24:36 2009
@@ -0,0 +1,95 @@
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub;
+
+import java.util.List;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
+import
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.AbstractStanzaGenerator;
+import
org.apache.vysper.xmpp.modules.servicediscovery.handler.DiscoInfoIQHandler;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.stanza.IQStanza;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+
+
+public class PubSubDiscoInfoTestCase extends AbstractPublishSubscribeTestCase {
+
+ @Override
+ protected AbstractStanzaGenerator getDefaultStanzaGenerator() {
+ return new DefaultDiscoInfoStanzaGenerator();
+ }
+
+ @Override
+ protected IQHandler getHandler() {
+ return new DiscoInfoIQHandler();
+ }
+
+
+ public void testIdentityAndFeature() {
+ AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
+ Stanza stanza = sg.getStanza(client, pubsub.getBareJID(), "id123");
+
+ ResponseStanzaContainer result = sendStanza(stanza, true);
+ assertTrue(result.hasResponse());
+ IQStanza response = new IQStanza(result.getResponseStanza());
+
+ assertEquals(IQStanzaType.RESULT.value(),response.getType());
+
+ assertEquals("id123", response.getAttributeValue("id")); // IDs must
match
+
+ // get the subscription Element
+ XMLElement query = response.getFirstInnerElement();
+ List<XMLElement> inner = query.getInnerElements();
+
+ assertEquals("query", query.getName());
+ assertTrue(inner.size() >= 2);
+
+ XMLElement identity = null;
+ XMLElement feature = null;
+ for(XMLElement el : inner) {
+ if(el.getName().equals("identity")
+ //&&
el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO) // TODO
enable when the parser is fixed
+ && el.getAttributeValue("category").equals("pubsub")
+ && el.getAttributeValue("type").equals("service")) {
+ identity = el;
+ } else if(el.getName().equals("feature") /*&&
el.getNamespace().equals(NamespaceURIs.XEP0060_PUBSUB)*/) { // TODO enable when
the parser is fixed
+ feature = el;
+ }
+ }
+ assertNotNull(identity);
+ assertNotNull(feature);
+ }
+
+ class DefaultDiscoInfoStanzaGenerator extends AbstractStanzaGenerator {
+ @Override
+ protected StanzaBuilder buildInnerElement(Entity client, Entity
pubsub, StanzaBuilder sb) {
+ return sb;
+ }
+
+ @Override
+ protected String getNamespace() {
+ return NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO;
+ }
+
+ @Override
+ protected IQStanzaType getStanzaType() {
+ return IQStanzaType.GET;
+ }
+
+ @Override
+ public Stanza getStanza(Entity client, Entity pubsub, String id) {
+ StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(client,
pubsub, getStanzaType(), id);
+ stanzaBuilder.startInnerElement("query");
+ stanzaBuilder.addNamespaceAttribute(getNamespace());
+
+ buildInnerElement(client, pubsub, stanzaBuilder);
+
+ stanzaBuilder.endInnerElement();
+
+ return stanzaBuilder.getFinalStanza();
+ }
+ }
+}
Modified:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java?rev=789009&r1=789008&r2=789009&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java
(original)
+++
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java
Sat Jun 27 19:24:36 2009
@@ -51,6 +51,8 @@
suite.addTestSuite(CollectionNodeTestCase.class);
suite.addTestSuite(LeafNodeTestCase.class);
+
+ suite.addTestSuite(PubSubDiscoInfoTestCase.class);
//$JUnit-END$
return suite;
}