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/11/22 21:40:55 UTC
svn commit: r719913 - in /labs/vysper/src:
main/java/org/apache/vysper/xmpp/modules/core/base/handler/
main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/
main/java/org/apache/vysper/xmpp/stanza/
main/java/org/apache/vysper/xmpp/writer/ main/ja...
Author: berndf
Date: Sat Nov 22 12:40:54 2008
New Revision: 719913
URL: http://svn.apache.org/viewvc?rev=719913&view=rev
Log:
[vysper] make retrieving an attribute's value more simple
Modified:
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/XMLPrologHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/Stanza.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/XMPPCoreStanza.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/writer/DenseStanzaLogRenderer.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementVerifier.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java
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=719913&r1=719912&r2=719913&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 Sat Nov 22 12:40:54 2008
@@ -17,23 +17,22 @@
package org.apache.vysper.xmpp.modules.core.base.handler;
-import org.apache.vysper.xmpp.protocol.StanzaHandler;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.addressing.EntityFormatException;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
-import org.apache.vysper.xmpp.protocol.StreamErrorCondition;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
+import org.apache.vysper.xmpp.protocol.StreamErrorCondition;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.server.SessionState;
import org.apache.vysper.xmpp.server.XMPPVersion;
-import org.apache.vysper.xmpp.server.ServerRuntimeContext;
-import org.apache.vysper.xmpp.server.response.ServerResponses;
import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
+import org.apache.vysper.xmpp.server.response.ServerResponses;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.xmlfragment.XMLElementVerifier;
-import org.apache.vysper.xmpp.xmlfragment.Attribute;
-import org.apache.vysper.xmpp.addressing.EntityImpl;
-import org.apache.vysper.xmpp.addressing.EntityFormatException;
/**
*/
@@ -75,19 +74,15 @@
}
// processing xml:lang
- String xmlLang = null;
- if (xmlElementVerifier.attributePresent("xml:lang")) {
- xmlLang = stanza.getAttribute("xml:lang").getValue();
- }
+ String xmlLang = stanza.getAttributeValue("xml:lang");
sessionContext.setXMLLang(xmlLang);
// processing version
XMPPVersion responseVersion = null;
// if version is not present, version "0.0" is assumed, represented by NULL.
- if (xmlElementVerifier.attributePresent("version")) {
- Attribute attribute = stanza.getAttribute("version");
+ String versionAttributeValue = stanza.getAttributeValue("version");
+ if (versionAttributeValue != null) {
XMPPVersion clientVersion;
- String versionAttributeValue = attribute.getValue();
try {
clientVersion = new XMPPVersion(versionAttributeValue);
} catch (IllegalArgumentException e) {
@@ -115,34 +110,36 @@
Stanza responseStanza = null;
if (clientCall) {
// RFC3920: 'to' attribute SHOULD be used by the initiating entity
- if (xmlElementVerifier.attributePresent("to")) {
+ String toValue = stanza.getAttributeValue("to");
+ if (toValue != null) {
EntityImpl toEntity = null;
try {
- toEntity = EntityImpl.parse(stanza.getAttribute("to").getValue());
+ toEntity = EntityImpl.parse(toValue);
} catch (EntityFormatException e) {
return new ResponseStanzaContainerImpl(
- ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.IMPROPER_ADDRESSING,
- sessionContext.getXMLLang(),
- "could not parse incoming stanza's TO attribute",
- null));
+ ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.IMPROPER_ADDRESSING,
+ sessionContext.getXMLLang(),
+ "could not parse incoming stanza's TO attribute",
+ null));
}
// TODO check if toEntity is served by this server
// if (!server.doesServe(toEntity)) throw WhateverException();
-
+
// TODO RFC3920: 'from' attribute SHOULD be silently ignored by the receiving entity
// TODO RFC3920bis: 'from' attribute SHOULD be not ignored by the receiving entity and used as 'to' in responses
}
responseStanza = new ServerResponses().getStreamOpener(clientCall,
- sessionContext.getServerJID(),
- responseVersion,
- sessionContext);
+ sessionContext.getServerJID(),
+ responseVersion,
+ sessionContext);
} else if (serverCall) {
// RFC3920: 'from' attribute SHOULD be used by the receiving entity
- if (xmlElementVerifier.attributePresent("from")) {
+ String fromValue = stanza.getAttributeValue("from");
+ if (fromValue != null) {
EntityImpl entity = null;
try {
- entity = EntityImpl.parse(stanza.getAttribute("from").getValue());
+ entity = EntityImpl.parse(fromValue);
} catch (EntityFormatException e) {
return new ResponseStanzaContainerImpl(
ServerErrorResponses.getInstance().getStreamError(StreamErrorCondition.INVALID_FROM,
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMLPrologHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMLPrologHandler.java?rev=719913&r1=719912&r2=719913&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMLPrologHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMLPrologHandler.java Sat Nov 22 12:40:54 2008
@@ -45,7 +45,7 @@
public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder) {
XMLElementVerifier xmlElementVerifier = stanza.getVerifier();
- String version = stanza.getAttribute("version").getValue();
+ String version = stanza.getAttributeValue("version");
// TODO check version attribute and other attributes
// String encoding = stanza.getAttribute("encoding").getValue();
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandler.java?rev=719913&r1=719912&r2=719913&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandler.java Sat Nov 22 12:40:54 2008
@@ -25,7 +25,6 @@
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.server.SessionState;
import org.apache.vysper.xmpp.stanza.Stanza;
-import org.apache.vysper.xmpp.xmlfragment.Attribute;
import java.util.List;
@@ -42,11 +41,10 @@
@Override
protected ResponseStanzaContainer executeWorker(Stanza stanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder) {
- Attribute attribute = stanza.getAttribute("mechanism");
- if (attribute == null || attribute.getValue() == null) {
+ String requestedMechanism = stanza.getAttributeValue("mechanism");
+ if (requestedMechanism == null) {
return respondSASLFailure();
}
- String requestedMechanism = attribute.getValue();
SASLMechanism identifiedMechanism = null;
@@ -69,4 +67,4 @@
return new ResponseStanzaContainerImpl(responseStanza);
}
-}
\ No newline at end of file
+}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/Stanza.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/Stanza.java?rev=719913&r1=719912&r2=719913&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/Stanza.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/Stanza.java Sat Nov 22 12:40:54 2008
@@ -62,7 +62,7 @@
boolean isPresent = getVerifier().attributePresent(attributeName);
EntityImpl entity = null;
if (isPresent) {
- String attributeValue = getAttribute(attributeName).getValue();
+ String attributeValue = getAttributeValue(attributeName);
try {
entity = EntityImpl.parse(attributeValue);
} catch (EntityFormatException e) {
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/XMPPCoreStanza.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/XMPPCoreStanza.java?rev=719913&r1=719912&r2=719913&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/XMPPCoreStanza.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/XMPPCoreStanza.java Sat Nov 22 12:40:54 2008
@@ -56,11 +56,11 @@
abstract public String getName();
public String getType() {
- return getVerifier().attributePresent("type") ? getAttribute("type").getValue() : null;
+ return getAttributeValue("type");
}
public String getID() {
- return getVerifier().attributePresent("id") ? getAttribute("id").getValue() : null;
+ return getAttributeValue("id");
}
public boolean isError() {
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=719913&r1=719912&r2=719913&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 Sat Nov 22 12:40:54 2008
@@ -20,6 +20,8 @@
import org.apache.vysper.xmpp.stanza.XMPPCoreStanza;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.Stanza;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.Iterator;
@@ -28,6 +30,9 @@
* renders only reduced digest stanza information for logging output
*/
public class DenseStanzaLogRenderer {
+
+ final static Logger logger = LoggerFactory.getLogger(DenseStanzaLogRenderer.class);
+
private static final String ELEMENT_SEPARATOR = ".";
private static final String ATTR_QUOTE = "'";
private static final String EQUALS = "=";
@@ -55,6 +60,7 @@
return stringBuilder.toString();
} catch (Exception e) {
+ logger.warn("error when rendering stanza {}: {}", stanza.toString(), e);
return "*render-exception*";
}
}
@@ -91,6 +97,12 @@
stringBuilder.append(ELEMENT_SEPARATOR).append("items");
} else if (xmlns.equals("http://jabber.org/protocol/disco#info")) {
stringBuilder.append(ELEMENT_SEPARATOR).append("info");
+ List<XMLElement> features = queryElement.getInnerElementsNamed("feature");
+ if (features != null) for (XMLElement feature : features) {
+ String varAttrValue = feature.getAttributeValue("var");
+ if (varAttrValue == null) varAttrValue = "NOT_GIVEN";
+ renderAttributeForm(stringBuilder, "feature", varAttrValue);
+ }
} else {
stringBuilder.append(ELEMENT_SEPARATOR).append("????");
}
@@ -181,14 +193,18 @@
}
private static void renderAttribute(StringBuilder stringBuilder, XMLElement element, String attributeName) {
- Attribute attribute = element.getAttribute(attributeName);
- if (attribute != null) {
- stringBuilder.append(ELEMENT_SEPARATOR);
- stringBuilder.append(attributeName).append(EQUALS);
- stringBuilder.append(ATTR_QUOTE).append(attribute.getValue()).append(ATTR_QUOTE);
+ String attributeValue = element.getAttributeValue(attributeName);
+ if (attributeValue != null) {
+ renderAttributeForm(stringBuilder, attributeName, attributeValue);
}
}
+ private static void renderAttributeForm(StringBuilder stringBuilder, String attributeName, String value) {
+ stringBuilder.append(ELEMENT_SEPARATOR);
+ stringBuilder.append(attributeName).append(EQUALS);
+ stringBuilder.append(ATTR_QUOTE).append(value).append(ATTR_QUOTE);
+ }
+
private static void renderMessage(StringBuilder stringBuilder, XMLElement stanza, XMLElement firstInnerElement) {
if (firstInnerElement != null) {
stringBuilder.append(ELEMENT_SEPARATOR);
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java?rev=719913&r1=719912&r2=719913&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java Sat Nov 22 12:40:54 2008
@@ -82,8 +82,14 @@
return null;
}
+ public String getAttributeValue(String name) {
+ Attribute attribute = getAttribute(name);
+ if (attribute == null) return null;
+ else return attribute.getValue();
+ }
+
public String getXMLLang() {
- return getVerifier().attributePresent("xml:lang") ? getAttribute("xml:lang").getValue() : null;
+ return getAttributeValue("xml:lang");
}
public List<XMLFragment> getInnerFragments() {
@@ -126,7 +132,7 @@
public XMLText getSingleInnerText() throws XMLSemanticError {
List<XMLText> innerTexts = getInnerTexts();
- if (innerTexts.isEmpty()) return null;
+ if (innerTexts == null || innerTexts.isEmpty()) return null;
if (innerTexts.size() > 1) throw new XMLSemanticError("element has more than one inner text fragment");
return innerTexts.get(0);
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementVerifier.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementVerifier.java?rev=719913&r1=719912&r2=719913&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementVerifier.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementVerifier.java Sat Nov 22 12:40:54 2008
@@ -98,7 +98,7 @@
public boolean attributeEquals(String name, String value) {
return attributePresent(name)
- && element.getAttribute(name).getValue().equals(value);
+ && element.getAttributeValue(name).equals(value);
}
public boolean subElementPresent(String name) {
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java?rev=719913&r1=719912&r2=719913&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java Sat Nov 22 12:40:54 2008
@@ -287,7 +287,7 @@
assertEquals("error", iqStanza.getType());
assertTrue("error embedded", verifier.subElementPresent("error"));
XMLElement errorInner = recordedResponse.getSingleInnerElementsNamed("error");
- assertEquals("modify", errorInner.getAttribute("type").getValue());
+ assertEquals("modify", errorInner.getAttributeValue("type"));
XMLElementVerifier errorVerifier = errorInner.getVerifier();
errorVerifier.subElementPresent("unknown-sender");
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org