Author: mjakl
Date: Fri Jul  3 21:30:59 2009
New Revision: 791023

URL: http://svn.apache.org/viewvc?rev=791023&view=rev
Log:
Refactoring towards easier features checking.

Modified:
    
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java

Modified: 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java?rev=791023&r1=791022&r2=791023&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
 Fri Jul  3 21:30:59 2009
@@ -1,5 +1,6 @@
 package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.disco;
 
+import java.util.Arrays;
 import java.util.List;
 
 import org.apache.vysper.xmpp.addressing.Entity;
@@ -60,8 +61,8 @@
                     && el.getAttributeValue("type").equals("service")) {
                 identity = el;
             } else if(el.getName().equals("feature")
-                    /*&& 
el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO)*/
-                    && 
el.getAttributeValue("var").equals(NamespaceURIs.XEP0060_PUBSUB)) { // TODO 
enable when the parser is fixed
+                    /*&& 
el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO)*/  // 
TODO enable when the parser is fixed
+                    && 
el.getAttributeValue("var").equals(NamespaceURIs.XEP0060_PUBSUB)) {
                 feature = el;
             }
         }
@@ -96,23 +97,37 @@
         
         // ordering etc. is unknown; step through all subelements and pick the 
ones we need
         XMLElement identity = null;
-        XMLElement feature = null;
         for(XMLElement el : inner) {
             if(el.getName().equals("identity")
                     //&& 
el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO) // TODO 
enable when the parser is fixed
                     && el.getAttributeValue("category").equals("pubsub")
                     && el.getAttributeValue("type").equals("leaf")) {
                 identity = el;
-            } else if(el.getName().equals("feature")
-                    /*&& 
el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO)*/
-                    && 
el.getAttributeValue("var").equals(NamespaceURIs.XEP0060_PUBSUB)) { // TODO 
enable when the parser is fixed
-                feature = el;
             }
         }
         
-        // make sure they were there (booleans would have sufficed)
+        // make sure they were there
         assertNotNull(identity);
-        assertNotNull(feature);
+        
+        XMLElement[] elementList = collectFeatures(inner, new String[] 
{NamespaceURIs.XEP0060_PUBSUB});
+        for(XMLElement el : elementList) {
+            assertNotNull(el);
+        }
+    }
+
+    private XMLElement[] collectFeatures(List<XMLElement> inner, String[] 
features) {
+        XMLElement[] elementList = new XMLElement[features.length];
+        Arrays.sort(features);
+        for(XMLElement el : inner) {
+            if(el.getName().equals("feature"))
+                    /*&& 
el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO)*/ { // 
TODO enable when the parser is fixed
+                int index = Arrays.binarySearch(features, 
el.getAttributeValue("var"));
+                if(index != -1) {
+                    elementList[index] = el;
+                }
+            }
+        }
+        return elementList;
     }
     
     class DefaultDiscoInfoStanzaGenerator extends AbstractStanzaGenerator {


Reply via email to