tuscany-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rf...@apache.org
Subject svn commit: r450638 - in /incubator/tuscany/java/sdo/impl/src: main/java/org/apache/tuscany/sdo/util/ main/java/org/apache/tuscany/sdo/util/resource/ test/java/org/apache/tuscany/sdo/test/ test/resources/
Date Wed, 27 Sep 2006 23:53:38 GMT
Author: rfeng
Date: Wed Sep 27 16:53:38 2006
New Revision: 450638

URL: http://svn.apache.org/viewvc?view=rev&rev=450638
Log:
Apply Yang's patch for TUSCANY-115. Thanks, Yang.

Added:
    incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
  (with props)
    incubator/tuscany/java/sdo/impl/src/test/resources/open1any.xsd   (with props)
Modified:
    incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
    incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java

Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java?view=diff&rev=450638&r1=450637&r2=450638
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
(original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
Wed Sep 27 16:53:38 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/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java?view=diff&rev=450638&r1=450637&r2=450638
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java
(original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java
Wed Sep 27 16:53:38 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/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java?view=auto&rev=450638
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
(added)
+++ incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
Wed Sep 27 16:53:38 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

Propchange: incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sdo/impl/src/test/resources/open1any.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/resources/open1any.xsd?view=auto&rev=450638
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/test/resources/open1any.xsd (added)
+++ incubator/tuscany/java/sdo/impl/src/test/resources/open1any.xsd Wed Sep 27 16:53:38 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>

Propchange: incubator/tuscany/java/sdo/impl/src/test/resources/open1any.xsd
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sdo/impl/src/test/resources/open1any.xsd
------------------------------------------------------------------------------
    svn:keywords = Rev Date



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


Mime
View raw message