Author: ngn
Date: Fri Aug 14 09:40:17 2009
New Revision: 804141
URL: http://svn.apache.org/viewvc?rev=804141&view=rev
Log:
Abstract class for implementing message handlers
Added:
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/DefaultMessageHandler.java
Modified:
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/DefaultPresenceHandler.java
Added:
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/DefaultMessageHandler.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/DefaultMessageHandler.java?rev=804141&view=auto
==============================================================================
---
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/DefaultMessageHandler.java
(added)
+++
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/DefaultMessageHandler.java
Fri Aug 14 09:40:17 2009
@@ -0,0 +1,79 @@
+/*
+ * 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.core.base.handler;
+
+import java.util.List;
+
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
+import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
+import org.apache.vysper.xmpp.stanza.MessageStanza;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaErrorCondition;
+import org.apache.vysper.xmpp.stanza.StanzaErrorType;
+import org.apache.vysper.xmpp.stanza.XMPPCoreStanza;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+import org.apache.vysper.xmpp.xmlfragment.XMLElementVerifier;
+
+/**
+ * handling message stanzas
+ *
+ * @author The Apache MINA Project ([email protected])
+ */
+public class DefaultMessageHandler extends XMPPCoreStanzaHandler {
+
+
+ public String getName() {
+ return "message";
+ }
+
+ @Override
+ protected boolean verifyType(Stanza stanza) {
+ return MessageStanza.isOfType(stanza);
+ }
+
+ protected boolean verifyInnerNamespace(Stanza stanza, String namespace) {
+ XMLElementVerifier xmlElementVerifier = stanza.getVerifier();
+ if (!xmlElementVerifier.subElementsPresentAtLeast(1)) return false;
+
+ List<XMLElement> innerElements = stanza.getInnerElements();
+ XMLElement firstInnerElement = innerElements.get(0);
+ return firstInnerElement.getVerifier().namespacePresent(namespace);
+ }
+
+ @Override
+ protected Stanza executeCore(XMPPCoreStanza coreStanza,
ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
SessionContext sessionContext) {
+ MessageStanza stanza = (MessageStanza)coreStanza;
+
+ return executeMessageLogic(stanza, serverRuntimeContext,
sessionContext);
+ }
+
+ /**
+ * must be overridden by specialized message handlers
+ */
+ protected Stanza executeMessageLogic(MessageStanza stanza,
ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext) {
+ // this is default behavior and must be replaced by overrider
+ return
ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.FEATURE_NOT_IMPLEMENTED,
stanza,
+ StanzaErrorType.CANCEL,
+ null, null, null);
+ }
+
+}
Modified:
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/DefaultPresenceHandler.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/DefaultPresenceHandler.java?rev=804141&r1=804140&r2=804141&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/DefaultPresenceHandler.java
(original)
+++
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/DefaultPresenceHandler.java
Fri Aug 14 09:40:17 2009
@@ -35,8 +35,6 @@
/**
* handling presence stanzas
- * @see org.apache.vysper.xmpp.modules.core.base.handler.DefaultIQHandler for
your convenient own IQ handler implementations
- * @see
org.apache.vysper.xmpp.modules.core.base.handler.async.AbstractAsyncIQGetHandler
for handling IQ gets asynchronously
*
* @author The Apache MINA Project ([email protected])
*/
@@ -69,7 +67,7 @@
}
/**
- * must be overridden by specialized IQ handlers
+ * must be overridden by specialized presence handlers
*/
protected Stanza executePresenceLogic(PresenceStanza stanza,
ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext) {
// this is default behavior and must be replaced by overrider