You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Ron Gavlin (JIRA)" <tu...@ws.apache.org> on 2007/10/04 17:03:51 UTC
[jira] Commented: (TUSCANY-1830) SimpleType extension across mixed
static/dynamic namespaces is broken
[ https://issues.apache.org/jira/browse/TUSCANY-1830?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12532454 ]
Ron Gavlin commented on TUSCANY-1830:
-------------------------------------
I am planning to submit a patch for this in the near future.
- Ron
> SimpleType extension across mixed static/dynamic namespaces is broken
> ---------------------------------------------------------------------
>
> Key: TUSCANY-1830
> URL: https://issues.apache.org/jira/browse/TUSCANY-1830
> Project: Tuscany
> Issue Type: Bug
> Components: Java SDO Implementation
> Affects Versions: Java-SDO-Next
> Reporter: Ron Gavlin
>
> I have a statically registered namespace "http://www.example.com/substitutionEV" with a simpleType named UuidType with a pattern facet. I also have a dynamically registered namespace "http://www.example.com/substitutionEV2" with a simpleType named Uuid2Type which is a restriction of UuidType. When I invoke uuid2Type.getBaseTypes(), the parent UuidType is not returned. I have included a sample test below.
> ==============================
> substitutionWithExtensionValues.xsd
> ==============================
> <schema xmlns="http://www.w3.org/2001/XMLSchema"
> targetNamespace="http://www.example.com/substitutionEV"
> xmlns:sev="http://www.example.com/substitutionEV">
> <!--
> 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.
> -->
> <element name="results" type="sev:ResultsType"/>
>
> <element name="result" type="sev:ResultType"/>
> <element name="myResult" type="sev:MyResultType" substitutionGroup="sev:result"/>
>
> <complexType name="ResultsType">
> <sequence>
> <element name="uuid" type="sev:UuidType"/>
> <element ref="sev:result" minOccurs="0" maxOccurs="unbounded"/>
> <element name="comment" type="string"/>
> </sequence>
> </complexType>
>
> <complexType name="ResultType">
> <sequence>
> <element name="uuid" type="sev:UuidType"/>
> <element name="name" type="string"/>
> <element name="value" type="string"/>
> </sequence>
> </complexType>
>
> <complexType name="MyResultType">
> <complexContent>
> <extension base="sev:ResultType"/>
> </complexContent>
> </complexType>
>
> <simpleType name="UuidType">
> <restriction base="sev:AsciiStringType">
> <pattern value="[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-f]{12}"/>
> </restriction>
> </simpleType>
>
> <simpleType name="AsciiStringType">
> <restriction base="string">
> <pattern value="\p{IsBasicLatin}*"/>
> </restriction>
> </simpleType>
>
> </schema>
> ==============================
> substitutionWithExtensionValues2.xsd
> ==============================
> <schema xmlns="http://www.w3.org/2001/XMLSchema"
> targetNamespace="http://www.example.com/substitutionEV2"
> xmlns:sev2="http://www.example.com/substitutionEV2"
> xmlns:sev="http://www.example.com/substitutionEV">
> <!--
> 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.
> -->
> <import namespace="http://www.example.com/substitutionEV"
> schemaLocation="substitutionWithExtensionValues.xsd" />
> <element name="allResults" type="sev2:AllResultsType" />
> <complexType name="AllResultsType">
> <sequence>
> <element name="uuid" type="sev2:Uuid2Type" />
> <element name="results" minOccurs="0" maxOccurs="unbounded"
> type="sev2:Results2Type" />
> <element name="comment" type="string" />
> </sequence>
> </complexType>
> <complexType name="Results2Type">
> <complexContent>
> <extension base="sev:ResultsType"></extension>
> </complexContent>
> </complexType>
> <simpleType name="Uuid2Type">
> <restriction base="sev:UuidType" />
> </simpleType>
> </schema>
> ==============================
> substitutionWithExtensionValues1.xml
> ==============================
> <?xml version="1.0" encoding="ASCII"?>
> <sev2:allResults xmlns:sev2="http://www.example.com/substitutionEV2">
> <sev2:uuid>ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ</sev2:uuid>
> <sev:results xmlns:sev="http://www.example.com/substitutionEV">
> <sev:uuid>00000000-0000-0000-0000-000000000000</sev:uuid>
> <sev:result>
> <sev:uuid>11111111-1111-1111-1111-111111111111</sev:uuid>
> <sev:name>name1</sev:name>
> <sev:value>value1</sev:value>
> </sev:result>
> <sev:myResult>
> <sev:uuid>22222222-2222-2222-2222-222222222222</sev:uuid>
> <sev:name>myName2</sev:name>
> <sev:value>myValue2</sev:value>
> </sev:myResult>
> <sev:comment>comment0</sev:comment>
> </sev:results>
> <sev:results xmlns:sev="http://www.example.com/substitutionEV">
> <sev:uuid>AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA</sev:uuid>
> <sev:myResult>
> <sev:uuid>BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB</sev:uuid>
> <sev:name>myNameB</sev:name>
> <sev:value>myValueB</sev:value>
> </sev:myResult>
> <sev:comment>commentA</sev:comment>
> </sev:results>
> <sev2:comment>commentZ</sev2:comment>
> </sev2:allResults>
> ==============================
> SubstitutionWithExtensionValuesTestCase.java
> ==============================
> /**
> *
> * 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.IOException;
> import java.io.InputStream;
> import java.net.URL;
> import java.util.List;
> import junit.framework.TestCase;
> import org.eclipse.emf.common.util.Diagnostic;
> import org.eclipse.emf.ecore.EObject;
> import org.eclipse.emf.ecore.util.Diagnostician;
> import com.example.substitution.ev.SEVFactory;
> import com.example.substitution.ev.impl.SEVFactoryImpl;
> import commonj.sdo.DataObject;
> import commonj.sdo.Type;
> import commonj.sdo.helper.HelperContext;
> import commonj.sdo.helper.TypeHelper;
> import commonj.sdo.helper.XMLHelper;
> import commonj.sdo.impl.HelperProvider;
> public final class SubstitutionWithExtensionValuesTestCase extends TestCase
> {
> private String sev2NamespaceURI;
> private HelperContext hc;
>
> protected void setUp() throws Exception {
> super.setUp();
> hc = HelperProvider.getDefaultContext();
> SEVFactory.INSTANCE.register(hc);
>
> URL url = getClass().getResource("/substitutionWithExtensionValues2.xsd");
> InputStream inputStream = url.openStream();
> List sev2TypeList = hc.getXSDHelper().define(inputStream, url.toString());
> inputStream.close();
>
> sev2NamespaceURI = ((Type) sev2TypeList.get(0)).getURI();
> }
> public void test() throws IOException
> {
>
> XMLHelper xmlHelper = hc.getXMLHelper();
> DataObject dataObject =
> xmlHelper.load(getClass().getResourceAsStream("/substitutionWithExtensionValues1.xml")).getRootObject();
> TypeHelper typeHelper = hc.getTypeHelper();
>
> Type resultsType = typeHelper.getType(SEVFactoryImpl.NAMESPACE_URI, "ResultsType");
> Type results2Type = typeHelper.getType(sev2NamespaceURI, "Results2Type");
> assertTrue("Results2 type does not report Results as a base type",
> results2Type.getBaseTypes().contains(resultsType));
>
> Type asciiStringType = typeHelper.getType(SEVFactoryImpl.NAMESPACE_URI, "AsciiStringType");
> Type uuidType = typeHelper.getType(SEVFactoryImpl.NAMESPACE_URI, "UuidType");
> assertTrue("UuidType does not report AsciiStringType as a base type",
> uuidType.getBaseTypes().contains(asciiStringType));
>
> // Both of the following asserts currently fail because of this bug
> Type uuid2Type = typeHelper.getType(sev2NamespaceURI, "Uuid2Type");
> assertTrue("Uuid2Type does not report UuidType as a base type",
> uuid2Type.getBaseTypes().contains(uuidType));
> Diagnostic diagnostic = Diagnostician.INSTANCE.validate((EObject) dataObject);
> assertEquals("EMF validation should have reported Uuid pattern match failure",
> Diagnostic.ERROR, diagnostic.getSeverity());
>
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org