You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by be...@apache.org on 2009/05/21 13:19:25 UTC

svn commit: r777068 - in /mina/sandbox/vysper/trunk/src: main/java/org/apache/vysper/xmpp/stanza/dataforms/ test/java/org/apache/vysper/xmpp/stanza/dataforms/

Author: berndf
Date: Thu May 21 11:19:25 2009
New Revision: 777068

URL: http://svn.apache.org/viewvc?rev=777068&view=rev
Log:
[vysper] improve forms, add tests (VYSPER-61)

Added:
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/stanza/dataforms/
    mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/stanza/dataforms/DataFormEncoderTestCase.java
Modified:
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/stanza/dataforms/DataForm.java
    mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/stanza/dataforms/DataFormEncoder.java

Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/stanza/dataforms/DataForm.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/stanza/dataforms/DataForm.java?rev=777068&r1=777067&r2=777068&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/stanza/dataforms/DataForm.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/stanza/dataforms/DataForm.java Thu May 21 11:19:25 2009
@@ -19,12 +19,17 @@
  */
 package org.apache.vysper.xmpp.stanza.dataforms;
 
+import org.apache.vysper.compliance.SpecCompliant;
+import static org.apache.vysper.compliance.SpecCompliant.ComplianceCoverage;
+import static org.apache.vysper.compliance.SpecCompliant.ComplianceStatus;
+
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
 /**
  */
+@SpecCompliant(spec = "XEP-0004", status = ComplianceStatus.IN_PROGRESS, coverage = ComplianceCoverage.PARTIAL)
 public class DataForm {
     
     public static enum Type { 
@@ -94,6 +99,7 @@
         // as the spec requires (XEP-004#3.4, last sentence).
         List<Field> fieldPrototype = items.get(0);
         for (Field field : fieldPrototype) {
+            // copy the relevant reported information
             reportedFields.add(new Field(field.getLabel(), field.getType(), field.getVar()));
         }
 

Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/stanza/dataforms/DataFormEncoder.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/stanza/dataforms/DataFormEncoder.java?rev=777068&r1=777067&r2=777068&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/stanza/dataforms/DataFormEncoder.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/stanza/dataforms/DataFormEncoder.java Thu May 21 11:19:25 2009
@@ -71,7 +71,9 @@
                 XMLElement itemElement = new XMLElement("item", null, (Attribute[])null, itemFields);
                 childElements.add(itemElement);
             }
-        } else {
+        } 
+
+        if (dataForm.getType() != DataForm.Type.cancel) {
             // all fields
             Iterator<Field> fieldIterator = dataForm.getFieldIterator();
             while (fieldIterator.hasNext()) {

Added: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/stanza/dataforms/DataFormEncoderTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/stanza/dataforms/DataFormEncoderTestCase.java?rev=777068&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/stanza/dataforms/DataFormEncoderTestCase.java (added)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/stanza/dataforms/DataFormEncoderTestCase.java Thu May 21 11:19:25 2009
@@ -0,0 +1,76 @@
+/*
+ *  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.stanza.dataforms;
+
+import junit.framework.TestCase;
+import static org.apache.vysper.xmpp.stanza.dataforms.DataForm.Type;
+import static org.apache.vysper.xmpp.stanza.dataforms.Field.Type.*;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+import org.apache.vysper.xmpp.xmlfragment.XMLElementVerifier;
+import org.apache.vysper.xmpp.xmlfragment.XMLSemanticError;
+
+/**
+ */
+public class DataFormEncoderTestCase extends TestCase {
+    
+    
+    
+    public void testXDataForm() throws XMLSemanticError {
+        DataForm form = new DataForm();
+        form.setTitle("ftitle");
+        form.setType(Type.form);
+        form.addInstruction("instruction1");
+        Field field = new Field("label", HIDDEN, "var");
+        field.addValue("val1");
+        field.addOption(new Option("1.", "uno"));
+        field.addOption(new Option("2.", "due"));
+        form.addField(field);
+        
+        XMLElement formElement = DataFormEncoder.getXML(form);
+        XMLElementVerifier formElementVerifier = formElement.getVerifier();
+        formElementVerifier.nameEquals("x");
+        formElementVerifier.attributeEquals("type", "form");
+        formElementVerifier.subElementsPresentExact(3);
+        formElementVerifier.subElementPresent("title");
+        formElementVerifier.subElementPresent("instructions");
+        formElementVerifier.subElementPresent("field");
+
+        XMLElement fieldElement = formElement.getSingleInnerElementsNamed("field");
+        XMLElementVerifier fieldElementVerifier = fieldElement.getVerifier();
+        fieldElementVerifier.subElementsPresentExact(3);
+        formElementVerifier.subElementPresent("value");
+        formElementVerifier.subElementPresent("option");
+        
+
+    }
+    
+    public void testXDataCancel() {
+        DataForm form = new DataForm();
+        form.setType(Type.cancel);
+        form.addField(new Field("label", HIDDEN, "var"));
+
+        XMLElement formElement = DataFormEncoder.getXML(form);
+        assertTrue(formElement.getInnerElements().isEmpty());
+
+
+    }
+    
+    // TODO test 'item' subelements together with 'reported' 
+}