You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by be...@apache.org on 2009/05/13 15:53:33 UTC

svn commit: r774370 - in /mina/sandbox/vysper/trunk/src: main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/ main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/ main/java/org/apache/vysper/xmpp/modules/extension/xe...

Author: berndf
Date: Wed May 13 13:53:32 2009
New Revision: 774370

URL: http://svn.apache.org/viewvc?rev=774370&view=rev
Log:
[vysper] VYSPER-26. patch contributed by Michael Jakl. thanks!

Added:
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/AbstractPubSubGeneralHandler.java
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubCreateNodeHandler.java
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubPublishHandler.java
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubSubscribeHandler.java
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubUnsubscribeHandler.java
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/AbstractPubSubOwnerHandler.java
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubOwnerConfigureNodeHandler.java
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubOwnerDeleteNodeHandler.java
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/
    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
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubCreateNode.java
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubPublish.java
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubSubscribe.java
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubUnsubscribe.java
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubConfigureNode.java
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubDeleteNode.java
Modified:
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java

Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java Wed May 13 13:53:32 2009
@@ -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.xep0060_pubsub;
+
+import org.apache.vysper.compliance.SpecCompliant;
+import org.apache.vysper.xmpp.modules.core.base.handler.DefaultIQHandler;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+
+/**
+ * Handles PubSub stanzas.
+ *
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+@SpecCompliant(spec="xep-0060", status= SpecCompliant.ComplianceStatus.IN_PROGRESS, coverage = SpecCompliant.ComplianceCoverage.UNSUPPORTED)
+public abstract class AbstractPublishSubscribeIQHandler extends DefaultIQHandler {
+	
+	@Override
+	protected boolean verifyNamespace(Stanza stanza) {
+		return verifyInnerNamespace(stanza, getNamespace());
+	}
+	
+	@Override
+	protected boolean verifyInnerElement(Stanza stanza) {
+        return verifyInnerElementWorker(stanza, "pubsub") 
+        	&& verifySingleElementParameter(stanza.getFirstInnerElement(), getWorkerElement());
+	}
+	
+	protected boolean verifySingleElementParameter(XMLElement pubsub, String element) {
+		return pubsub.getVerifier().subElementsPresentExact(1)
+			&& pubsub.getVerifier().subElementPresent(element);		
+	}
+
+	protected abstract String getNamespace();
+	protected abstract String getWorkerElement();
+}

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=774370&r1=774369&r2=774370&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 Wed May 13 13:53:32 2009
@@ -19,7 +19,16 @@
  */
 package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.vysper.xmpp.modules.DefaultDiscoAwareModule;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general.PubSubCreateNodeHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general.PubSubPublishHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general.PubSubSubscribeHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general.PubSubUnsubscribeHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.owner.PubSubOwnerConfigureNodeHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.owner.PubSubOwnerDeleteNodeHandler;
 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;
@@ -28,26 +37,16 @@
 import org.apache.vysper.xmpp.protocol.HandlerDictionary;
 import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.server.ServerRuntimeContext;
-
-import java.util.ArrayList;
-import java.util.List;
 
 /**
  * Initializes the XEP0060 module.
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
- * @version $Rev$, $Date$
  */
 public class PublishSubscribeModule extends DefaultDiscoAwareModule implements
 		ServerInfoRequestListener {
 
 	@Override
-	public void initialize(ServerRuntimeContext serverRuntimeContext) {
-		super.initialize(serverRuntimeContext);
-	}
-	
-	@Override
 	public String getName() {
 		return "XEP-0060 Publish-Subscribe";
 	}
@@ -67,8 +66,13 @@
 	
     @Override
     protected void addHandlerDictionaries(List<HandlerDictionary> dictionary) {
-        dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB));
-        dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_OWNER));
+        dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB, new PubSubSubscribeHandler()));
+        dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB, new PubSubUnsubscribeHandler()));
+        dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB, new PubSubPublishHandler()));
+        dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB, new PubSubCreateNodeHandler()));
+        
+        dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_OWNER, new PubSubOwnerConfigureNodeHandler()));
+        dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_OWNER, new PubSubOwnerDeleteNodeHandler()));
     }
 
 }

Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/AbstractPubSubGeneralHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/AbstractPubSubGeneralHandler.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/AbstractPubSubGeneralHandler.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/AbstractPubSubGeneralHandler.java Wed May 13 13:53:32 2009
@@ -0,0 +1,33 @@
+/*
+ *  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.xep0060_pubsub.general;
+
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeIQHandler;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+
+public abstract class AbstractPubSubGeneralHandler extends
+		AbstractPublishSubscribeIQHandler {
+
+	@Override
+	protected String getNamespace() {
+		return NamespaceURIs.XEP0060_PUBSUB;
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubCreateNodeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubCreateNodeHandler.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubCreateNodeHandler.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubCreateNodeHandler.java Wed May 13 13:53:32 2009
@@ -0,0 +1,34 @@
+/*
+ *  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.xep0060_pubsub.general;
+
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ *
+ */
+public class PubSubCreateNodeHandler extends AbstractPubSubGeneralHandler {
+
+	@Override
+	protected String getWorkerElement() {
+		return "create";
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubPublishHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubPublishHandler.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubPublishHandler.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubPublishHandler.java Wed May 13 13:53:32 2009
@@ -0,0 +1,34 @@
+/*
+ *  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.xep0060_pubsub.general;
+
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ *
+ */
+public class PubSubPublishHandler extends AbstractPubSubGeneralHandler {
+
+	@Override
+	protected String getWorkerElement() {
+		return "publish";
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubSubscribeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubSubscribeHandler.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubSubscribeHandler.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubSubscribeHandler.java Wed May 13 13:53:32 2009
@@ -0,0 +1,34 @@
+/*
+ *  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.xep0060_pubsub.general;
+
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ *
+ */
+public class PubSubSubscribeHandler extends AbstractPubSubGeneralHandler {
+
+	@Override
+	protected String getWorkerElement() {
+		return "subscribe";
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubUnsubscribeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubUnsubscribeHandler.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubUnsubscribeHandler.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubUnsubscribeHandler.java Wed May 13 13:53:32 2009
@@ -0,0 +1,34 @@
+/*
+ *  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.xep0060_pubsub.general;
+
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ *
+ */
+public class PubSubUnsubscribeHandler extends AbstractPubSubGeneralHandler {
+
+	@Override
+	protected String getWorkerElement() {
+		return "unsubscribe";
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/AbstractPubSubOwnerHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/AbstractPubSubOwnerHandler.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/AbstractPubSubOwnerHandler.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/AbstractPubSubOwnerHandler.java Wed May 13 13:53:32 2009
@@ -0,0 +1,33 @@
+/*
+ *  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.xep0060_pubsub.owner;
+
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeIQHandler;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+
+public abstract class AbstractPubSubOwnerHandler extends
+		AbstractPublishSubscribeIQHandler {
+
+	@Override
+	protected String getNamespace() {
+		return NamespaceURIs.XEP0060_PUBSUB_OWNER;
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubOwnerConfigureNodeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubOwnerConfigureNodeHandler.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubOwnerConfigureNodeHandler.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubOwnerConfigureNodeHandler.java Wed May 13 13:53:32 2009
@@ -0,0 +1,34 @@
+/*
+ *  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.xep0060_pubsub.owner;
+
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ *
+ */
+public class PubSubOwnerConfigureNodeHandler extends AbstractPubSubOwnerHandler {
+
+	@Override
+	protected String getWorkerElement() {
+		return "configure";
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubOwnerDeleteNodeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubOwnerDeleteNodeHandler.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubOwnerDeleteNodeHandler.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubOwnerDeleteNodeHandler.java Wed May 13 13:53:32 2009
@@ -0,0 +1,34 @@
+/*
+ *  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.xep0060_pubsub.owner;
+
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ *
+ */
+public class PubSubOwnerDeleteNodeHandler extends AbstractPubSubOwnerHandler {
+
+	@Override
+	protected String getWorkerElement() {
+		return "delete";
+	}
+
+}

Added: 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=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java (added)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java Wed May 13 13:53:32 2009
@@ -0,0 +1,115 @@
+/*
+ *  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.xep0060_pubsub;
+
+import junit.framework.TestCase;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
+import org.apache.vysper.xmpp.server.SessionContext;
+import org.apache.vysper.xmpp.server.TestSessionContext;
+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.state.resourcebinding.ResourceState;
+
+
+/**
+ * The abstract base class for all pubsub related tests.
+ * 
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public abstract class AbstractPublishSubscribeTestCase extends TestCase {
+	private TestSessionContext sessionContext  = null;
+    protected Entity clientBare = null;
+    protected Entity client = null;
+    protected Entity pubsub = null;
+    protected IQHandler handler = null;
+    
+	@Override
+	protected void setUp() throws Exception {
+		super.setUp();
+		
+		sessionContext = TestSessionContext.createWithStanzaReceiverRelayAuthenticated();
+		clientBare = new EntityImpl("tester", "vysper.org", null);
+        sessionContext.setInitiatingEntity(clientBare);
+
+        String boundResourceId = sessionContext.bindResource();
+        client = new EntityImpl(clientBare, boundResourceId);
+		pubsub = EntityImpl.parse("pubsub.vysper.org/news");
+
+        setResourceConnected(sessionContext, boundResourceId);
+        
+        handler = getHandler();
+	}
+	
+	private void setResourceConnected(SessionContext sessionContext, String boundResourceId) {
+		sessionContext.getServerRuntimeContext().getResourceRegistry().setResourceState(boundResourceId, ResourceState.CONNECTED);
+	}
+
+	/**
+	 * Override and provide the Handler to be tested. A new
+	 * handler will be created for each test.
+	 * 
+	 * @return the instantiated handler to be tested
+	 */
+	protected abstract IQHandler getHandler();
+	
+	/**
+	 * Override and provide the Namespace the pubsub element lies within.
+	 * 
+	 * @return the namespace for the IQ stanza as String
+	 */
+	protected abstract String getNamespace();
+	
+	/**
+	 * Override and provide a optional inner element (within the IQ/pubsub elements).
+	 * 
+	 * @param sb the StanzaBuilder currently used
+	 * @return the (modified) StanzaBuilder
+	 */
+	protected abstract StanzaBuilder buildInnerElement(StanzaBuilder sb);
+	
+	/**
+	 * Override and define the IQ stanza's type (get or set)
+	 * 
+	 * @return Type of Stanza @see {@link IQStanzaType}
+	 */
+	protected abstract IQStanzaType getStanzaType();
+	
+	protected Stanza getStanza() {
+		StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(client, pubsub, getStanzaType(), "id1");
+        stanzaBuilder.startInnerElement("pubsub");
+        stanzaBuilder.addNamespaceAttribute(getNamespace());
+        
+        buildInnerElement(stanzaBuilder);
+        
+        stanzaBuilder.endInnerElement();
+        
+        return stanzaBuilder.getFinalStanza();
+	}
+	
+	public void testSimpleStanza() {
+		Stanza stanza = getStanza();
+        
+        assertTrue(handler.verify(stanza));
+	}
+}

Added: 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=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java (added)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java Wed May 13 13:53:32 2009
@@ -0,0 +1,29 @@
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub;
+
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general.PubSubCreateNode;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general.PubSubPublish;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general.PubSubSubscribe;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general.PubSubUnsubscribe;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.owner.PubSubConfigureNode;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.owner.PubSubDeleteNode;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class PubSubTests {
+
+	public static Test suite() {
+		TestSuite suite = new TestSuite(
+				"Test for Publish/Subscribe XEP-0060");
+		//$JUnit-BEGIN$
+		suite.addTestSuite(PubSubDeleteNode.class);
+		suite.addTestSuite(PubSubConfigureNode.class);
+		suite.addTestSuite(PubSubCreateNode.class);
+		suite.addTestSuite(PubSubPublish.class);
+		suite.addTestSuite(PubSubSubscribe.class);
+		suite.addTestSuite(PubSubUnsubscribe.class);
+		//$JUnit-END$
+		return suite;
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubCreateNode.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubCreateNode.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubCreateNode.java (added)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubCreateNode.java Wed May 13 13:53:32 2009
@@ -0,0 +1,37 @@
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general;
+
+import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public class PubSubCreateNode extends AbstractPublishSubscribeTestCase {
+
+	@Override
+	protected StanzaBuilder buildInnerElement(StanzaBuilder sb) {
+		sb.startInnerElement("create");
+		sb.addAttribute("node", pubsub.getResource());
+		sb.endInnerElement();
+		return sb;
+	}
+
+	@Override
+	protected IQHandler getHandler() {
+		return new PubSubCreateNodeHandler();
+	}
+
+	@Override
+	protected String getNamespace() {
+		return NamespaceURIs.XEP0060_PUBSUB;
+	}
+
+	@Override
+	protected IQStanzaType getStanzaType() {
+		return IQStanzaType.SET;
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubPublish.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubPublish.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubPublish.java (added)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubPublish.java Wed May 13 13:53:32 2009
@@ -0,0 +1,37 @@
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general;
+
+import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public class PubSubPublish extends AbstractPublishSubscribeTestCase {
+
+	@Override
+	protected StanzaBuilder buildInnerElement(StanzaBuilder sb) {
+		sb.startInnerElement("publish");
+		sb.addAttribute("node", pubsub.getResource());
+		sb.endInnerElement();
+		return sb;
+	}
+
+	@Override
+	protected IQHandler getHandler() {
+		return new PubSubPublishHandler();
+	}
+
+	@Override
+	protected String getNamespace() {
+		return NamespaceURIs.XEP0060_PUBSUB;
+	}
+
+	@Override
+	protected IQStanzaType getStanzaType() {
+		return IQStanzaType.SET;
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubSubscribe.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubSubscribe.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubSubscribe.java (added)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubSubscribe.java Wed May 13 13:53:32 2009
@@ -0,0 +1,38 @@
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general;
+
+import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public class PubSubSubscribe extends AbstractPublishSubscribeTestCase {
+
+	@Override
+	protected StanzaBuilder buildInnerElement(StanzaBuilder sb) {
+		sb.startInnerElement("subscribe");
+		sb.addAttribute("node", pubsub.getResource());
+		sb.addAttribute("jid", client.getFullQualifiedName());
+		sb.endInnerElement();
+		return sb;
+	}
+
+	@Override
+	protected IQHandler getHandler() {
+		return new PubSubSubscribeHandler();
+	}
+
+	@Override
+	protected String getNamespace() {
+		return NamespaceURIs.XEP0060_PUBSUB;
+	}
+
+	@Override
+	protected IQStanzaType getStanzaType() {
+		return IQStanzaType.SET;
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubUnsubscribe.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubUnsubscribe.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubUnsubscribe.java (added)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/general/PubSubUnsubscribe.java Wed May 13 13:53:32 2009
@@ -0,0 +1,38 @@
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.general;
+
+import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public class PubSubUnsubscribe extends AbstractPublishSubscribeTestCase {
+
+	@Override
+	protected StanzaBuilder buildInnerElement(StanzaBuilder sb) {
+		sb.startInnerElement("unsubscribe");
+		sb.addAttribute("node", pubsub.getResource());
+		sb.addAttribute("jid", client.getFullQualifiedName());
+		sb.endInnerElement();
+		return sb;
+	}
+
+	@Override
+	protected IQHandler getHandler() {
+		return new PubSubUnsubscribeHandler();
+	}
+
+	@Override
+	protected String getNamespace() {
+		return NamespaceURIs.XEP0060_PUBSUB;
+	}
+
+	@Override
+	protected IQStanzaType getStanzaType() {
+		return IQStanzaType.SET;
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubConfigureNode.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubConfigureNode.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubConfigureNode.java (added)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubConfigureNode.java Wed May 13 13:53:32 2009
@@ -0,0 +1,37 @@
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.owner;
+
+import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public class PubSubConfigureNode extends AbstractPublishSubscribeTestCase {
+
+	@Override
+	protected StanzaBuilder buildInnerElement(StanzaBuilder sb) {
+		sb.startInnerElement("configure");
+		sb.addAttribute("node", pubsub.getResource());
+		sb.endInnerElement();
+		return sb;
+	}
+
+	@Override
+	protected IQHandler getHandler() {
+		return new PubSubOwnerConfigureNodeHandler();
+	}
+
+	@Override
+	protected String getNamespace() {
+		return NamespaceURIs.XEP0060_PUBSUB_OWNER;
+	}
+
+	@Override
+	protected IQStanzaType getStanzaType() {
+		return IQStanzaType.GET;
+	}
+
+}

Added: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubDeleteNode.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubDeleteNode.java?rev=774370&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubDeleteNode.java (added)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/owner/PubSubDeleteNode.java Wed May 13 13:53:32 2009
@@ -0,0 +1,37 @@
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.owner;
+
+import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public class PubSubDeleteNode extends AbstractPublishSubscribeTestCase {
+
+	@Override
+	protected StanzaBuilder buildInnerElement(StanzaBuilder sb) {
+		sb.startInnerElement("delete");
+		sb.addAttribute("node", pubsub.getResource());
+		sb.endInnerElement();
+		return sb;
+	}
+
+	@Override
+	protected IQHandler getHandler() {
+		return new PubSubOwnerDeleteNodeHandler();
+	}
+
+	@Override
+	protected String getNamespace() {
+		return NamespaceURIs.XEP0060_PUBSUB_OWNER;
+	}
+
+	@Override
+	protected IQStanzaType getStanzaType() {
+		return IQStanzaType.SET;
+	}
+
+}