Author: kelvingoodson
Date: Fri Sep 29 02:24:29 2006
New Revision: 451191

URL: http://svn.apache.org/viewvc?view=rev&rev=451191
Log:
TUSCANY-115 copy fix from trunk to M2 branch and update release doc

Added:
    
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
    
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd
Modified:
    incubator/tuscany/branches/sdo-java-M2/distribution/sdo/CHANGES.txt
    
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
    
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java

Modified: incubator/tuscany/branches/sdo-java-M2/distribution/sdo/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sdo-java-M2/distribution/sdo/CHANGES.txt?view=diff&rev=451191&r1=451190&r2=451191
==============================================================================
--- incubator/tuscany/branches/sdo-java-M2/distribution/sdo/CHANGES.txt 
(original)
+++ incubator/tuscany/branches/sdo-java-M2/distribution/sdo/CHANGES.txt Fri Sep 
29 02:24:29 2006
@@ -68,4 +68,5 @@
     * support base64Binary and hexBinary XSD types correctly (TUSCANY-685)

     * fixed generation of invalid prefixes in XML serialization (TUSCANY-711)

     * sometimes SDOXMLResourceImpl (instead of XSDResourceImp) was incorrectly 
used when loading .xsd files (TUSCANY-714)

-    * roundtripping an xsd:anyType via XML using XMLStreamHelper gave wrong 
kind of DataObject (TUSCANY-755)
\ No newline at end of file
+    * roundtripping an xsd:anyType via XML using XMLStreamHelper gave wrong 
kind of DataObject (TUSCANY-755)

+    * cardinality of global elements should be adaptive according to usage 
context (TUSCANY-115)
\ No newline at end of file

Modified: 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java?view=diff&rev=451191&r1=451190&r2=451191
==============================================================================
--- 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
 (original)
+++ 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
 Fri Sep 29 02:24:29 2006
@@ -69,6 +69,7 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.ExtendedMetaData;
 import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
 import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
 
 import commonj.sdo.DataGraph;
@@ -189,6 +190,17 @@
   public static boolean isRequired(Property property)
   {
     return ((EStructuralFeature)property).isRequired();
+  }
+
+  /**
+   * Returns whether the Property is many-valued given the specified context.
+   * @param property The Property in question
+   * @param context The context to check whether the specified Property is 
many-valued
+   * @return true if the Property is many-valued given the specified context.
+   */
+  public static boolean isMany(Property property, DataObject context) 
+  {
+    return FeatureMapUtil.isMany((EObject) context, (EStructuralFeature) 
property);
   }
 
   /**

Modified: 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java?view=diff&rev=451191&r1=451190&r2=451191
==============================================================================
--- 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java
 (original)
+++ 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java
 Fri Sep 29 02:24:29 2006
@@ -143,9 +143,7 @@
             return;
         if (property.isMany() && property.getContainingType().isOpen() && 
value instanceof Sequence) {
             addSequenceValue(propertyList, (Sequence) value);
-        } else if ((property.isMany() || isGlobal(property)) && value 
instanceof List) {
-            // HACK: The isGlobal() test is a HACK for JIRA 115. Properties 
for global XSD elements should return
-            // true for isMany()
+        } else if (SDOUtil.isMany(property, dataObject) && value instanceof 
List) {
             addListValue(propertyList, property, (List) value);
         } else {
             // Complex Type
@@ -183,12 +181,6 @@
             }
         }
         return false;
-    }
-
-    private boolean isGlobal(Property property) {
-        String ns = xsdHelper.getNamespaceURI(property);
-        String name = xsdHelper.getLocalName(property);
-        return property == xsdHelper.getGlobalProperty(ns, name, true);
     }
 
     private void addListValue(List propertyList, Property property, List 
objList) {

Added: 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java?view=auto&rev=451191
==============================================================================
--- 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
 (added)
+++ 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
 Fri Sep 29 02:24:29 2006
@@ -0,0 +1,65 @@
+/**

+ *

+ *  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.tuscany.sdo.test;

+

+import java.io.InputStream;

+import java.net.URL;

+

+import org.apache.tuscany.sdo.util.SDOUtil;

+

+import junit.framework.TestCase;

+

+import commonj.sdo.*;

+import commonj.sdo.helper.*;

+

+public class IsManyTestCase extends TestCase {

+    private final String TEST_MODEL = "/open.xsd";

+    private final String TEST_MODEL1ANY = "/open1any.xsd";

+    private final String TEST_NAMESPACE = "http://www.example.com/open";;

+    private final String TEST_NAMESPACE1ANY = 
"http://www.example.com/open1any";;

+

+    public void testIsMany() {

+        Property priceProperty = 
XSDHelper.INSTANCE.getGlobalProperty(TEST_NAMESPACE, "price", true);

+        

+        Type quoteType = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, 
"OpenQuote");

+        DataObject quote = DataFactory.INSTANCE.create(quoteType);

+        assertTrue( SDOUtil.isMany(priceProperty, quote));

+

+        quoteType = TypeHelper.INSTANCE.getType(TEST_NAMESPACE1ANY, 
"OpenQuote");

+        quote = DataFactory.INSTANCE.create(quoteType);

+        assertFalse( SDOUtil.isMany(priceProperty, quote));

+    }

+

+    protected void setUp() throws Exception {

+        super.setUp();

+

+        // Populate the meta data for the test (Stock Quote) model

+        URL url = getClass().getResource(TEST_MODEL);

+        InputStream inputStream = url.openStream();

+        XSDHelper.INSTANCE.define(inputStream, url.toString());

+        inputStream.close();

+

+        // Populate the meta data for the test (Stock Quote) model with 
maxOccurs=1 <any>

+        url = getClass().getResource(TEST_MODEL1ANY);

+        inputStream = url.openStream();

+        XSDHelper.INSTANCE.define(inputStream, url.toString());

+        inputStream.close();

+    }

+}
\ No newline at end of file

Added: 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd?view=auto&rev=451191
==============================================================================
--- 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd 
(added)
+++ 
incubator/tuscany/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd 
Fri Sep 29 02:24:29 2006
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  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.

+ -->

+<xsd:schema 

+  xmlns:simple="http://www.example.com/open1any"; 

+  xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 

+  targetNamespace="http://www.example.com/open1any";> 

+  

+   <xsd:element name="openStockQuote" type="simple:OpenQuote"/>

+   

+   <xsd:element name="price" type="xsd:decimal"/>

+   

+   <xsd:element name="company">

+     <xsd:complexType>

+       <xsd:sequence>

+               <xsd:element name="name" type="xsd:string"/>

+       </xsd:sequence>

+     </xsd:complexType>

+   </xsd:element>

+

+   <xsd:complexType name="OpenQuote">

+       <xsd:sequence>

+          <xsd:element name="symbol" type="xsd:string"/>

+          <xsd:any namespace="##any"/>

+       </xsd:sequence>

+   </xsd:complexType>

+

+</xsd:schema>




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to