You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by be...@apache.org on 2008/04/11 09:15:24 UTC
svn commit: r647070 - in /labs/vysper/src: main/config/
main/java/org/apache/vysper/xmpp/modules/core/base/handler/
main/java/org/apache/vysper/xmpp/modules/core/compatibility/jabber_iq_auth/handler/
main/java/org/apache/vysper/xmpp/protocol/ main/java...
Author: berndf
Date: Fri Apr 11 00:15:22 2008
New Revision: 647070
URL: http://svn.apache.org/viewvc?rev=647070&view=rev
Log:
[vysper] for the error response class make distinction between stanza and stream errors clear (LABS-119)
improve message stanza handling (LABS-100)
make IQ stanza handler return service-unavailable for unknown IQs (LABS-99)
Added:
labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ServiceUnavailableStanzaErrorHandler.java
Modified:
labs/vysper/src/main/config/spring-config.xml
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/compatibility/jabber_iq_auth/handler/IQAuthCompatibilityHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/SessionStateHolder.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/writer/DenseStanzaLogRenderer.java
labs/vysper/src/test/java/org/apache/vysper/smack/BasicClient.java
Modified: labs/vysper/src/main/config/spring-config.xml
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/config/spring-config.xml?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/main/config/spring-config.xml (original)
+++ labs/vysper/src/main/config/spring-config.xml Fri Apr 11 00:15:22 2008
@@ -67,6 +67,7 @@
<bean class="org.apache.vysper.xmpp.modules.core.bind.BindResourceDictionary"/>
<bean class="org.apache.vysper.xmpp.modules.core.session.SessionStanzaDictionary"/>
<bean class="org.apache.vysper.xmpp.modules.core.compatibility.jabber_iq_auth.JabberIQAuthDictionary"/>
+ <bean class="org.apache.vysper.xmpp.modules.roster.RosterDictionary"/>
</list>
</constructor-arg>
<constructor-arg ref="resourceRegistry"/>
@@ -76,6 +77,7 @@
<constructor-arg index="0">
<map>
<entry key="user1@vysper.org" value="password1" />
+ <entry key="user2@vysper.org" value="password1" />
</map>
</constructor-arg>
</bean>
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java Fri Apr 11 00:15:22 2008
@@ -59,8 +59,8 @@
// rfc3920/9.2.3/1.
String id = stanza.getID();
if (id == null) {
- return ServerErrorResponses.getInstance().getErrorResponse(stanza,
- StanzaErrorType.MODIFY, StanzaErrorCondition.BAD_REQUEST,
+ return ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.BAD_REQUEST, stanza,
+ StanzaErrorType.MODIFY,
"iq-stanza requires 'id' attribute to be present",
sessionContext.getXMLLang(), null);
}
@@ -69,8 +69,8 @@
IQStanzaType iqType = stanza.getIQType();
if (iqType == null) {
// missing or unknown type
- return ServerErrorResponses.getInstance().getErrorResponse(stanza,
- StanzaErrorType.MODIFY, StanzaErrorCondition.BAD_REQUEST,
+ return ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.BAD_REQUEST, stanza,
+ StanzaErrorType.MODIFY,
"iq-stanza requires a valid 'type' attribute to be present",
sessionContext.getXMLLang(), null);
}
@@ -79,8 +79,8 @@
// assure, set or get contain one and only one element
// rfc3920/9.2.3/5.
if (!coreStanza.getVerifier().subElementsPresentExact(1)) {
- return ServerErrorResponses.getInstance().getErrorResponse(stanza,
- StanzaErrorType.MODIFY, StanzaErrorCondition.BAD_REQUEST,
+ return ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.BAD_REQUEST, stanza,
+ StanzaErrorType.MODIFY,
"iq stanza of type get or set require exactly one child",
sessionContext.getXMLLang(), null);
}
@@ -88,8 +88,8 @@
// assure, result contains zero or one element
// rfc3920/9.2.3/6.
if (!coreStanza.getVerifier().subElementsPresentAtMost(1)) {
- return ServerErrorResponses.getInstance().getErrorResponse(stanza,
- StanzaErrorType.MODIFY, StanzaErrorCondition.BAD_REQUEST,
+ return ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.BAD_REQUEST, stanza,
+ StanzaErrorType.MODIFY,
"iq stanza of type result may not have more than one child",
sessionContext.getXMLLang(), null);
}
@@ -107,8 +107,8 @@
*/
protected Stanza executeIQLogic(IQStanza stanza, SessionContext sessionContext) {
// this is default behavior and must be replaced by overrider
- return ServerErrorResponses.getInstance().getErrorResponse(stanza,
- StanzaErrorType.CANCEL, StanzaErrorCondition.FEATURE_NOT_IMPLEMENTED,
+ return ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.FEATURE_NOT_IMPLEMENTED, stanza,
+ StanzaErrorType.CANCEL,
null, null, null);
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java Fri Apr 11 00:15:22 2008
@@ -23,6 +23,9 @@
import org.apache.vysper.xmpp.stanza.MessageStanza;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.XMPPCoreStanza;
+import org.apache.vysper.xmpp.stanza.XMPPCoreStanzaVerifier;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+import org.apache.vysper.xmpp.xmlfragment.XMLSemanticError;
/**
* handling message stanzas
@@ -38,7 +41,45 @@
protected Stanza executeCore(XMPPCoreStanza stanza, SessionContext sessionContext) {
+
+ XMPPCoreStanzaVerifier stanzaVerifier = stanza.getCoreVerifier();
+
+ // (try to) read thread id
+ String threadId = null;
+ XMLElement threadElement = null;
+ try {
+ threadElement = stanza.getSingleInnerElementsNamed("thread");
+ try {
+ threadId = threadElement.getSingleInnerText().getText();
+ } catch (Exception _) {
+ threadId = null;
+ }
+ } catch (XMLSemanticError _) {
+ threadId = null;
+ }
+
+ // (try to) read subject id
+ String subject = null;
+ XMLElement subjectElement = null;
+ try {
+ subjectElement = stanza.getSingleInnerElementsNamed("subject");
+ try {
+ subject = subjectElement.getSingleInnerText().getText();
+ } catch (Exception _) {
+ subject = null;
+ }
+ } catch (XMLSemanticError _) {
+ subject = null;
+ }
+
+ // TODO inspect all BODY elements and make sure they conform to the spec
+
Entity to = stanza.getTo();
+
+ // TODO check if to is empty.
+
+ // TODO check if the user should be on this server. relay if not.
+
StanzaRelay stanzaRelay = sessionContext.getServerRuntimeContext().getStanzaRelay();
if (!stanzaRelay.receiverExists(to)) {
// TODO return error stanza
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java Fri Apr 11 00:15:22 2008
@@ -116,7 +116,7 @@
toEntity = EntityImpl.parse(stanza.getAttribute("to").getValue());
} catch (EntityFormatException e) {
return new ResponseStanzaContainerImpl(
- ServerErrorResponses.getInstance().getError(StreamErrorCondition.IMPROPER_ADDRESSING,
+ ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.IMPROPER_ADDRESSING,
sessionContext.getXMLLang(),
"could not parse incoming stanza's TO attribute",
null));
@@ -140,7 +140,7 @@
entity = EntityImpl.parse(stanza.getAttribute("from").getValue());
} catch (EntityFormatException e) {
return new ResponseStanzaContainerImpl(
- ServerErrorResponses.getInstance().getError(StreamErrorCondition.INVALID_FROM,
+ ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.INVALID_FROM,
sessionContext.getXMLLang(),
"could not parse incoming stanza's FROM attribute",
null));
@@ -175,7 +175,7 @@
private ResponseStanzaContainer respondIllegalNamespaceError(String descriptiveText) {
return new ResponseStanzaContainerImpl(
- ServerErrorResponses.getInstance().getError(StreamErrorCondition.INVALID_NAMESPACE,
+ ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.INVALID_NAMESPACE,
null,
descriptiveText,
null));
@@ -183,7 +183,7 @@
private ResponseStanzaContainer respondUnsupportedStanzaType(String descriptiveText) {
return new ResponseStanzaContainerImpl(
- ServerErrorResponses.getInstance().getError(StreamErrorCondition.UNSUPPORTED_STANZA_TYPE,
+ ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.UNSUPPORTED_STANZA_TYPE,
null,
descriptiveText,
null));
@@ -191,7 +191,7 @@
private ResponseStanzaContainer respondUnsupportedVersionError(String xmlLang, String versionAttributeValue, String errorMessage) {
if (xmlLang == null) xmlLang = "en_US";
- Stanza error = ServerErrorResponses.getInstance().getError(StreamErrorCondition.UNSUPPORTED_VERSION, xmlLang,
+ Stanza error = ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.UNSUPPORTED_VERSION, xmlLang,
errorMessage + versionAttributeValue, null);
return new ResponseStanzaContainerImpl(error);
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java Fri Apr 11 00:15:22 2008
@@ -88,7 +88,7 @@
Entity to = stanza.getTo();
if (sessionContext.isServerToServer() && to == null) {
// "to" MUST be present for jabber:server
- return new ResponseStanzaContainerImpl(ServerErrorResponses.getInstance().getError(StreamErrorCondition.IMPROPER_ADDRESSING, stanza.getXMLLang(), "missing to attribute", null));
+ return new ResponseStanzaContainerImpl(ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.IMPROPER_ADDRESSING, stanza.getXMLLang(), "missing to attribute", null));
}
if (to != null) {
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/compatibility/jabber_iq_auth/handler/IQAuthCompatibilityHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/compatibility/jabber_iq_auth/handler/IQAuthCompatibilityHandler.java?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/compatibility/jabber_iq_auth/handler/IQAuthCompatibilityHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/compatibility/jabber_iq_auth/handler/IQAuthCompatibilityHandler.java Fri Apr 11 00:15:22 2008
@@ -20,17 +20,11 @@
import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.server.SessionContext;
-import org.apache.vysper.xmpp.server.SessionState;
import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.Stanza;
-import org.apache.vysper.xmpp.stanza.StanzaBuilder;
-import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.StanzaErrorType;
import org.apache.vysper.xmpp.stanza.StanzaErrorCondition;
-import org.apache.vysper.xmpp.resourcebinding.BindException;
-import org.apache.vysper.xmpp.addressing.Entity;
-import org.apache.vysper.xmpp.addressing.EntityImpl;
/**
* handles bind requests
@@ -53,9 +47,9 @@
case GET:
case SET:
- return ServerErrorResponses.getInstance().getErrorResponse(stanza,
- StanzaErrorType.CANCEL, StanzaErrorCondition.SERVICE_UNAVAILABLE,
- "jabber:iq:auth not supported", "en",
+ return ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.SERVICE_UNAVAILABLE, stanza,
+ StanzaErrorType.CANCEL,
+ "jabber:iq:auth not supported", "en",
null);
case ERROR:
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java Fri Apr 11 00:15:22 2008
@@ -32,7 +32,7 @@
public void writeStreamNotOpenedError(SessionContext sessionContext) {
- Stanza errorStanza = ServerErrorResponses.getInstance().getError(StreamErrorCondition.BAD_FORMAT,
+ Stanza errorStanza = ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.BAD_FORMAT,
sessionContext.getXMLLang(),
"could not parse incoming stanza",
null);
@@ -65,7 +65,7 @@
if (protocolException != null) errorStanza = protocolException.getErrorStanza();
if (errorStanza == null) {
- errorStanza = ServerErrorResponses.getInstance().getError(StreamErrorCondition.BAD_FORMAT,
+ errorStanza = ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.BAD_FORMAT,
sessionContext.getXMLLang(),
"could not process incoming stanza",
receivedStanza);
@@ -74,7 +74,7 @@
}
public void handleUnsupportedStanzaType(SessionContext sessionContext, Stanza receivedStanza) {
- Stanza errorStanza = ServerErrorResponses.getInstance().getError(StreamErrorCondition.UNSUPPORTED_STANZA_TYPE,
+ Stanza errorStanza = ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.UNSUPPORTED_STANZA_TYPE,
sessionContext.getXMLLang(),
"could not process incoming stanza",
receivedStanza);
@@ -82,7 +82,7 @@
}
public void handleNotAuthorized(SessionContext sessionContext, Stanza receivedStanza) {
- Stanza errorStanza = ServerErrorResponses.getInstance().getError(StreamErrorCondition.NOT_AUTHORIZED,
+ Stanza errorStanza = ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.NOT_AUTHORIZED,
sessionContext.getXMLLang(),
"could not process incoming stanza",
receivedStanza);
@@ -92,7 +92,7 @@
public void handleParsingException(SessionContext sessionContext, ParsingException e) {
//TODO write the __right__ error response, not bad-format default only
if (e.getErrorCondition() != ParsingErrorCondition.BAD_FORMAT) throw new RuntimeException("cannot handle this error condition yet");
- Stanza errorStanza = ServerErrorResponses.getInstance().getError(StreamErrorCondition.BAD_FORMAT,
+ Stanza errorStanza = ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.BAD_FORMAT,
sessionContext.getXMLLang(),
"could not parse incoming stanza",
null);
Added: labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ServiceUnavailableStanzaErrorHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ServiceUnavailableStanzaErrorHandler.java?rev=647070&view=auto
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ServiceUnavailableStanzaErrorHandler.java (added)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ServiceUnavailableStanzaErrorHandler.java Fri Apr 11 00:15:22 2008
@@ -0,0 +1,45 @@
+/***********************************************************************
+ * Copyright (c) 2006-2007 The Apache Software Foundation. *
+ * All rights reserved. *
+ * ------------------------------------------------------------------- *
+ * Licensed 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.protocol;
+
+import org.apache.vysper.xmpp.server.SessionContext;
+import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
+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;
+
+/**
+ */
+public class ServiceUnavailableStanzaErrorHandler implements StanzaHandler {
+ public String getName() {
+ return "stanza_not_supported_error";
+ }
+
+ public boolean verify(Stanza stanza) {
+ return true;
+ }
+
+ public ResponseStanzaContainer execute(Stanza stanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder) throws ProtocolException {
+ if (!(stanza instanceof XMPPCoreStanza)) {
+ stanza = XMPPCoreStanza.getWrapper(stanza);
+ }
+ XMPPCoreStanza coreStanza = (XMPPCoreStanza) stanza;
+ Stanza errorStanza = ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.SERVICE_UNAVAILABLE, coreStanza, StanzaErrorType.CANCEL, "namespace not supported", null, null);
+ return new ResponseStanzaContainerImpl(errorStanza);
+ }
+}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/SessionStateHolder.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/SessionStateHolder.java?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/SessionStateHolder.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/SessionStateHolder.java Fri Apr 11 00:15:22 2008
@@ -33,9 +33,5 @@
public void setState(SessionState newState) {
currentState = newState;
System.err.println("session state changed to = " + newState);
-if (currentState == SessionState.CLOSED) {
- currentState = SessionState.AUTHENTICATED;
-}
- System.err.println("session state changed to = " + newState);
}
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java Fri Apr 11 00:15:22 2008
@@ -39,6 +39,7 @@
private IQHandler iqHandler = new IQHandler();
private MessageHandler messageHandler = new MessageHandler();
private PresenceHandler presenceHandler = new PresenceHandler();
+ private static final ServiceUnavailableStanzaErrorHandler SERVICE_UNAVAILABLE_STANZA_ERROR_HANDLER = new ServiceUnavailableStanzaErrorHandler();
public void addDictionary(NamespaceHandlerDictionary namespaceHandlerDictionary) {
String namespace = namespaceHandlerDictionary.getNamespaceURI();
@@ -101,13 +102,14 @@
String namespace = xmlElement.getVerifier().getUniqueXMLNSValue();
NamespaceHandlerDictionary namespaceHandlerDictionary = dictionaries.get(namespace);
+ // another try to get a dictionary
if (namespaceHandlerDictionary == null) {
namespace = xmlElement.getNamespace();
namespaceHandlerDictionary = dictionaries.get(namespace);
}
if (namespaceHandlerDictionary != null) return namespaceHandlerDictionary.get(stanza);
- return null;
+ return SERVICE_UNAVAILABLE_STANZA_ERROR_HANDLER;
}
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java Fri Apr 11 00:15:22 2008
@@ -44,7 +44,7 @@
// empty
}
- public Stanza getError(StreamErrorCondition definedErrorCondition, String languageCode, String descriptiveText, XMLElement applicationSpecificError) {
+ public Stanza getStreamError(StreamErrorCondition definedErrorCondition, String languageCode, String descriptiveText, XMLElement applicationSpecificError) {
/*
<stream:jabber>
@@ -81,20 +81,20 @@
/**
* TODO move to a more general error handling
+ * @param errorCondition - corresponds to one of the defined stanza error conditions
* @param stanza
* @param type
- * @param errorCondition - corresponds to one of the defined stanza error conditions
* @param errorText - is optional together with errorLang, both together might be NULL
* @param errorLang - must be present, if errorText is not NULL
* @param errorConditionElement - optional application specific error condition element
* @return error response stanza
*/
- public Stanza getErrorResponse(XMPPCoreStanza stanza, StanzaErrorType type, StanzaErrorCondition errorCondition,
- String errorText, String errorLang,
- XMLElement errorConditionElement) {
+ public Stanza getStanzaError(StanzaErrorCondition errorCondition, XMPPCoreStanza stanza, StanzaErrorType type,
+ String errorText, String errorLang,
+ XMLElement errorConditionElement) {
if ("error".equals(stanza.getType())) {
- return ServerErrorResponses.getInstance().getError(StreamErrorCondition.UNSUPPORTED_STANZA_TYPE, errorLang,
+ return ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.UNSUPPORTED_STANZA_TYPE, errorLang,
"cannot respond to IQ stanza of type error with the same", null);
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/writer/DenseStanzaLogRenderer.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/writer/DenseStanzaLogRenderer.java?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/writer/DenseStanzaLogRenderer.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/writer/DenseStanzaLogRenderer.java Fri Apr 11 00:15:22 2008
@@ -66,7 +66,10 @@
IQStanza iq = (IQStanza) XMPPCoreStanza.getWrapper((Stanza) stanza);
renderAttribute(stringBuilder, iq, "id");
renderAttribute(stringBuilder, iq, "type");
- if (firstInnerElement != null) stringBuilder.append(ELEMENT_SEPARATOR).append(firstInnerElement.getName());
+ if (firstInnerElement != null) {
+ stringBuilder.append(ELEMENT_SEPARATOR).append(firstInnerElement.getName());
+ renderAttribute(stringBuilder, firstInnerElement, "xmlns");
+ }
}
private static void renderAuth(StringBuilder stringBuilder, XMLElement stanza, XMLElement firstInnerElement) {
Modified: labs/vysper/src/test/java/org/apache/vysper/smack/BasicClient.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/smack/BasicClient.java?rev=647070&r1=647069&r2=647070&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/smack/BasicClient.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/smack/BasicClient.java Fri Apr 11 00:15:22 2008
@@ -16,19 +16,25 @@
***********************************************************************/
package org.apache.vysper.smack;
+import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ConnectionConfiguration;
+import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.SASLAuthentication;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
-import org.jivesoftware.smack.MessageListener;
-import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.packet.Message;
+import java.util.Date;
+import java.util.Random;
+
/**
*/
public class BasicClient {
public static void main(String[] args) throws XMPPException {
+ String me = args[0];
+ String to = args[1];
+
try {
ConnectionConfiguration connectionConfiguration = new ConnectionConfiguration("localhost");
// ConnectionConfiguration connectionConfiguration = new ConnectionConfiguration("xmpp.eu");
@@ -48,15 +54,18 @@
// if (!saslAuthentication.isAuthenticated()) return;
- connection.login("user1@vysper.org", "password1");
-/*
- Chat chat = connection.getChatManager().createChat("user2@vysper.org", new MessageListener() {
+ connection.login(me + "@vysper.org", "password1");
+
+ Chat chat = connection.getChatManager().createChat(to + "@vysper.org", new MessageListener() {
public void processMessage(Chat chat, Message message) {
- System.out.println("log received message: " + message); }
- });
- chat.sendMessage("Hello Vysper!");
-*/
- connection.disconnect();
+ System.out.println("log received message: " + message.getBody()); }
+ });
+ while (true) {
+ chat.sendMessage("Hello " + to + " at " + new Date());
+ try { Thread.sleep((new Random().nextInt(9)+1)*1000 ); } catch (InterruptedException e) { ; }
+ }
+
+ //connection.disconnect();
} catch (Throwable e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org