You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2006/06/22 12:25:58 UTC

svn commit: r416319 - in /incubator/tuscany/java/sdo/impl/src: main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java test/java/org/apache/tuscany/sdo/test/XPathTestCase.java

Author: antelder
Date: Thu Jun 22 03:25:56 2006
New Revision: 416319

URL: http://svn.apache.org/viewvc?rev=416319&view=rev
Log:
Apply patch for TUSCANY-475 from Kelvin Goodson

Modified:
    incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java
    incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java

Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java?rev=416319&r1=416318&r2=416319&view=diff
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java Thu Jun 22 03:25:56 2006
@@ -23,6 +23,7 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -1995,8 +1996,16 @@
       return index;
     }
 
+    /*
+     * calling constraint, this method is not to be used for semantic of setting index to NO_INDEX
+     */ 
     protected void setIndex(int index)
     {
+      if(index < 0) {
+        // The index value should be greater than 0.  An index value which is too high will result in
+        // an index out of bounds generated later on accessing the data.
+        throw new IndexOutOfBoundsException("Index value is too low");
+      }
       this.index = index;
       if (!FeatureMapUtil.isMany(eObject, feature))
       {

Modified: incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java?rev=416319&r1=416318&r2=416319&view=diff
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java (original)
+++ incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java Thu Jun 22 03:25:56 2006
@@ -59,4 +59,67 @@
          
         assertEquals(value, "2000-03-23");
     }
+    
+    public void testListIndexing() throws Exception {
+        TypeHelper typeHelper = SDOUtil.createTypeHelper();
+        XSDHelper xsdHelper = SDOUtil.createXSDHelper(typeHelper);
+        XMLHelper xmlHelper = SDOUtil.createXMLHelper(typeHelper);
+
+        URL url = getClass().getResource(TEST_MODEL);
+        InputStream inputStream = url.openStream();
+        xsdHelper.define(inputStream, url.toString());
+
+        inputStream.close();
+
+        XMLDocument doc = xmlHelper.load(getClass().getResourceAsStream(XPATH_XML));
+
+        DataObject root = doc.getRootObject();
+        DataObject folder1 = root.getDataObject("Folder[1]");
+        assertNotNull(folder1);
+        DataObject folder1a = root.getDataObject("Folder.0");
+        assertEquals(folder1, folder1a);
+        folder1a = root.getDataObject("Folder[FolderName=Folder00000000000]");
+        assertEquals(folder1, folder1a);
+
+        DataObject noFolder = null;
+
+        try {
+            noFolder = root.getDataObject("Folder[3]");
+            assertFalse("bad indexing passed", true);
+        } catch (IndexOutOfBoundsException iobe) {
+            // as expected
+        } catch (Exception e) {
+            assertFalse("bad indexing generated wrong exception" + e, true);
+        }
+
+        try {
+            noFolder = root.getDataObject("Folder[0]");
+            assertFalse("bad indexing passed", true);
+        } catch (IndexOutOfBoundsException iobe) {
+            // as expected
+        } catch (Exception e) {
+            assertFalse("bad indexing generated wrong exception" + e, true);
+        }
+
+        try {
+            noFolder = root.getDataObject("Folder.2");
+            assertFalse("bad indexing passed", true);
+        } catch (IndexOutOfBoundsException iobe) {
+            // as expected
+        } catch (Exception e) {
+            assertFalse("bad indexing generated wrong exception" + e, true);
+        }
+
+        try {
+            noFolder = root.getDataObject("Folder.-1");
+            assertFalse("bad indexing passed", true);
+        } catch (IndexOutOfBoundsException iobe) {
+            // as expected
+        } catch (Exception e) {
+            assertFalse("bad indexing generated wrong exception" + e, true);
+        }
+
+        noFolder = root.getDataObject("Folder[FolderName=foo]");
+        assertNull(noFolder);
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org