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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]