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