From dc741421e88c3e4210b00f39877159c5117b99d3 Mon Sep 17 00:00:00 2001 From: lresende Date: Tue, 10 Nov 2009 19:19:03 +0000 Subject: moving SDO branches git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@834611 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/test/java/com/example/simple/Quote.java | 310 +++++++ .../java/com/example/simple/SimpleFactory.java | 49 ++ .../java/com/example/simple/impl/QuoteImpl.java | 715 ++++++++++++++++ .../com/example/simple/impl/SimpleFactoryImpl.java | 141 ++++ .../com/example/simple/impl/SimplePackageImpl.java | 911 +++++++++++++++++++++ .../java/org/apache/tuscany/sdo/codegen/Bar1.java | 26 + .../java/org/apache/tuscany/sdo/codegen/Bar2.java | 26 + .../BytecodeInterfaceGeneratorTestCase.java | 167 ++++ .../java/org/apache/tuscany/sdo/codegen/Foo.java | 26 + .../codegen/JavaInterfaceGeneratorTestCase.java | 129 +++ .../apache/tuscany/sdo/codegen/MockProperty.java | 78 ++ .../org/apache/tuscany/sdo/codegen/MockType.java | 96 +++ .../tuscany/sdo/test/ChangeSummaryTestCase.java | 92 +++ .../tuscany/sdo/test/CrossScopeCopyTestCase.java | 469 +++++++++++ .../tuscany/sdo/test/DataTypeBaseTypeTestCase.java | 68 ++ .../tuscany/sdo/test/DateConversionTestCase.java | 366 +++++++++ .../test/DefineOpenContentPropertyTestCase.java | 123 +++ .../tuscany/sdo/test/DefineTypeTestCase.java | 627 ++++++++++++++ .../apache/tuscany/sdo/test/IsManyTestCase.java | 65 ++ .../org/apache/tuscany/sdo/test/JiraTestCases.java | 184 +++++ .../apache/tuscany/sdo/test/MixedTypeTestCase.java | 89 ++ .../apache/tuscany/sdo/test/OpenTypeTestCase.java | 85 ++ .../tuscany/sdo/test/SerializeTypesTestCase.java | 133 +++ .../tuscany/sdo/test/SimpleCopyTestCase.java | 71 ++ .../tuscany/sdo/test/SimpleDynamicTestCase.java | 81 ++ .../tuscany/sdo/test/SimpleEqualityTestCase.java | 63 ++ .../sdo/test/SubstitutionValuesTestCase.java | 47 ++ .../java/org/apache/tuscany/sdo/test/TestUtil.java | 285 +++++++ .../tuscany/sdo/test/TypeConversionTestCase.java | 883 ++++++++++++++++++++ .../tuscany/sdo/test/TypeRoundTripTestCase.java | 147 ++++ .../tuscany/sdo/test/XMLDocumentTestCase.java | 110 +++ .../tuscany/sdo/test/XMLStreamHelperTestCase.java | 144 ++++ .../org/apache/tuscany/sdo/test/XPathTestCase.java | 128 +++ .../apache/tuscany/sdo/test/XSDHelperTestCase.java | 192 +++++ .../impl/src/test/resources/SubstitutionValues.xsd | 30 + .../XMLDocumentNoNamespaceSchemaLocation.xsd | 31 + .../test/resources/XMLDocumentSchemaLocation.xsd | 35 + .../src/test/resources/XMLDocumentTestCase.xml | 14 + .../sdo/impl/src/test/resources/api_test.xsd | 46 ++ .../sdo/impl/src/test/resources/bank.xsd | 78 ++ .../sdo/impl/src/test/resources/company.xsd | 44 + .../sdo/impl/src/test/resources/customer1.xml | 8 + .../sdo/impl/src/test/resources/customer2.xml | 8 + .../sdo/impl/src/test/resources/datatype.xsd | 34 + .../sdo/impl/src/test/resources/foo-ext.xml | 9 + .../sdo/impl/src/test/resources/foo-ext.xsd | 44 + .../sdo/impl/src/test/resources/foo.xsd | 232 ++++++ .../sdo/impl/src/test/resources/mixed.xml | 9 + .../sdo/impl/src/test/resources/mixed.xsd | 41 + .../sdo/impl/src/test/resources/mixed2.xml | 12 + .../sdo/impl/src/test/resources/mixedopen.xml | 13 + .../sdo/impl/src/test/resources/names.xsd | 33 + .../sdo/impl/src/test/resources/open.xml | 8 + .../sdo/impl/src/test/resources/open.xsd | 44 + .../sdo/impl/src/test/resources/open1any.xsd | 44 + .../sdo/impl/src/test/resources/open2.xml | 9 + .../src/test/resources/openContentProperty.xml | 12 + .../sdo-java-M2/sdo/impl/src/test/resources/po.xsd | 62 ++ .../sdo/impl/src/test/resources/quote.xml | 14 + .../sdo/impl/src/test/resources/sdoannotations.xsd | 60 ++ .../sdo/impl/src/test/resources/sdotypes.xsd | 71 ++ .../sdo/impl/src/test/resources/shallowquote.xml | 11 + .../sdo/impl/src/test/resources/simple.xsd | 41 + .../src/test/resources/simplechangesummary.xml | 36 + .../sdo/impl/src/test/resources/xpath.xml | 51 ++ .../sdo/impl/src/test/resources/xpath.xsd | 75 ++ 66 files changed, 8385 insertions(+) create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/Quote.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/SimpleFactory.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/QuoteImpl.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimpleFactoryImpl.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimplePackageImpl.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar1.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar2.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGeneratorTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Foo.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGeneratorTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockProperty.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockType.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/CrossScopeCopyTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DataTypeBaseTypeTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DateConversionTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineOpenContentPropertyTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineTypeTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/JiraTestCases.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/MixedTypeTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/OpenTypeTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleCopyTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleDynamicTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleEqualityTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SubstitutionValuesTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TestUtil.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeConversionTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLDocumentTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XSDHelperTestCase.java create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/SubstitutionValues.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentNoNamespaceSchemaLocation.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentSchemaLocation.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentTestCase.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/api_test.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/bank.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/company.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/customer1.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/customer2.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/datatype.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed2.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixedopen.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/names.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open2.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/openContentProperty.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/po.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/quote.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/sdoannotations.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/sdotypes.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/shallowquote.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/simple.xsd create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/simplechangesummary.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xml create mode 100644 sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xsd (limited to 'sdo-java/branches/sdo-java-M2/sdo/impl/src/test') diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/Quote.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/Quote.java new file mode 100644 index 0000000000..2855d2a67c --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/Quote.java @@ -0,0 +1,310 @@ +/** + * + * 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 com.example.simple; + +import java.math.BigDecimal; + +import java.util.List; + +/** + * + * A representation of the model object 'Quote'. + * + * + *

+ * The following features are supported: + *

+ *

+ * + * @generated + */ +public interface Quote +{ + /** + * Returns the value of the 'Symbol' attribute. + * + *

+ * If the meaning of the 'Symbol' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Symbol' attribute. + * @see #setSymbol(String) + * @generated + */ + String getSymbol(); + + /** + * Sets the value of the '{@link com.example.simple.Quote#getSymbol Symbol}' attribute. + * + * + * @param value the new value of the 'Symbol' attribute. + * @see #getSymbol() + * @generated + */ + void setSymbol(String value); + + /** + * Returns the value of the 'Company Name' attribute. + * + *

+ * If the meaning of the 'Company Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Company Name' attribute. + * @see #setCompanyName(String) + * @generated + */ + String getCompanyName(); + + /** + * Sets the value of the '{@link com.example.simple.Quote#getCompanyName Company Name}' attribute. + * + * + * @param value the new value of the 'Company Name' attribute. + * @see #getCompanyName() + * @generated + */ + void setCompanyName(String value); + + /** + * Returns the value of the 'Price' attribute. + * + *

+ * If the meaning of the 'Price' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Price' attribute. + * @see #setPrice(BigDecimal) + * @generated + */ + BigDecimal getPrice(); + + /** + * Sets the value of the '{@link com.example.simple.Quote#getPrice Price}' attribute. + * + * + * @param value the new value of the 'Price' attribute. + * @see #getPrice() + * @generated + */ + void setPrice(BigDecimal value); + + /** + * Returns the value of the 'Open1' attribute. + * + *

+ * If the meaning of the 'Open1' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Open1' attribute. + * @see #setOpen1(BigDecimal) + * @generated + */ + BigDecimal getOpen1(); + + /** + * Sets the value of the '{@link com.example.simple.Quote#getOpen1 Open1}' attribute. + * + * + * @param value the new value of the 'Open1' attribute. + * @see #getOpen1() + * @generated + */ + void setOpen1(BigDecimal value); + + /** + * Returns the value of the 'High' attribute. + * + *

+ * If the meaning of the 'High' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'High' attribute. + * @see #setHigh(BigDecimal) + * @generated + */ + BigDecimal getHigh(); + + /** + * Sets the value of the '{@link com.example.simple.Quote#getHigh High}' attribute. + * + * + * @param value the new value of the 'High' attribute. + * @see #getHigh() + * @generated + */ + void setHigh(BigDecimal value); + + /** + * Returns the value of the 'Low' attribute. + * + *

+ * If the meaning of the 'Low' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Low' attribute. + * @see #setLow(BigDecimal) + * @generated + */ + BigDecimal getLow(); + + /** + * Sets the value of the '{@link com.example.simple.Quote#getLow Low}' attribute. + * + * + * @param value the new value of the 'Low' attribute. + * @see #getLow() + * @generated + */ + void setLow(BigDecimal value); + + /** + * Returns the value of the 'Volume' attribute. + * + *

+ * If the meaning of the 'Volume' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Volume' attribute. + * @see #isSetVolume() + * @see #unsetVolume() + * @see #setVolume(double) + * @generated + */ + double getVolume(); + + /** + * Sets the value of the '{@link com.example.simple.Quote#getVolume Volume}' attribute. + * + * + * @param value the new value of the 'Volume' attribute. + * @see #isSetVolume() + * @see #unsetVolume() + * @see #getVolume() + * @generated + */ + void setVolume(double value); + + /** + * Unsets the value of the '{@link com.example.simple.Quote#getVolume Volume}' attribute. + * + * + * @see #isSetVolume() + * @see #getVolume() + * @see #setVolume(double) + * @generated + */ + void unsetVolume(); + + /** + * Returns whether the value of the '{@link com.example.simple.Quote#getVolume Volume}' attribute is set. + * + * + * @return whether the value of the 'Volume' attribute is set. + * @see #unsetVolume() + * @see #getVolume() + * @see #setVolume(double) + * @generated + */ + boolean isSetVolume(); + + /** + * Returns the value of the 'Change1' attribute. + * + *

+ * If the meaning of the 'Change1' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Change1' attribute. + * @see #isSetChange1() + * @see #unsetChange1() + * @see #setChange1(double) + * @generated + */ + double getChange1(); + + /** + * Sets the value of the '{@link com.example.simple.Quote#getChange1 Change1}' attribute. + * + * + * @param value the new value of the 'Change1' attribute. + * @see #isSetChange1() + * @see #unsetChange1() + * @see #getChange1() + * @generated + */ + void setChange1(double value); + + /** + * Unsets the value of the '{@link com.example.simple.Quote#getChange1 Change1}' attribute. + * + * + * @see #isSetChange1() + * @see #getChange1() + * @see #setChange1(double) + * @generated + */ + void unsetChange1(); + + /** + * Returns whether the value of the '{@link com.example.simple.Quote#getChange1 Change1}' attribute is set. + * + * + * @return whether the value of the 'Change1' attribute is set. + * @see #unsetChange1() + * @see #getChange1() + * @see #setChange1(double) + * @generated + */ + boolean isSetChange1(); + + /** + * Returns the value of the 'Quotes' containment reference list. + * The list contents are of type {@link com.example.simple.Quote}. + * + *

+ * If the meaning of the 'Quotes' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Quotes' containment reference list. + * @generated + */ + List getQuotes(); + +} // Quote diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/SimpleFactory.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/SimpleFactory.java new file mode 100644 index 0000000000..4f33a3e19f --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/SimpleFactory.java @@ -0,0 +1,49 @@ +/** + * + * 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 com.example.simple; + + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @generated + */ +public interface SimpleFactory +{ + /** + * The singleton instance of the factory. + * + * + * @generated + */ + SimpleFactory INSTANCE = com.example.simple.impl.SimpleFactoryImpl.eINSTANCE; + + /** + * Returns a new object of class 'Quote'. + * + * + * @return a new object of class 'Quote'. + * @generated + */ + Quote createQuote(); + +} //SimpleFactory diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/QuoteImpl.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/QuoteImpl.java new file mode 100644 index 0000000000..18c63894af --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/QuoteImpl.java @@ -0,0 +1,715 @@ +/** + * + * 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 com.example.simple.impl; + +import com.example.simple.Quote; + +import java.math.BigDecimal; + +import java.util.Collection; +import java.util.List; + +import org.apache.tuscany.sdo.impl.DataObjectImpl; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Quote'. + * + *

+ * The following features are implemented: + *

+ *

+ * + * @generated + */ +public class QuoteImpl extends DataObjectImpl implements Quote +{ + /** + * The default value of the '{@link #getSymbol() Symbol}' attribute. + * + * + * @see #getSymbol() + * @generated + * @ordered + */ + protected static final String SYMBOL_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSymbol() Symbol}' attribute. + * + * + * @see #getSymbol() + * @generated + * @ordered + */ + protected String symbol = SYMBOL_EDEFAULT; + + /** + * The default value of the '{@link #getCompanyName() Company Name}' attribute. + * + * + * @see #getCompanyName() + * @generated + * @ordered + */ + protected static final String COMPANY_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getCompanyName() Company Name}' attribute. + * + * + * @see #getCompanyName() + * @generated + * @ordered + */ + protected String companyName = COMPANY_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getPrice() Price}' attribute. + * + * + * @see #getPrice() + * @generated + * @ordered + */ + protected static final BigDecimal PRICE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getPrice() Price}' attribute. + * + * + * @see #getPrice() + * @generated + * @ordered + */ + protected BigDecimal price = PRICE_EDEFAULT; + + /** + * The default value of the '{@link #getOpen1() Open1}' attribute. + * + * + * @see #getOpen1() + * @generated + * @ordered + */ + protected static final BigDecimal OPEN1_EDEFAULT = null; + + /** + * The cached value of the '{@link #getOpen1() Open1}' attribute. + * + * + * @see #getOpen1() + * @generated + * @ordered + */ + protected BigDecimal open1 = OPEN1_EDEFAULT; + + /** + * The default value of the '{@link #getHigh() High}' attribute. + * + * + * @see #getHigh() + * @generated + * @ordered + */ + protected static final BigDecimal HIGH_EDEFAULT = null; + + /** + * The cached value of the '{@link #getHigh() High}' attribute. + * + * + * @see #getHigh() + * @generated + * @ordered + */ + protected BigDecimal high = HIGH_EDEFAULT; + + /** + * The default value of the '{@link #getLow() Low}' attribute. + * + * + * @see #getLow() + * @generated + * @ordered + */ + protected static final BigDecimal LOW_EDEFAULT = null; + + /** + * The cached value of the '{@link #getLow() Low}' attribute. + * + * + * @see #getLow() + * @generated + * @ordered + */ + protected BigDecimal low = LOW_EDEFAULT; + + /** + * The default value of the '{@link #getVolume() Volume}' attribute. + * + * + * @see #getVolume() + * @generated + * @ordered + */ + protected static final double VOLUME_EDEFAULT = 0.0; + + /** + * The cached value of the '{@link #getVolume() Volume}' attribute. + * + * + * @see #getVolume() + * @generated + * @ordered + */ + protected double volume = VOLUME_EDEFAULT; + + /** + * This is true if the Volume attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean volumeESet = false; + + /** + * The default value of the '{@link #getChange1() Change1}' attribute. + * + * + * @see #getChange1() + * @generated + * @ordered + */ + protected static final double CHANGE1_EDEFAULT = 0.0; + + /** + * The cached value of the '{@link #getChange1() Change1}' attribute. + * + * + * @see #getChange1() + * @generated + * @ordered + */ + protected double change1 = CHANGE1_EDEFAULT; + + /** + * This is true if the Change1 attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean change1ESet = false; + + /** + * The cached value of the '{@link #getQuotes() Quotes}' containment reference list. + * + * + * @see #getQuotes() + * @generated + * @ordered + */ + protected EList quotes = null; + + /** + * + * + * @generated + */ + protected QuoteImpl() + { + super(); + } + + /** + * + * + * @generated + */ + protected EClass eStaticClass() + { + return SimplePackageImpl.Literals.QUOTE; + } + + /** + * + * + * @generated + */ + public String getSymbol() + { + return symbol; + } + + /** + * + * + * @generated + */ + public void setSymbol(String newSymbol) + { + String oldSymbol = symbol; + symbol = newSymbol; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__SYMBOL, oldSymbol, symbol)); + } + + /** + * + * + * @generated + */ + public String getCompanyName() + { + return companyName; + } + + /** + * + * + * @generated + */ + public void setCompanyName(String newCompanyName) + { + String oldCompanyName = companyName; + companyName = newCompanyName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__COMPANY_NAME, oldCompanyName, companyName)); + } + + /** + * + * + * @generated + */ + public BigDecimal getPrice() + { + return price; + } + + /** + * + * + * @generated + */ + public void setPrice(BigDecimal newPrice) + { + BigDecimal oldPrice = price; + price = newPrice; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__PRICE, oldPrice, price)); + } + + /** + * + * + * @generated + */ + public BigDecimal getOpen1() + { + return open1; + } + + /** + * + * + * @generated + */ + public void setOpen1(BigDecimal newOpen1) + { + BigDecimal oldOpen1 = open1; + open1 = newOpen1; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__OPEN1, oldOpen1, open1)); + } + + /** + * + * + * @generated + */ + public BigDecimal getHigh() + { + return high; + } + + /** + * + * + * @generated + */ + public void setHigh(BigDecimal newHigh) + { + BigDecimal oldHigh = high; + high = newHigh; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__HIGH, oldHigh, high)); + } + + /** + * + * + * @generated + */ + public BigDecimal getLow() + { + return low; + } + + /** + * + * + * @generated + */ + public void setLow(BigDecimal newLow) + { + BigDecimal oldLow = low; + low = newLow; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__LOW, oldLow, low)); + } + + /** + * + * + * @generated + */ + public double getVolume() + { + return volume; + } + + /** + * + * + * @generated + */ + public void setVolume(double newVolume) + { + double oldVolume = volume; + volume = newVolume; + boolean oldVolumeESet = volumeESet; + volumeESet = true; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__VOLUME, oldVolume, volume, !oldVolumeESet)); + } + + /** + * + * + * @generated + */ + public void unsetVolume() + { + double oldVolume = volume; + boolean oldVolumeESet = volumeESet; + volume = VOLUME_EDEFAULT; + volumeESet = false; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.UNSET, SimplePackageImpl.QUOTE__VOLUME, oldVolume, VOLUME_EDEFAULT, oldVolumeESet)); + } + + /** + * + * + * @generated + */ + public boolean isSetVolume() + { + return volumeESet; + } + + /** + * + * + * @generated + */ + public double getChange1() + { + return change1; + } + + /** + * + * + * @generated + */ + public void setChange1(double newChange1) + { + double oldChange1 = change1; + change1 = newChange1; + boolean oldChange1ESet = change1ESet; + change1ESet = true; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__CHANGE1, oldChange1, change1, !oldChange1ESet)); + } + + /** + * + * + * @generated + */ + public void unsetChange1() + { + double oldChange1 = change1; + boolean oldChange1ESet = change1ESet; + change1 = CHANGE1_EDEFAULT; + change1ESet = false; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.UNSET, SimplePackageImpl.QUOTE__CHANGE1, oldChange1, CHANGE1_EDEFAULT, oldChange1ESet)); + } + + /** + * + * + * @generated + */ + public boolean isSetChange1() + { + return change1ESet; + } + + /** + * + * + * @generated + */ + public List getQuotes() + { + if (quotes == null) + { + quotes = new EObjectContainmentEList(Quote.class, this, SimplePackageImpl.QUOTE__QUOTES); + } + return quotes; + } + + /** + * + * + * @generated + */ + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case SimplePackageImpl.QUOTE__QUOTES: + return ((InternalEList)getQuotes()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case SimplePackageImpl.QUOTE__SYMBOL: + return getSymbol(); + case SimplePackageImpl.QUOTE__COMPANY_NAME: + return getCompanyName(); + case SimplePackageImpl.QUOTE__PRICE: + return getPrice(); + case SimplePackageImpl.QUOTE__OPEN1: + return getOpen1(); + case SimplePackageImpl.QUOTE__HIGH: + return getHigh(); + case SimplePackageImpl.QUOTE__LOW: + return getLow(); + case SimplePackageImpl.QUOTE__VOLUME: + return new Double(getVolume()); + case SimplePackageImpl.QUOTE__CHANGE1: + return new Double(getChange1()); + case SimplePackageImpl.QUOTE__QUOTES: + return getQuotes(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case SimplePackageImpl.QUOTE__SYMBOL: + setSymbol((String)newValue); + return; + case SimplePackageImpl.QUOTE__COMPANY_NAME: + setCompanyName((String)newValue); + return; + case SimplePackageImpl.QUOTE__PRICE: + setPrice((BigDecimal)newValue); + return; + case SimplePackageImpl.QUOTE__OPEN1: + setOpen1((BigDecimal)newValue); + return; + case SimplePackageImpl.QUOTE__HIGH: + setHigh((BigDecimal)newValue); + return; + case SimplePackageImpl.QUOTE__LOW: + setLow((BigDecimal)newValue); + return; + case SimplePackageImpl.QUOTE__VOLUME: + setVolume(((Double)newValue).doubleValue()); + return; + case SimplePackageImpl.QUOTE__CHANGE1: + setChange1(((Double)newValue).doubleValue()); + return; + case SimplePackageImpl.QUOTE__QUOTES: + getQuotes().clear(); + getQuotes().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + public void eUnset(int featureID) + { + switch (featureID) + { + case SimplePackageImpl.QUOTE__SYMBOL: + setSymbol(SYMBOL_EDEFAULT); + return; + case SimplePackageImpl.QUOTE__COMPANY_NAME: + setCompanyName(COMPANY_NAME_EDEFAULT); + return; + case SimplePackageImpl.QUOTE__PRICE: + setPrice(PRICE_EDEFAULT); + return; + case SimplePackageImpl.QUOTE__OPEN1: + setOpen1(OPEN1_EDEFAULT); + return; + case SimplePackageImpl.QUOTE__HIGH: + setHigh(HIGH_EDEFAULT); + return; + case SimplePackageImpl.QUOTE__LOW: + setLow(LOW_EDEFAULT); + return; + case SimplePackageImpl.QUOTE__VOLUME: + unsetVolume(); + return; + case SimplePackageImpl.QUOTE__CHANGE1: + unsetChange1(); + return; + case SimplePackageImpl.QUOTE__QUOTES: + getQuotes().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case SimplePackageImpl.QUOTE__SYMBOL: + return SYMBOL_EDEFAULT == null ? symbol != null : !SYMBOL_EDEFAULT.equals(symbol); + case SimplePackageImpl.QUOTE__COMPANY_NAME: + return COMPANY_NAME_EDEFAULT == null ? companyName != null : !COMPANY_NAME_EDEFAULT.equals(companyName); + case SimplePackageImpl.QUOTE__PRICE: + return PRICE_EDEFAULT == null ? price != null : !PRICE_EDEFAULT.equals(price); + case SimplePackageImpl.QUOTE__OPEN1: + return OPEN1_EDEFAULT == null ? open1 != null : !OPEN1_EDEFAULT.equals(open1); + case SimplePackageImpl.QUOTE__HIGH: + return HIGH_EDEFAULT == null ? high != null : !HIGH_EDEFAULT.equals(high); + case SimplePackageImpl.QUOTE__LOW: + return LOW_EDEFAULT == null ? low != null : !LOW_EDEFAULT.equals(low); + case SimplePackageImpl.QUOTE__VOLUME: + return isSetVolume(); + case SimplePackageImpl.QUOTE__CHANGE1: + return isSetChange1(); + case SimplePackageImpl.QUOTE__QUOTES: + return quotes != null && !quotes.isEmpty(); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (symbol: "); + result.append(symbol); + result.append(", companyName: "); + result.append(companyName); + result.append(", price: "); + result.append(price); + result.append(", open1: "); + result.append(open1); + result.append(", high: "); + result.append(high); + result.append(", low: "); + result.append(low); + result.append(", volume: "); + if (volumeESet) result.append(volume); else result.append(""); + result.append(", change1: "); + if (change1ESet) result.append(change1); else result.append(""); + result.append(')'); + return result.toString(); + } + +} //QuoteImpl diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimpleFactoryImpl.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimpleFactoryImpl.java new file mode 100644 index 0000000000..5f275a94d4 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimpleFactoryImpl.java @@ -0,0 +1,141 @@ +/** + * + * 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 com.example.simple.impl; + +import com.example.simple.*; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class SimpleFactoryImpl extends EFactoryImpl implements SimpleFactory +{ + /** + * The singleton instance of the factory. + * + * + * @generated + */ + public static final SimpleFactoryImpl eINSTANCE = init(); + + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static SimpleFactoryImpl init() + { + try + { + SimpleFactoryImpl theSimpleFactory = (SimpleFactoryImpl)EPackage.Registry.INSTANCE.getEFactory("http://www.example.com/simple"); + if (theSimpleFactory != null) + { + return theSimpleFactory; + } + } + catch (Exception exception) + { + EcorePlugin.INSTANCE.log(exception); + } + return new SimpleFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public SimpleFactoryImpl() + { + super(); + } + + /** + * + * + * @generated + */ + public EObject create(EClass eClass) + { + switch (eClass.getClassifierID()) + { + case SimplePackageImpl.DOCUMENT_ROOT: return (EObject)createDocumentRoot(); + case SimplePackageImpl.QUOTE: return (EObject)createQuote(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public EObject createDocumentRoot() + { + EObject documentRoot = super.create(SimplePackageImpl.Literals.DOCUMENT_ROOT); + return documentRoot; + } + + /** + * + * + * @generated + */ + public Quote createQuote() + { + QuoteImpl quote = new QuoteImpl(); + return quote; + } + + /** + * + * + * @generated + */ + public SimplePackageImpl getSimplePackageImpl() + { + return (SimplePackageImpl)getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + public static SimplePackageImpl getPackage() + { + return SimplePackageImpl.eINSTANCE; + } + +} //SimpleFactoryImpl diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimplePackageImpl.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimplePackageImpl.java new file mode 100644 index 0000000000..50ad614fd7 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimplePackageImpl.java @@ -0,0 +1,911 @@ +/** + * + * 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 com.example.simple.impl; + +import com.example.simple.Quote; +import com.example.simple.SimpleFactory; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EFactory; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +import org.eclipse.emf.ecore.xml.type.XMLTypePackage; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see com.example.simple.SimpleFactory + * @generated + */ +public class SimplePackageImpl extends EPackageImpl +{ + /** + * The package name. + * + * + * @generated + */ + public static final String eNAME = "simple"; + + /** + * The package namespace URI. + * + * + * @generated + */ + public static final String eNS_URI = "http://www.example.com/simple"; + + /** + * The package namespace name. + * + * + * @generated + */ + public static final String eNS_PREFIX = "simple"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + public static final SimplePackageImpl eINSTANCE = com.example.simple.impl.SimplePackageImpl.init(); + + /** + * The meta object id for the '{@link com.example.simple.impl.DocumentRootImpl Document Root}' class. + * + * + * @see com.example.simple.impl.DocumentRootImpl + * @see com.example.simple.impl.SimplePackageImpl#getDocumentRoot() + * @generated + */ + public static final int DOCUMENT_ROOT = 0; + + /** + * The feature id for the 'Mixed' attribute list. + * + * + * @generated + * @ordered + */ + public static final int DOCUMENT_ROOT__MIXED = 0; + + /** + * The feature id for the 'XMLNS Prefix Map' map. + * + * + * @generated + * @ordered + */ + public static final int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1; + + /** + * The feature id for the 'XSI Schema Location' map. + * + * + * @generated + * @ordered + */ + public static final int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2; + + /** + * The feature id for the 'Stock Quote' containment reference. + * + * + * @generated + * @ordered + */ + public static final int DOCUMENT_ROOT__STOCK_QUOTE = 3; + + /** + * The number of structural features of the 'Document Root' class. + * + * + * @generated + * @ordered + */ + public static final int DOCUMENT_ROOT_FEATURE_COUNT = 4; + + /** + * The meta object id for the '{@link com.example.simple.impl.QuoteImpl Quote}' class. + * + * + * @see com.example.simple.impl.QuoteImpl + * @see com.example.simple.impl.SimplePackageImpl#getQuote() + * @generated + */ + public static final int QUOTE = 1; + + /** + * The feature id for the 'Symbol' attribute. + * + * + * @generated + * @ordered + */ + public static final int QUOTE__SYMBOL = 0; + + /** + * The feature id for the 'Company Name' attribute. + * + * + * @generated + * @ordered + */ + public static final int QUOTE__COMPANY_NAME = 1; + + /** + * The feature id for the 'Price' attribute. + * + * + * @generated + * @ordered + */ + public static final int QUOTE__PRICE = 2; + + /** + * The feature id for the 'Open1' attribute. + * + * + * @generated + * @ordered + */ + public static final int QUOTE__OPEN1 = 3; + + /** + * The feature id for the 'High' attribute. + * + * + * @generated + * @ordered + */ + public static final int QUOTE__HIGH = 4; + + /** + * The feature id for the 'Low' attribute. + * + * + * @generated + * @ordered + */ + public static final int QUOTE__LOW = 5; + + /** + * The feature id for the 'Volume' attribute. + * + * + * @generated + * @ordered + */ + public static final int QUOTE__VOLUME = 6; + + /** + * The feature id for the 'Change1' attribute. + * + * + * @generated + * @ordered + */ + public static final int QUOTE__CHANGE1 = 7; + + /** + * The feature id for the 'Quotes' containment reference list. + * + * + * @generated + * @ordered + */ + public static final int QUOTE__QUOTES = 8; + + /** + * The number of structural features of the 'Quote' class. + * + * + * @generated + * @ordered + */ + public static final int QUOTE_FEATURE_COUNT = 9; + + /** + * + * + * @generated + */ + private EClass documentRootEClass = null; + + /** + * + * + * @generated + */ + private EClass quoteEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see com.example.simple.impl.SimplePackageImpl#eNS_URI + * @see #init() + * @generated + */ + private SimplePackageImpl() + { + super(eNS_URI, ((EFactory)SimpleFactory.INSTANCE)); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this + * model, and for any others upon which it depends. Simple + * dependencies are satisfied by calling this method on all + * dependent packages before doing anything else. This method drives + * initialization for interdependent packages directly, in parallel + * with this package, itself. + *

Of this package and its interdependencies, all packages which + * have not yet been registered by their URI values are first created + * and registered. The packages are then initialized in two steps: + * meta-model objects for all of the packages are created before any + * are initialized, since one package's meta-model objects may refer to + * those of another. + *

Invocation of this method will not affect any packages that have + * already been initialized. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static SimplePackageImpl init() + { + if (isInited) return (SimplePackageImpl)EPackage.Registry.INSTANCE.getEPackage(SimplePackageImpl.eNS_URI); + + // Obtain or create and register package + SimplePackageImpl theSimplePackageImpl = (SimplePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof SimplePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new SimplePackageImpl()); + + isInited = true; + + // Initialize simple dependencies + XMLTypePackage.eINSTANCE.eClass(); + + // Create package meta-data objects + theSimplePackageImpl.createPackageContents(); + + // Initialize created meta-data + theSimplePackageImpl.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theSimplePackageImpl.freeze(); + + return theSimplePackageImpl; + } + + + /** + * Returns the meta object for class '{@link org.eclipse.emf.ecore.EObject Document Root}'. + * + * + * @return the meta object for class 'Document Root'. + * @see org.eclipse.emf.ecore.EObject + * @generated + */ + public EClass getDocumentRoot() + { + return documentRootEClass; + } + + /** + * Returns the meta object for the attribute list '{@link org.eclipse.emf.ecore.EObject#getMixed Mixed}'. + * + * + * @return the meta object for the attribute list 'Mixed'. + * @see org.eclipse.emf.ecore.EObject#getMixed() + * @see #getDocumentRoot() + * @generated + */ + public EAttribute getDocumentRoot_Mixed() + { + return (EAttribute)documentRootEClass.getEStructuralFeatures().get(0); + } + + /** + * Returns the meta object for the map '{@link org.eclipse.emf.ecore.EObject#getXMLNSPrefixMap XMLNS Prefix Map}'. + * + * + * @return the meta object for the map 'XMLNS Prefix Map'. + * @see org.eclipse.emf.ecore.EObject#getXMLNSPrefixMap() + * @see #getDocumentRoot() + * @generated + */ + public EReference getDocumentRoot_XMLNSPrefixMap() + { + return (EReference)documentRootEClass.getEStructuralFeatures().get(1); + } + + /** + * Returns the meta object for the map '{@link org.eclipse.emf.ecore.EObject#getXSISchemaLocation XSI Schema Location}'. + * + * + * @return the meta object for the map 'XSI Schema Location'. + * @see org.eclipse.emf.ecore.EObject#getXSISchemaLocation() + * @see #getDocumentRoot() + * @generated + */ + public EReference getDocumentRoot_XSISchemaLocation() + { + return (EReference)documentRootEClass.getEStructuralFeatures().get(2); + } + + /** + * Returns the meta object for the containment reference '{@link org.eclipse.emf.ecore.EObject#getStockQuote Stock Quote}'. + * + * + * @return the meta object for the containment reference 'Stock Quote'. + * @see org.eclipse.emf.ecore.EObject#getStockQuote() + * @see #getDocumentRoot() + * @generated + */ + public EReference getDocumentRoot_StockQuote() + { + return (EReference)documentRootEClass.getEStructuralFeatures().get(3); + } + + /** + * Returns the meta object for class '{@link com.example.simple.Quote Quote}'. + * + * + * @return the meta object for class 'Quote'. + * @see com.example.simple.Quote + * @generated + */ + public EClass getQuote() + { + return quoteEClass; + } + + /** + * Returns the meta object for the attribute '{@link com.example.simple.Quote#getSymbol Symbol}'. + * + * + * @return the meta object for the attribute 'Symbol'. + * @see com.example.simple.Quote#getSymbol() + * @see #getQuote() + * @generated + */ + public EAttribute getQuote_Symbol() + { + return (EAttribute)quoteEClass.getEStructuralFeatures().get(0); + } + + /** + * Returns the meta object for the attribute '{@link com.example.simple.Quote#getCompanyName Company Name}'. + * + * + * @return the meta object for the attribute 'Company Name'. + * @see com.example.simple.Quote#getCompanyName() + * @see #getQuote() + * @generated + */ + public EAttribute getQuote_CompanyName() + { + return (EAttribute)quoteEClass.getEStructuralFeatures().get(1); + } + + /** + * Returns the meta object for the attribute '{@link com.example.simple.Quote#getPrice Price}'. + * + * + * @return the meta object for the attribute 'Price'. + * @see com.example.simple.Quote#getPrice() + * @see #getQuote() + * @generated + */ + public EAttribute getQuote_Price() + { + return (EAttribute)quoteEClass.getEStructuralFeatures().get(2); + } + + /** + * Returns the meta object for the attribute '{@link com.example.simple.Quote#getOpen1 Open1}'. + * + * + * @return the meta object for the attribute 'Open1'. + * @see com.example.simple.Quote#getOpen1() + * @see #getQuote() + * @generated + */ + public EAttribute getQuote_Open1() + { + return (EAttribute)quoteEClass.getEStructuralFeatures().get(3); + } + + /** + * Returns the meta object for the attribute '{@link com.example.simple.Quote#getHigh High}'. + * + * + * @return the meta object for the attribute 'High'. + * @see com.example.simple.Quote#getHigh() + * @see #getQuote() + * @generated + */ + public EAttribute getQuote_High() + { + return (EAttribute)quoteEClass.getEStructuralFeatures().get(4); + } + + /** + * Returns the meta object for the attribute '{@link com.example.simple.Quote#getLow Low}'. + * + * + * @return the meta object for the attribute 'Low'. + * @see com.example.simple.Quote#getLow() + * @see #getQuote() + * @generated + */ + public EAttribute getQuote_Low() + { + return (EAttribute)quoteEClass.getEStructuralFeatures().get(5); + } + + /** + * Returns the meta object for the attribute '{@link com.example.simple.Quote#getVolume Volume}'. + * + * + * @return the meta object for the attribute 'Volume'. + * @see com.example.simple.Quote#getVolume() + * @see #getQuote() + * @generated + */ + public EAttribute getQuote_Volume() + { + return (EAttribute)quoteEClass.getEStructuralFeatures().get(6); + } + + /** + * Returns the meta object for the attribute '{@link com.example.simple.Quote#getChange1 Change1}'. + * + * + * @return the meta object for the attribute 'Change1'. + * @see com.example.simple.Quote#getChange1() + * @see #getQuote() + * @generated + */ + public EAttribute getQuote_Change1() + { + return (EAttribute)quoteEClass.getEStructuralFeatures().get(7); + } + + /** + * Returns the meta object for the containment reference list '{@link com.example.simple.Quote#getQuotes Quotes}'. + * + * + * @return the meta object for the containment reference list 'Quotes'. + * @see com.example.simple.Quote#getQuotes() + * @see #getQuote() + * @generated + */ + public EReference getQuote_Quotes() + { + return (EReference)quoteEClass.getEStructuralFeatures().get(8); + } + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + public SimpleFactory getSimpleFactory() + { + return (SimpleFactory)getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() + { + if (isCreated) return; + isCreated = true; + + // Create classes and their features + documentRootEClass = createEClass(DOCUMENT_ROOT); + createEAttribute(documentRootEClass, DOCUMENT_ROOT__MIXED); + createEReference(documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP); + createEReference(documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION); + createEReference(documentRootEClass, DOCUMENT_ROOT__STOCK_QUOTE); + + quoteEClass = createEClass(QUOTE); + createEAttribute(quoteEClass, QUOTE__SYMBOL); + createEAttribute(quoteEClass, QUOTE__COMPANY_NAME); + createEAttribute(quoteEClass, QUOTE__PRICE); + createEAttribute(quoteEClass, QUOTE__OPEN1); + createEAttribute(quoteEClass, QUOTE__HIGH); + createEAttribute(quoteEClass, QUOTE__LOW); + createEAttribute(quoteEClass, QUOTE__VOLUME); + createEAttribute(quoteEClass, QUOTE__CHANGE1); + createEReference(quoteEClass, QUOTE__QUOTES); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() + { + if (isInitialized) return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Obtain other dependent packages + XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI); + + // Add supertypes to classes + + // Initialize classes and features; add operations and parameters + initEClass(documentRootEClass, null, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getDocumentRoot_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getDocumentRoot_XMLNSPrefixMap(), ecorePackage.getEStringToStringMapEntry(), null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getDocumentRoot_StockQuote(), this.getQuote(), null, "stockQuote", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + + initEClass(quoteEClass, Quote.class, "Quote", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getQuote_Symbol(), theXMLTypePackage.getString(), "symbol", null, 1, 1, Quote.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getQuote_CompanyName(), theXMLTypePackage.getString(), "companyName", null, 1, 1, Quote.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getQuote_Price(), theXMLTypePackage.getDecimal(), "price", null, 1, 1, Quote.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getQuote_Open1(), theXMLTypePackage.getDecimal(), "open1", null, 1, 1, Quote.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getQuote_High(), theXMLTypePackage.getDecimal(), "high", null, 1, 1, Quote.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getQuote_Low(), theXMLTypePackage.getDecimal(), "low", null, 1, 1, Quote.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getQuote_Volume(), theXMLTypePackage.getDouble(), "volume", null, 1, 1, Quote.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getQuote_Change1(), theXMLTypePackage.getDouble(), "change1", null, 1, 1, Quote.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getQuote_Quotes(), this.getQuote(), null, "quotes", null, 0, -1, Quote.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + // Create resource + createResource(eNS_URI); + + // Create annotations + // http:///org/eclipse/emf/ecore/util/ExtendedMetaData + createExtendedMetaDataAnnotations(); + } + + /** + * Initializes the annotations for http:///org/eclipse/emf/ecore/util/ExtendedMetaData. + * + * + * @generated + */ + protected void createExtendedMetaDataAnnotations() + { + String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData"; + addAnnotation + (documentRootEClass, + source, + new String[] + { + "name", "", + "kind", "mixed" + }); + addAnnotation + (getDocumentRoot_Mixed(), + source, + new String[] + { + "kind", "elementWildcard", + "name", ":mixed" + }); + addAnnotation + (getDocumentRoot_XMLNSPrefixMap(), + source, + new String[] + { + "kind", "attribute", + "name", "xmlns:prefix" + }); + addAnnotation + (getDocumentRoot_XSISchemaLocation(), + source, + new String[] + { + "kind", "attribute", + "name", "xsi:schemaLocation" + }); + addAnnotation + (getDocumentRoot_StockQuote(), + source, + new String[] + { + "kind", "element", + "name", "stockQuote", + "namespace", "##targetNamespace" + }); + addAnnotation + (quoteEClass, + source, + new String[] + { + "name", "Quote", + "kind", "elementOnly" + }); + addAnnotation + (getQuote_Symbol(), + source, + new String[] + { + "kind", "element", + "name", "symbol" + }); + addAnnotation + (getQuote_CompanyName(), + source, + new String[] + { + "kind", "element", + "name", "companyName" + }); + addAnnotation + (getQuote_Price(), + source, + new String[] + { + "kind", "element", + "name", "price" + }); + addAnnotation + (getQuote_Open1(), + source, + new String[] + { + "kind", "element", + "name", "open1" + }); + addAnnotation + (getQuote_High(), + source, + new String[] + { + "kind", "element", + "name", "high" + }); + addAnnotation + (getQuote_Low(), + source, + new String[] + { + "kind", "element", + "name", "low" + }); + addAnnotation + (getQuote_Volume(), + source, + new String[] + { + "kind", "element", + "name", "volume" + }); + addAnnotation + (getQuote_Change1(), + source, + new String[] + { + "kind", "element", + "name", "change1" + }); + addAnnotation + (getQuote_Quotes(), + source, + new String[] + { + "kind", "element", + "name", "quotes" + }); + } + + /** + * + * Defines literals for the meta objects that represent + *

    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + public interface Literals + { + /** + * The meta object literal for the '{@link com.example.simple.impl.DocumentRootImpl Document Root}' class. + * + * + * @see com.example.simple.impl.DocumentRootImpl + * @see com.example.simple.impl.SimplePackageImpl#getDocumentRoot() + * @generated + */ + public static final EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot(); + + /** + * The meta object literal for the 'Mixed' attribute list feature. + * + * + * @generated + */ + public static final EAttribute DOCUMENT_ROOT__MIXED = eINSTANCE.getDocumentRoot_Mixed(); + + /** + * The meta object literal for the 'XMLNS Prefix Map' map feature. + * + * + * @generated + */ + public static final EReference DOCUMENT_ROOT__XMLNS_PREFIX_MAP = eINSTANCE.getDocumentRoot_XMLNSPrefixMap(); + + /** + * The meta object literal for the 'XSI Schema Location' map feature. + * + * + * @generated + */ + public static final EReference DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = eINSTANCE.getDocumentRoot_XSISchemaLocation(); + + /** + * The meta object literal for the 'Stock Quote' containment reference feature. + * + * + * @generated + */ + public static final EReference DOCUMENT_ROOT__STOCK_QUOTE = eINSTANCE.getDocumentRoot_StockQuote(); + + /** + * The meta object literal for the '{@link com.example.simple.impl.QuoteImpl Quote}' class. + * + * + * @see com.example.simple.impl.QuoteImpl + * @see com.example.simple.impl.SimplePackageImpl#getQuote() + * @generated + */ + public static final EClass QUOTE = eINSTANCE.getQuote(); + + /** + * The meta object literal for the 'Symbol' attribute feature. + * + * + * @generated + */ + public static final EAttribute QUOTE__SYMBOL = eINSTANCE.getQuote_Symbol(); + + /** + * The meta object literal for the 'Company Name' attribute feature. + * + * + * @generated + */ + public static final EAttribute QUOTE__COMPANY_NAME = eINSTANCE.getQuote_CompanyName(); + + /** + * The meta object literal for the 'Price' attribute feature. + * + * + * @generated + */ + public static final EAttribute QUOTE__PRICE = eINSTANCE.getQuote_Price(); + + /** + * The meta object literal for the 'Open1' attribute feature. + * + * + * @generated + */ + public static final EAttribute QUOTE__OPEN1 = eINSTANCE.getQuote_Open1(); + + /** + * The meta object literal for the 'High' attribute feature. + * + * + * @generated + */ + public static final EAttribute QUOTE__HIGH = eINSTANCE.getQuote_High(); + + /** + * The meta object literal for the 'Low' attribute feature. + * + * + * @generated + */ + public static final EAttribute QUOTE__LOW = eINSTANCE.getQuote_Low(); + + /** + * The meta object literal for the 'Volume' attribute feature. + * + * + * @generated + */ + public static final EAttribute QUOTE__VOLUME = eINSTANCE.getQuote_Volume(); + + /** + * The meta object literal for the 'Change1' attribute feature. + * + * + * @generated + */ + public static final EAttribute QUOTE__CHANGE1 = eINSTANCE.getQuote_Change1(); + + /** + * The meta object literal for the 'Quotes' containment reference list feature. + * + * + * @generated + */ + public static final EReference QUOTE__QUOTES = eINSTANCE.getQuote_Quotes(); + + } + +} //SimplePackageImpl diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar1.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar1.java new file mode 100644 index 0000000000..4a51310cd0 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar1.java @@ -0,0 +1,26 @@ +/** + * + * 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.codegen; + +/** + * @version $Rev$ $Date$ + */ +public interface Bar1 { +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar2.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar2.java new file mode 100644 index 0000000000..e9151b9d46 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar2.java @@ -0,0 +1,26 @@ +/** + * + * 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.codegen; + +/** + * @version $Rev$ $Date$ + */ +public interface Bar2 { +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGeneratorTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGeneratorTestCase.java new file mode 100644 index 0000000000..218a725226 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGeneratorTestCase.java @@ -0,0 +1,167 @@ +/** + * + * 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.codegen; + +import java.lang.reflect.Method; +import java.util.List; + +import junit.framework.TestCase; + +/** + * @version $Rev$ $Date$ + */ +public class BytecodeInterfaceGeneratorTestCase extends TestCase { + private MockType foo; + private BytecodeInterfaceGenerator gen; + private TestClassLoader cl; + + public void testHeaderNoBaseClass() { + gen.visitType(foo); + gen.visitEnd(); + Class c = cl.addClass(gen.getClassData()); + assertEquals("Foo", c.getName()); + assertTrue(c.isInterface()); + assertEquals(0, c.getInterfaces().length); + assertEquals(0, c.getMethods().length); + } + + public void testHeaderWithPackage() { + gen.visitType(new MockType("org.apache.Foo", null)); + gen.visitEnd(); + Class c = cl.addClass(gen.getClassData()); + assertEquals("org.apache.Foo", c.getName()); + assertEquals(0, c.getInterfaces().length); + assertEquals(0, c.getMethods().length); + } + + public void testHeaderOneBaseClass() throws NoJavaImplementationException { + foo.addBaseType(new MockType("bar1", Bar1.class)); + gen.visitType(foo); + gen.visitEnd(); + Class c = cl.addClass(gen.getClassData()); + assertEquals("Foo", c.getName()); + assertEquals(1, c.getInterfaces().length); + assertEquals(Bar1.class, c.getInterfaces()[0]); + assertEquals(0, c.getMethods().length); + } + + public void testHeaderMultipleBaseClass() throws NoJavaImplementationException { + foo.addBaseType(new MockType("bar1", Bar1.class)); + foo.addBaseType(new MockType("bar2", Bar2.class)); + gen.visitType(foo); + gen.visitEnd(); + Class c = cl.addClass(gen.getClassData()); + assertEquals("Foo", c.getName()); + assertEquals(2, c.getInterfaces().length); + assertEquals(Bar1.class, c.getInterfaces()[0]); + assertEquals(Bar2.class, c.getInterfaces()[1]); + assertEquals(0, c.getMethods().length); + } + + public void testBooleanProperty() throws NoJavaImplementationException, NoSuchMethodException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("true", Boolean.TYPE, false, false)); + gen.visitEnd(); + Class c = cl.addClass(gen.getClassData()); + assertEquals(2, c.getMethods().length); + Method getter = c.getMethod("isTrue", new Class[0]); + assertEquals(boolean.class, getter.getReturnType()); + Method setter = c.getMethod("setTrue", new Class[] {boolean.class}); + assertEquals(void.class, setter.getReturnType()); + } + + public void testByteArrayProperty() throws NoJavaImplementationException, NoSuchMethodException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("bytes", byte[].class, false, false)); + gen.visitEnd(); + Class c = cl.addClass(gen.getClassData()); + assertEquals(2, c.getMethods().length); + Method getter = c.getMethod("getBytes", new Class[0]); + assertEquals(byte[].class, getter.getReturnType()); + Method setter = c.getMethod("setBytes", new Class[] {byte[].class}); + assertEquals(void.class, setter.getReturnType()); + } + + public void testObjectProperty() throws NoJavaImplementationException, NoSuchMethodException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("bar", Bar1.class, false, false)); + gen.visitEnd(); + Class c = cl.addClass(gen.getClassData()); + assertEquals(2, c.getMethods().length); + Method getter = c.getMethod("getBar", new Class[0]); + assertEquals(Bar1.class, getter.getReturnType()); + Method setter = c.getMethod("setBar", new Class[] {Bar1.class}); + assertEquals(void.class, setter.getReturnType()); + } + + public void testReadOnlyProperty() throws NoJavaImplementationException, NoSuchMethodException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("int", Integer.TYPE, false, true)); + gen.visitEnd(); + Class c = cl.addClass(gen.getClassData()); + assertEquals(1, c.getMethods().length); + Method getter = c.getMethod("getInt", new Class[0]); + assertEquals(int.class, getter.getReturnType()); + } + + public void testManyProperty() throws NoJavaImplementationException, NoSuchMethodException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("list", Integer.TYPE, true, false)); + gen.visitEnd(); + Class c = cl.addClass(gen.getClassData()); + assertEquals(1, c.getMethods().length); + Method getter = c.getMethod("getList", new Class[0]); + assertEquals(List.class, getter.getReturnType()); + } + + public void testTwoProperties() throws NoJavaImplementationException, NoSuchMethodException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("true", Boolean.TYPE, false, false)); + gen.visitProperty(new MockProperty("int", Integer.TYPE, false, false)); + gen.visitEnd(); + Class c = cl.addClass(gen.getClassData()); + assertEquals(4, c.getMethods().length); + Method getter = c.getMethod("isTrue", new Class[0]); + assertEquals(boolean.class, getter.getReturnType()); + Method setter = c.getMethod("setTrue", new Class[] {boolean.class}); + assertEquals(void.class, setter.getReturnType()); + getter = c.getMethod("getInt", new Class[0]); + assertEquals(int.class, getter.getReturnType()); + setter = c.getMethod("setInt", new Class[] {int.class}); + assertEquals(void.class, setter.getReturnType()); + } + + protected void setUp() throws Exception { + super.setUp(); + foo = new MockType("foo", null); + gen = new BytecodeInterfaceGenerator(); + cl = new TestClassLoader(); + } + + private class TestClassLoader extends ClassLoader { + public TestClassLoader() { + super(TestClassLoader.class.getClassLoader()); + } + + Class addClass(byte[] bytes) { + return defineClass(null, bytes, 0, bytes.length); + } + } +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Foo.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Foo.java new file mode 100644 index 0000000000..56bf6af9b4 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Foo.java @@ -0,0 +1,26 @@ +/** + * + * 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.codegen; + +/** + * @version $Rev$ $Date$ + */ +public interface Foo { +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGeneratorTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGeneratorTestCase.java new file mode 100644 index 0000000000..6cc0529c5f --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGeneratorTestCase.java @@ -0,0 +1,129 @@ +/** + * + * 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.codegen; + +import java.io.PrintWriter; +import java.io.StringWriter; + +import junit.framework.TestCase; + +/** + * @version $Rev$ $Date$ + */ +public class JavaInterfaceGeneratorTestCase extends TestCase { + private static final String SEP = System.getProperty("line.separator"); + + private JavaInterfaceGenerator gen; + private StringWriter writer; + private MockType foo; + + public void testHeaderNoBaseClass() { + gen.visitType(foo); + gen.visitEnd(); + assertEquals(localize("public interface Foo {\n}\n"), writer.toString()); + } + + public void testHeaderWithPackage() { + gen.visitType(new MockType("org.apache.Foo", null)); + gen.visitEnd(); + assertEquals(localize("package org.apache;\n\npublic interface Foo {\n}\n"), writer.toString()); + } + + public void testHeaderOneBaseClass() throws NoJavaImplementationException { + foo.addBaseType(new MockType("bar1", Bar1.class)); + gen.visitType(foo); + gen.visitEnd(); + assertEquals(localize("public interface Foo extends org.apache.tuscany.sdo.codegen.Bar1 {\n}\n"), writer.toString()); + } + + public void testHeaderMultipleBaseClass() throws NoJavaImplementationException { + foo.addBaseType(new MockType("bar1", Bar1.class)); + foo.addBaseType(new MockType("bar2", Bar2.class)); + gen.visitType(foo); + gen.visitEnd(); + assertEquals(localize("public interface Foo extends org.apache.tuscany.sdo.codegen.Bar1, org.apache.tuscany.sdo.codegen.Bar2 {\n}\n"), writer.toString()); + } + + public void testBooleanProperty() throws NoJavaImplementationException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("true", Boolean.TYPE, false, false)); + gen.visitEnd(); + assertEquals(localize("public interface Foo {\n\tboolean isTrue();\n\tvoid setTrue(boolean value);\n}\n"), writer.toString()); + } + + public void testByteArrayProperty() throws NoJavaImplementationException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("bytes", byte[].class, false, false)); + gen.visitEnd(); + assertEquals(localize("public interface Foo {\n\tbyte[] getBytes();\n\tvoid setBytes(byte[] value);\n}\n"), writer.toString()); + } + + public void testObjectProperty() throws NoJavaImplementationException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("bar", Bar1.class, false, false)); + gen.visitEnd(); + assertEquals(localize("public interface Foo {\n\torg.apache.tuscany.sdo.codegen.Bar1 getBar();\n\tvoid setBar(org.apache.tuscany.sdo.codegen.Bar1 value);\n}\n"), writer.toString()); + } + + public void testReadOnlyProperty() throws NoJavaImplementationException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("int", Integer.TYPE, false, true)); + gen.visitEnd(); + assertEquals(localize("public interface Foo {\n\tint getInt();\n}\n"), writer.toString()); + } + + public void testManyProperty() throws NoJavaImplementationException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("list", Integer.TYPE, true, false)); + gen.visitEnd(); + assertEquals(localize("public interface Foo {\n\tjava.util.List getList();\n}\n"), writer.toString()); + } + + public void testTwoProperties() throws NoJavaImplementationException { + gen.visitType(foo); + gen.visitProperty(new MockProperty("true", Boolean.TYPE, false, false)); + gen.visitProperty(new MockProperty("int", Integer.TYPE, false, false)); + gen.visitEnd(); + assertEquals(localize("public interface Foo {\n\tboolean isTrue();\n\tvoid setTrue(boolean value);\n\tint getInt();\n\tvoid setInt(int value);\n}\n"), writer.toString()); + } + + protected void setUp() throws Exception { + super.setUp(); + writer = new StringWriter(); + gen = new JavaInterfaceGenerator(new PrintWriter(writer)); + foo = new MockType("foo", null); + } + + private String localize(String s) { + StringBuffer b = new StringBuffer(s.length() + s.length()/10); + for (int i = 0; i < s.length(); i++) { + char ch = s.charAt(i); + if (ch == '\t') { + b.append(" "); + } else if (ch == '\n') { + b.append(SEP); + } else { + b.append(ch); + } + } + return b.toString(); + } + +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockProperty.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockProperty.java new file mode 100644 index 0000000000..d7e70369c0 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockProperty.java @@ -0,0 +1,78 @@ +/** + * + * 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.codegen; + +import java.util.List; + +import commonj.sdo.Property; +import commonj.sdo.Type; + +/** + * @version $Rev$ $Date$ + */ +class MockProperty implements Property { + private final String name; + private final Type type; + private final boolean many; + private final boolean readOnly; + + public MockProperty(String name, Class type, boolean many, boolean readOnly) { + this.name = name; + this.type = new MockType(null, type); + this.many = many; + this.readOnly = readOnly; + } + + public String getName() { + return name; + } + + public Type getType() { + return type; + } + + public boolean isMany() { + return many; + } + + public boolean isContainment() { + throw new UnsupportedOperationException(); + } + + public Type getContainingType() { + throw new UnsupportedOperationException(); + } + + public Object getDefault() { + throw new UnsupportedOperationException(); + } + + public boolean isReadOnly() { + return readOnly; + } + + public Property getOpposite() { + throw new UnsupportedOperationException(); + } + + public List /*String*/ getAliasNames() { + throw new UnsupportedOperationException(); + } +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockType.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockType.java new file mode 100644 index 0000000000..4d3ecf9799 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockType.java @@ -0,0 +1,96 @@ +/** + * + * 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.codegen; + +import java.util.List; +import java.util.ArrayList; + +import commonj.sdo.Type; +import commonj.sdo.Property; + +/** + * @version $Rev$ $Date$ + */ +class MockType implements Type { + private final String name; + private final Class javaClass; + private final List baseTypes = new ArrayList(); + + public MockType(String name, Class javaClass) { + this.javaClass = javaClass; + this.name = name; + } + + public void addBaseType(Type baseType) { + baseTypes.add(baseType); + } + + public String getName() { + return name; + } + + public String getURI() { + throw new UnsupportedOperationException(); + } + + public Class getInstanceClass() { + return javaClass; + } + + public boolean isInstance(Object object) { + throw new UnsupportedOperationException(); + } + + public List /*Property*/ getProperties() { + throw new UnsupportedOperationException(); + } + + public Property getProperty(String propertyName) { + throw new UnsupportedOperationException(); + } + + public boolean isDataType() { + throw new UnsupportedOperationException(); + } + + public boolean isOpen() { + throw new UnsupportedOperationException(); + } + + public boolean isSequenced() { + throw new UnsupportedOperationException(); + } + + public boolean isAbstract() { + throw new UnsupportedOperationException(); + } + + public List /*Type*/ getBaseTypes() { + return baseTypes; + } + + public List /*Property*/ getDeclaredProperties() { + throw new UnsupportedOperationException(); + } + + public List /*String*/ getAliasNames() { + throw new UnsupportedOperationException(); + } +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryTestCase.java new file mode 100644 index 0000000000..e956720117 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryTestCase.java @@ -0,0 +1,92 @@ +/** + * + * 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.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.net.URL; + +import junit.framework.TestCase; + +import org.apache.tuscany.sdo.util.SDOUtil; + +import commonj.sdo.ChangeSummary; +import commonj.sdo.DataGraph; +import commonj.sdo.DataObject; +import commonj.sdo.helper.XSDHelper; + + +public class ChangeSummaryTestCase extends TestCase { + private final String TEST_MODEL = "/simple.xsd"; + private final String TEST_DATA = "/simplechangesummary.xml"; + + /** + * Simple ChangeSummary test. + */ + public void testChangeSummary() throws IOException { + // Create an empty data graph and add a root object, an instance of type Quote + // + + DataGraph dataGraph = SDOUtil.createDataGraph(); + DataObject quote = dataGraph.createRootObject("http://www.example.com/simple", "Quote"); + + // Begin logging changes + // + ChangeSummary changeSummary = dataGraph.getChangeSummary(); + changeSummary.beginLogging(); + + // Modify the data graph in various fun and interesting ways + // + quote.setString("symbol", "fbnt"); + quote.setString("companyName", "FlyByNightTechnology"); + quote.setBigDecimal("price", new BigDecimal("1000.0")); + quote.setBigDecimal("open1", new BigDecimal("1000.0")); + quote.setBigDecimal("high", new BigDecimal("1000.0")); + quote.setBigDecimal("low", new BigDecimal("1000.0")); + quote.setDouble("volume", 1000); + quote.setDouble("change1", 1000); + + DataObject child = quote.createDataObject("quotes"); + child.setBigDecimal("price", new BigDecimal("2000.0")); + + // Stop logging changes and print the resulting data graph to stdout + // + changeSummary.endLogging(); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + SDOUtil.saveDataGraph(dataGraph, baos, null); + + assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(TEST_DATA))); + } + + 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(); + } +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/CrossScopeCopyTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/CrossScopeCopyTestCase.java new file mode 100644 index 0000000000..41801685f5 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/CrossScopeCopyTestCase.java @@ -0,0 +1,469 @@ +/** + * + * 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.math.BigDecimal; +import java.net.URL; +import java.util.Iterator; +import java.util.Vector; + +import junit.framework.TestCase; + +import org.apache.tuscany.sdo.util.SDOUtil; + +import commonj.sdo.DataObject; +import commonj.sdo.Property; +import commonj.sdo.Type; +import commonj.sdo.helper.CopyHelper; +import commonj.sdo.helper.DataFactory; +import commonj.sdo.helper.TypeHelper; + +public class CrossScopeCopyTestCase extends TestCase +{ + // Literals + private static final String TEST_NAMESPACE = "http://www.example.com/bank"; + private static final String BANK_MODEL = "/bank.xsd"; + private static final String BANK_TYPE = "bankType"; + private static final String BRANCH_TYPE = "branchType"; + private static final String SERVICE_TYPE = "serviceType"; + private static final String ACCOUNT_TYPE = "accountType"; + private static final String CUSTOMER_TYPE = "customerType"; + private static final String ADDRESS_TYPE = "addressType"; + private static final String DYNAMIC_TYPE = "dynamicType"; + + // SDO model objects + private TypeHelper scopeA; + private TypeHelper scopeB; + + // SDO instance objects + private DataObject bankSDO; + private DataObject branchSDO1; + private DataObject branchSDO2; + private DataObject serviceSDO1; + private DataObject serviceSDO2; + private DataObject serviceSDO3; + private DataObject customerSDO1; + private DataObject customerSDO2; + private DataObject customerSDO3; + private DataObject customerSDO4; + + private int indent = 0; + + public void testCrossScopeCopy() throws IOException + { + CopyHelper copyHelperB = SDOUtil.createCrossScopeCopyHelper(scopeB); + + // Perform Shallow Copy Test + DataObject copiedSDO = copyHelperB.copyShallow(bankSDO); + shallowCopyAssertions(bankSDO, copiedSDO); + + // Perform Deep Copy Test + copiedSDO = copyHelperB.copy(bankSDO); + deepCopyAssertions(bankSDO, copiedSDO); + + // Inter-Reference Copy + copiedSDO = copyHelperB.copy(customerSDO1); + DataObject prop = (DataObject)copiedSDO.get("HomeBranch"); + assertTrue(prop==null); + + // Perform invalid namespace test + DataObject sdo = SDOUtil.createDataFactory(scopeA).create(TEST_NAMESPACE, DYNAMIC_TYPE ); + sdo.set("custNum", "099" ); + sdo.set("firstName", "John"); + sdo.set("lastName", "Doe"); + boolean failed = false; + try + { + // In this case, we are copying an object to a scope + // where the object's type has not been defined. That + // will generate a null pointer exception what we will + // catch. + copyHelperB.copy(sdo); + } + catch(java.lang.NullPointerException ex) + { + failed = true; + } + assertTrue(failed); + } + + protected void setUp() throws Exception + { + super.setUp(); + + // Create Two Scopes + scopeA = SDOUtil.createTypeHelper(); + scopeB = SDOUtil.createTypeHelper(); + + // Populate scopes with bank model now + URL url = getClass().getResource(BANK_MODEL); + InputStream inputStream = url.openStream(); + SDOUtil.createXSDHelper(scopeA).define(inputStream, url.toString()); + inputStream.close(); + inputStream = url.openStream(); + SDOUtil.createXSDHelper(scopeB).define(inputStream, url.toString()); + inputStream.close(); + + // Now Populate scopeA with some dynamic models + populateScopeWithDynamicTypes(scopeA); + + // Construct Source Tree + constructSourceTree(SDOUtil.createDataFactory(scopeA)); + } + + private void shallowCopyAssertions(DataObject sdo, DataObject copiedSdo) + { + assertEquals(sdo.getType().getName(), copiedSdo.getType().getName()); + assertEquals(sdo.getType().getURI(), copiedSdo.getType().getURI()); + assertNotSame(sdo.getType(), copiedSdo.getType()); + assertEquals(sdo.getInstanceProperties().size(), copiedSdo + .getInstanceProperties().size()); + + for(Iterator it = sdo.getInstanceProperties().iterator(), it2 = copiedSdo + .getInstanceProperties().iterator(); it.hasNext();) + { + Property p1 = (Property) it.next(), p2 = (Property) it2.next(); + assertEquals(p1.getName(), p2.getName()); + Object o1 = sdo.get(p1), o2 = copiedSdo.get(p2); + if(p1.getType().isDataType()) + { + assertEquals(o1, o2); + // TODO is there a way I can distinguish between mutable and + // immutable types + // so that I can do some "same object" tests + } + else + { + assertNotSame(p1, p2); + if(p2.isMany()) + { + assertEquals(copiedSdo.getList(p2).size(), 0); + } + else + { + assertNull(copiedSdo.get(p2)); + } + } + try + { + sdo.get(p2); + assertTrue(false); + } + catch(Exception e) + { + // expected route + } + try + { + copiedSdo.get(p1); + assertTrue(false); + } + catch(Exception e2) + { + // expected route + } + } + } + + private void deepCopyAssertions(DataObject sdo, DataObject copiedSdo) + { + //indent(); + + //System.out.println("checking objects of types: " + // + sdo.getType().getName() + ", " + // + copiedSdo.getType().getName()); + indent++; + + assertEquals(sdo.getType().getName(), copiedSdo.getType().getName()); + assertEquals(sdo.getType().getURI(), copiedSdo.getType().getURI()); + assertNotSame(sdo.getType(), copiedSdo.getType()); + assertEquals(sdo.getInstanceProperties().size(), copiedSdo + .getInstanceProperties().size()); + + for(Iterator it = sdo.getInstanceProperties().iterator(), it2 = copiedSdo + .getInstanceProperties().iterator(); it.hasNext();) + { + Property p1 = (Property) it.next(), p2 = (Property) it2.next(); + assertEquals(p1.getName(), p2.getName()); + Object o1 = sdo.get(p1), o2 = copiedSdo.get(p2); + if(p1.getType().isDataType()) + { + assertEquals(o1, o2); + // TODO is there a way I can distinguish between mutable and + // immutable types + // so that I can do some "same object" tests + } + else + { + assertNotSame(p1, p2); + if(p2.isMany()) + { + assertEquals(sdo.getList(p1).size(), copiedSdo.getList(p2) + .size()); + for(Iterator it3 = sdo.getList(p1).iterator(), it4 = copiedSdo + .getList(p2).iterator(); it3.hasNext();) + { + deepCopyAssertions((DataObject) it3.next(), + (DataObject) it4.next()); + } + } + else + { + deepCopyAssertions(sdo.getDataObject(p1), copiedSdo + .getDataObject(p2)); + } + } + try + { + sdo.get(p2); + assertTrue(false); + } + catch(Exception e) + { + // expected route + } + try + { + copiedSdo.get(p1); + assertTrue(false); + } + catch(Exception e2) + { + // expected route + } + } + + indent--; + } + + /* + private void indent() + { + for(int i=0; i + url = getClass().getResource(TEST_MODEL1ANY); + inputStream = url.openStream(); + XSDHelper.INSTANCE.define(inputStream, url.toString()); + inputStream.close(); + } +} \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/JiraTestCases.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/JiraTestCases.java new file mode 100644 index 0000000000..66138495ce --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/JiraTestCases.java @@ -0,0 +1,184 @@ +/** + * + * 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.util.List; + +import junit.framework.TestCase; +import commonj.sdo.*; +import commonj.sdo.helper.*; + +import org.apache.tuscany.sdo.util.SDOUtil; +import java.util.HashMap; + +/** + * The follow test cases are based upon code snipets in the SDO specification. + * They are also implemented as working samples in the sample-sdo artifact + * + * @author Robbie Minshall + * + */ +public class JiraTestCases extends TestCase { + + /** + * Bogus company namespace + */ + public static final String COMPANY_NAMESPACE = "company.xsd"; + + /** + * previously defined XSD file used + */ + public static final String COMPANY_XSD = "/company.xsd"; + + /** + * XML file containing DataGraph representing a company. This xml file + * conforms to the company model defined in 'Complete DataGraph for Company + * Example' section of the SDO specification + */ + public static final String COMPANY_DATAGRAPH_XML = "/companyDataGraphGenerated.xml"; + + /** + * Generated DataGraph + * {@link org.apache.tuscany.samples.sdo.company.CreateCompany} + */ + public static final String COMPANY_DATAOBJECT_XML = "/companyGenerated.xml"; + + /** + * Defines xsd resource contained within jar file for PurchaseOrder + * DataObject + */ + public static final String PO_XSD_RESOURCE = "/po.xsd"; + + /** + * Defines xml resource contained within jar file that is used to populate + * PurchaseOrder DataObjects + */ + public static final String PO_XML_RESOURCE = "/po.xml"; + + /** + * previously created XSD file used + */ + public static final String LETTER_XSD = "/letter.xsd"; + + /** + * JIRA Details : Add a method to SDOUtil to return all Types associated + * with a specific URI + */ + public void test_TUSCANY583() { + + // define some types + try { + XSDHelper.INSTANCE.define(getClass().getResourceAsStream( + PO_XSD_RESOURCE), null); + + XSDHelper.INSTANCE.define(getClass().getResourceAsStream( + COMPANY_XSD), null); + + createDynamicType(); + + String[] expectedPoTypeNames = {"item", "Items", + "PurchaseOrderType", "quantity", "SKU", "USAddress"}; + + String[] expectedCompanyTypeNames = {"EmployeeType", "DepartmentType", "CompanyType"}; + + String[] expectedCustomerTypeNames = {"Customer"}; + + confirmTypes("http://www.example.com/PO", expectedPoTypeNames); + confirmTypes("company.xsd", expectedCompanyTypeNames); + confirmTypes("http://example.com/customer", + expectedCustomerTypeNames); + + } catch (Exception e) { + fail("Unexpected error " + e.toString()); + e.printStackTrace(); + } + + } + + /** + * Dynamically define customer Type + */ + public static void createDynamicType() { + // get an instance of the type helper + TypeHelper typeH = TypeHelper.INSTANCE; + Type intType = typeH.getType("commonj.sdo", "Int"); + Type stringType = typeH.getType("commonj.sdo", "String"); + + // create a new Type for Customers + DataObject customerType = DataFactory.INSTANCE.create("commonj.sdo", + "Type"); + + customerType.set("uri", "http://example.com/customer"); + customerType.set("name", "Customer"); + + // create a customer number property + DataObject custNumProperty = customerType.createDataObject("property"); + custNumProperty.set("name", "custNum"); + custNumProperty.set("type", intType); + + // create a last name property + DataObject lastNameProperty = customerType.createDataObject("property"); + lastNameProperty.set("name", "lastName"); + lastNameProperty.set("type", stringType); + + // create a first name property + DataObject firstNameProperty = customerType + .createDataObject("property"); + firstNameProperty.set("name", "firstName"); + firstNameProperty.set("type", stringType); + + // now define the Customer type so that customers can be made + typeH.define(customerType); + } + + private void confirmTypes(String uri, String[] expectedTypeNames) { + + try { + + List actualTypes = SDOUtil.getTypes(TypeHelper.INSTANCE, uri); + assertNotNull("Testing that list of types for " + uri + + " is not null", actualTypes); + + // test the number of Types + assertEquals("Testing number of types for " + uri, + expectedTypeNames.length, actualTypes.size()); + + // put into a HashMap for easy lookup + HashMap typeLookup = new HashMap(); + for (int i = 0; i < actualTypes.size(); i++) { + Type type = (Type) actualTypes.get(i); + typeLookup.put(type.getName(), type); + } + + // check that we have the same types + for (int i = 0; i < expectedTypeNames.length; i++) { + assertTrue("testing that type " + expectedTypeNames[i] + + "was returned for " + uri, typeLookup + .containsKey(expectedTypeNames[i])); + } + + } catch (Exception e) { + fail("Exception caught comparing expected types to actual types for uri " + + uri + ":" + e.toString()); + e.printStackTrace(); + } + } +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/MixedTypeTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/MixedTypeTestCase.java new file mode 100644 index 0000000000..806662a83c --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/MixedTypeTestCase.java @@ -0,0 +1,89 @@ +/** + * + * 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.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.net.URL; + +import commonj.sdo.DataObject; +import commonj.sdo.Sequence; +import commonj.sdo.Type; +import commonj.sdo.helper.DataFactory; +import commonj.sdo.helper.TypeHelper; +import commonj.sdo.helper.XMLHelper; +import commonj.sdo.helper.XSDHelper; +import junit.framework.TestCase; + + +public class MixedTypeTestCase extends TestCase { + private final String TEST_MODEL = "/mixed.xsd"; + private final String TEST_NAMESPACE = "http://www.example.com/mixed"; + private final String TEST_DATA = "/mixed.xml"; + + /** + * Sequenced type SDO 2 test. + */ + public void testSequencedType() throws IOException { + Type quoteType = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, "MixedQuote"); + DataObject quote = DataFactory.INSTANCE.create(quoteType); + + Sequence sequence = quote.getSequence(); + + sequence.add("\n "); + + quote.setString("symbol", "fbnt"); + + sequence.add("\n "); + + quote.setString("companyName", "FlyByNightTechnology"); + + sequence.add("\n some text\n "); + + DataObject child = quote.createDataObject("quotes"); + child.setBigDecimal("price", new BigDecimal("2000.0")); + + sequence.add("\n more text\n "); + + // quote.setBigDecimal("price", new BigDecimal("1000.0")); + sequence.add("price", new BigDecimal("1000.0")); + + sequence.add("\n"); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + XMLHelper.INSTANCE.save(quote, TEST_NAMESPACE, "mixedStockQuote", baos); + + assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(TEST_DATA))); + } + + 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(); + } +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/OpenTypeTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/OpenTypeTestCase.java new file mode 100644 index 0000000000..833ab433f1 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/OpenTypeTestCase.java @@ -0,0 +1,85 @@ +/** + * + * 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.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.net.URL; +import java.util.Iterator; + +import commonj.sdo.DataObject; +import commonj.sdo.Property; +import commonj.sdo.Type; +import commonj.sdo.helper.DataFactory; +import commonj.sdo.helper.TypeHelper; +import commonj.sdo.helper.XMLHelper; +import commonj.sdo.helper.XSDHelper; +import junit.framework.TestCase; + + +public class OpenTypeTestCase extends TestCase { + private final String TEST_MODEL = "/open.xsd"; + private final String TEST_NAMESPACE = "http://www.example.com/open"; + private final String TEST_DATA = "/open.xml"; + + /** + * Open content SDO 2 test. + */ + public void testOpenType() throws IOException { + Type quoteType = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, "OpenQuote"); + DataObject quote = DataFactory.INSTANCE.create(quoteType); + + quote.setString("symbol", "s1"); + + for (Iterator iter = quote.getInstanceProperties().iterator(); iter.hasNext();) { + Property property = (Property) iter.next(); + } + + Property companyProperty = XSDHelper.INSTANCE.getGlobalProperty(TEST_NAMESPACE, "company", true); + DataObject company = quote.createDataObject(companyProperty); + company.setString("name", "FlyByNightTechnology"); + + Property priceProperty = XSDHelper.INSTANCE.getGlobalProperty(TEST_NAMESPACE, "price", true); + quote.getList(priceProperty).add(new BigDecimal("1000.0")); + + for (Iterator iter = quote.getInstanceProperties().iterator(); iter.hasNext();) { + Property property = (Property) iter.next(); + } + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + XMLHelper.INSTANCE.save(quote, TEST_NAMESPACE, "openStockQuote", baos); + + assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(TEST_DATA))); + } + + 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(); + } +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java new file mode 100644 index 0000000000..3ffca96f5e --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java @@ -0,0 +1,133 @@ +/** + * + * 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.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import junit.framework.TestCase; + +import org.apache.tuscany.sdo.helper.TypeHelperImpl; +import org.apache.tuscany.sdo.util.SDOUtil; +import org.eclipse.emf.ecore.xmi.XMLResource; + +import commonj.sdo.DataGraph; +import commonj.sdo.DataObject; +import commonj.sdo.Type; +import commonj.sdo.helper.DataFactory; +import commonj.sdo.helper.TypeHelper; + +public class SerializeTypesTestCase extends TestCase { + + public void testSerializeTypesRoundTrip() throws Exception { + TypeHelper types = SDOUtil.createTypeHelper(); + DataFactory factory = SDOUtil.createDataFactory(types); + + Type intType = types.getType("commonj.sdo", "Int"); + Type stringType = types.getType("commonj.sdo", "String"); + + // create a new Type for Addresses + DataObject addressType = factory.create("commonj.sdo", "Type"); + addressType.set("uri", "http://example.com/address"); + addressType.set("name", "Address"); + + // create a address street property + DataObject addrStProperty = addressType.createDataObject("property"); + addrStProperty.set("name", "addrSt"); + addrStProperty.set("type", stringType); + + // create a new Type for Customers + DataObject customerType = factory.create("commonj.sdo", "Type"); + customerType.set("uri", "http://example.com/customer"); + customerType.set("name", "Customer"); + + // create a customer number property + DataObject custNumProperty = customerType.createDataObject("property"); + custNumProperty.set("name", "custNum"); + custNumProperty.set("type", intType); + + // create a first name property + DataObject firstNameProperty = customerType.createDataObject("property"); + firstNameProperty.set("name", "firstName"); + firstNameProperty.set("type", stringType); + + // create a last name property + DataObject lastNameProperty = customerType.createDataObject("property"); + lastNameProperty.set("name", "lastName"); + lastNameProperty.set("type", stringType); + + // create an address property + DataObject addressProperty = customerType.createDataObject("property"); + addressProperty.set("name", "address"); + addressProperty.set("type", addressType); + addressProperty.setBoolean("containment", true); + + // now define the Address and Customer type so that addresses and customers can be made + List types2define = new ArrayList(); + types2define.add(addressType); + types2define.add(customerType); + List typesDefined = types.define(types2define); + + // Create an empty data graph and add a root object, an instance of customerType + // + + DataGraph dataGraph = SDOUtil.createDataGraph(); + Type customerTypeDefined = (Type) typesDefined.get(1); + DataObject customer1 = dataGraph.createRootObject(customerTypeDefined); + + customer1.setInt("custNum", 1); + customer1.set("firstName", "John"); + customer1.set("lastName", "Adams"); + DataObject address = customer1.createDataObject("address"); + address.set("addrSt", "577 Airport Blvd"); + + SDOUtil.registerDataGraphTypes(dataGraph, typesDefined); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + SDOUtil.saveDataGraph(dataGraph, baos, null); + //SDOUtil.saveDataGraph(dataGraph, System.out, null); + + TypeHelper deserializingTypeHelper = SDOUtil.createTypeHelper(); + + // The following is a kludge to force deserialization of metadata into a different TypeHelper (scope) + // TBD figure out a proper non-EMF way to do this. + Map options = new HashMap(); + Object differentFromSerializing = ((TypeHelperImpl) deserializingTypeHelper).getExtendedMetaData(); + options.put(XMLResource.OPTION_EXTENDED_META_DATA, differentFromSerializing); + + byte[] serialized = baos.toByteArray(); + ByteArrayInputStream bais = new ByteArrayInputStream(serialized); + DataGraph loadedDataGraph = SDOUtil.loadDataGraph(bais, options); + + DataObject loadedRootObject = loadedDataGraph.getRootObject(); + assertNotSame(loadedRootObject.getType(), customer1.getType()); + + // EqualityHelper requires same Type + assertEquals(loadedRootObject.getInt("custNum"), customer1.getInt("custNum")); + assertEquals(loadedRootObject.get("firstName"), customer1.get("firstName")); + assertEquals(loadedRootObject.get("lastName"), customer1.get("lastName")); + DataObject loadedAddress = loadedRootObject.getDataObject("address"); + assertEquals(loadedAddress.get("addrSt"), address.get("addrSt")); + } +} \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleCopyTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleCopyTestCase.java new file mode 100644 index 0000000000..36f038d779 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleCopyTestCase.java @@ -0,0 +1,71 @@ +/** + * + * 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.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; + +import commonj.sdo.DataObject; +import commonj.sdo.helper.CopyHelper; +import commonj.sdo.helper.XMLDocument; +import commonj.sdo.helper.XMLHelper; +import commonj.sdo.helper.XSDHelper; +import junit.framework.TestCase; + +public class SimpleCopyTestCase extends TestCase { + + private final String TEST_MODEL = "/simple.xsd"; + private final String TEST_NAMESPACE = "http://www.example.com/simple"; + private final String QUOTE_XML = "/quote.xml"; + private final String SHALLOW_QUOTE_XML = "/shallowquote.xml"; + + public void testSimpleCopy() throws IOException { + XMLDocument doc = XMLHelper.INSTANCE.load(getClass().getResourceAsStream(QUOTE_XML)); + DataObject sdo = doc.getRootObject(); + + DataObject copiedSdo = CopyHelper.INSTANCE.copyShallow(sdo); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + XMLHelper.INSTANCE.save(copiedSdo, TEST_NAMESPACE, "stockQuote", baos); + assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(SHALLOW_QUOTE_XML))); + assertFalse(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(QUOTE_XML))); + + copiedSdo = CopyHelper.INSTANCE.copy(sdo); + + baos.reset(); + XMLHelper.INSTANCE.save(copiedSdo, TEST_NAMESPACE, "stockQuote", baos); + assertFalse(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(SHALLOW_QUOTE_XML))); + assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(QUOTE_XML))); + } + + 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(); + } + +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleDynamicTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleDynamicTestCase.java new file mode 100644 index 0000000000..8c4345be46 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleDynamicTestCase.java @@ -0,0 +1,81 @@ +/** + * + * 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.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.net.URL; + +import junit.framework.TestCase; + +import commonj.sdo.DataObject; +import commonj.sdo.Type; +import commonj.sdo.helper.DataFactory; +import commonj.sdo.helper.TypeHelper; +import commonj.sdo.helper.XMLHelper; +import commonj.sdo.helper.XSDHelper; + + +public class SimpleDynamicTestCase extends TestCase { + private final String TEST_MODEL = "/simple.xsd"; + private final String TEST_NAMESPACE = "http://www.example.com/simple"; + private final String QUOTE_XML = "/quote.xml"; + + /** + * Simple Dynamic SDO 2 test. + */ + public void testDynamic() throws IOException { + Type quoteType = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, "Quote"); + DataObject quote = DataFactory.INSTANCE.create(quoteType); + + quote.setString("symbol", "fbnt"); + quote.setString("companyName", "FlyByNightTechnology"); + quote.setBigDecimal("price", new BigDecimal("1000.0")); + quote.setBigDecimal("open1", new BigDecimal("1000.0")); + quote.setBigDecimal("high", new BigDecimal("1000.0")); + quote.setBigDecimal("low", new BigDecimal("1000.0")); + quote.setDouble("volume", 1000); + quote.setDouble("change1", 1000); + + DataObject child = quote.createDataObject("quotes"); + child.setBigDecimal("price", new BigDecimal("2000.0")); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + XMLHelper.INSTANCE.save(quote, TEST_NAMESPACE, "stockQuote", baos); + + assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(QUOTE_XML))); + } + + + 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(); + } + +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleEqualityTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleEqualityTestCase.java new file mode 100644 index 0000000000..c3fffa4f10 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleEqualityTestCase.java @@ -0,0 +1,63 @@ +/** + * + * 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 commonj.sdo.DataObject; +import commonj.sdo.helper.EqualityHelper; +import commonj.sdo.helper.XMLDocument; +import commonj.sdo.helper.XMLHelper; +import commonj.sdo.helper.XSDHelper; +import junit.framework.TestCase; + +public class SimpleEqualityTestCase extends TestCase { + private static final String TEST_MODEL = "/simple.xsd"; + private static final String QUOTE_XML = "/quote.xml"; + private static final String SHALLOW_QUOTE_XML = "/shallowquote.xml"; + + public void testEquality() throws IOException { + + XMLDocument doc = XMLHelper.INSTANCE.load(getClass().getResourceAsStream(QUOTE_XML)); + DataObject sdo = doc.getRootObject(); + + doc = XMLHelper.INSTANCE.load(getClass().getResourceAsStream(SHALLOW_QUOTE_XML)); + DataObject shallowSdo = doc.getRootObject(); + + boolean result = EqualityHelper.INSTANCE.equalShallow(sdo, shallowSdo); + assertTrue(result); + + result = EqualityHelper.INSTANCE.equal(sdo, shallowSdo); + assertFalse(result); + } + + + 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(); + } +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SubstitutionValuesTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SubstitutionValuesTestCase.java new file mode 100644 index 0000000000..b473503122 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SubstitutionValuesTestCase.java @@ -0,0 +1,47 @@ +/** + * + * 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.net.URL; + +import junit.framework.TestCase; + +import org.apache.tuscany.sdo.util.SDOUtil; + +import commonj.sdo.DataObject; +import commonj.sdo.Type; +import commonj.sdo.helper.DataFactory; +import commonj.sdo.helper.XSDHelper; + +public final class SubstitutionValuesTestCase extends TestCase +{ + public void test() throws IOException + { + URL url = getClass().getResource("/SubstitutionValues.xsd"); + XSDHelper.INSTANCE.define(url.openStream(), url.toString()); + + final DataObject object = DataFactory.INSTANCE.create("http://www.apache.org/tuscany/SubstitutionValues", "TestObject"); + final Type type = object.getType(); + + assertNotNull( SDOUtil.getSubstitutionValues(object, type.getProperty("groupHead"))); + assertNull( SDOUtil.getSubstitutionValues(object, type.getProperty("nonGroupHead"))); + } +} \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TestUtil.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TestUtil.java new file mode 100644 index 0000000000..a7ab3f954a --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TestUtil.java @@ -0,0 +1,285 @@ +/** + * + * 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.ArrayList; +import java.util.List; + +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.FactoryConfigurationError; +import javax.xml.parsers.ParserConfigurationException; + +import org.w3c.dom.Document; +import org.w3c.dom.DocumentType; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +public class TestUtil +{ + private static void getAllNodes(NodeList nodeList, List nodes) + { + int length = nodeList.getLength(); + if (length == 0) + { + return; + } + + for (int i=0; i, but within + // the array exist the get(index), get(property), and get(path). Rather than + // referring to each of the three in every circumstance, the more compact array appears. + + private static ConversionType TO_BOOLEAN = new ConversionType("getBoolean"); + private static ConversionType TO_BYTE = new ConversionType("getByte"); + private static ConversionType TO_CHAR = new ConversionType("getChar"); + private static ConversionType TO_DOUBLE = new ConversionType("getDouble"); + private static ConversionType TO_FLOAT = new ConversionType("getFloat"); + private static ConversionType TO_INT = new ConversionType("getInt"); + private static ConversionType TO_LONG = new ConversionType("getLong"); + private static ConversionType TO_SHORT = new ConversionType("getShort"); + private static ConversionType TO_BYTES = new ConversionType("getBytes"); + private static ConversionType TO_BIGDECIMAL = new ConversionType("getBigDecimal"); + private static ConversionType TO_BIGINTEGER = new ConversionType("getBigInteger"); + private static ConversionType TO_DATAOBJECT = new ConversionType("getDataObject"); + private static ConversionType TO_DATE = new ConversionType("getDate"); + private static ConversionType TO_STRING = new ConversionType("getString"); + private static ConversionType TO_LIST = new ConversionType("getList"); + private static ConversionType TO_SEQUENCE = new ConversionType("getSequence"); + + private static GeneralComparator COMPARE_ANY; + + // There will be several instances where a Property must be passed as a parameter. Have available the Type + // to call getProperty() as needed. + + private static Type API_TEST_TYPE; + + // The default constructor establishes each of the Method and Method[] variables. + + public TypeConversionTestCase() throws Exception + { + COMPARE_ANY = new GeneralComparator(); + + // Populate the meta data for the test model + URL url = getClass().getResource(TEST_MODEL); + InputStream inputStream = url.openStream(); + XSDHelper.INSTANCE.define(inputStream, url.toString()); + inputStream.close(); + + API_TEST_TYPE = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, "APITest"); + } + + private static class ConversionType + { + // The following constants are used because the getMethod function requires an Class + // array describing the parameters to the functions. + + private static final Class[] INT_CLASS_ARRAY = {int.class}; + private static final Class[] PROPERTY_CLASS_ARRAY = {Property.class}; + private static final Class[] STRING_CLASS_ARRAY = {String.class}; + + Method index_method; + Method property_method; + Method path_method; + + public ConversionType (String method_name) + { + try + { + this.index_method = DataObject.class.getMethod(method_name, INT_CLASS_ARRAY); + this.property_method = DataObject.class.getMethod(method_name, PROPERTY_CLASS_ARRAY); + this.path_method = DataObject.class.getMethod(method_name, STRING_CLASS_ARRAY); + } + catch (NoSuchMethodException e) + { + this.index_method = null; + this.property_method = null; + this.path_method = null; + } + } + + public Method getIndexMethod() + { + return this.index_method; + } + + public Method getPropertyMethod() + { + return this.property_method; + } + + public Method getPathMethod() + { + return this.path_method; + } + } + + // Each instance of Test describes a convert-from type. The index, property and path parms + // will refer to the same field, which is a field of the convert-from type. + + private static class Test + { + DataObject test_obj; + Object[] index_parm; + Object[] property_parm; + Object[] path_parm; + Object expected_value; + String from_type; + + // The constructor prepares a test DataObject and determines how to access the field + // in three different ways - index, property, and path. + + Test(String path, int index) + { + this.test_obj = DataFactory.INSTANCE.create(API_TEST_TYPE); + this.index_parm = new Object[] {new Integer(index)}; + this.property_parm = new Object[] {API_TEST_TYPE.getProperty(path)}; + this.path_parm = new Object[] {path}; + this.expected_value = null; + } + + // The initialize() function establishes the initial value of the test field. + + public void initialize(Class type, String type_name, Object initial_value) throws Exception + { + Class[] classArray = {int.class, type}; + Object[] initValueArray = new Object[] {this.index_parm[0], initial_value}; + + Method setter = DataObject.class.getMethod("set" + type_name, classArray); + setter.invoke(test_obj, initValueArray); + this.expected_value = initial_value; + this.from_type = type_name; + } + + // Attempts the conversion to the specified type, using DataObject.get____(). + // The get___() function can be called with an index, path, and property. attemptConversion() + // calls each of those three. + + public void attemptConversion(ConversionType to_type) throws Exception + { + performConversion(to_type.getIndexMethod(), this.index_parm); + performConversion(to_type.getPathMethod(), this.path_parm); + performConversion(to_type.getPropertyMethod(), this.property_parm); + } + + public void checkConversionException(ConversionType to_type, Class expected_exception) throws Exception + { + boolean index_err, path_err, property_err, consistency_err = false; + + index_err = executeExceptionCase(to_type.getIndexMethod(), this.index_parm, expected_exception); + path_err = executeExceptionCase(to_type.getPathMethod(), this.path_parm, expected_exception); + property_err = executeExceptionCase(to_type.getPropertyMethod(), this.property_parm, expected_exception); + + if (index_err != path_err || path_err != property_err) + consistency_err = true; + else if (index_err == false) + attemptConversion(to_type); + + assertFalse("An exception inconsistency exists for " + to_type.getPathMethod().getName() + " when called " + + "for a " + this.from_type + " property.", consistency_err); + } + + private void performConversion (Method convert, Object[] parm) throws Exception + { + try + { + assertTrue("Conversion did not yield expected value for " + convert.getName() + " on a " + this.from_type + " property.", + COMPARE_ANY.compare(convert.invoke(test_obj, parm), this.expected_value) == 0); + } + catch (Exception e) + { + Throwable cause = e.getCause(); + if (cause == null) + { + System.err.println("An exception of type " + e.getClass() + " occurred while performing " + convert.getName() + + " on a " + this.from_type + " property."); + } + else + { + System.err.println("An exception of type " + cause.getClass() + " occurred while performing " + convert.getName() + + " on a " + this.from_type + " property."); + } + + throw e; + } + + } + + private boolean executeExceptionCase (Method convert, Object[] parm, Class expected_exception) throws Exception + { + boolean exception_thrown = false; + try + { + convert.invoke(test_obj, parm); + } + catch (Exception e) + { + exception_thrown = true; + Throwable cause = e.getCause(); + if (cause == null) + { + assertEquals("An unexpected exception occurred while performing " + convert.getName() + + " on a " + this.from_type + " property.", expected_exception, e.getClass()); + } + else + { + assertEquals("An unexpected exception occurred while performing " + convert.getName() + + " on a " + this.from_type + " property.", expected_exception, cause.getClass()); + } + } + + return exception_thrown; + } + } + + private static class GeneralComparator implements Comparator + { + public int compare(Object obj1, Object obj2) + { + if (obj1.getClass() == obj2.getClass()) + { + if (obj1.equals(obj2)) + return 0; + else + return 1; + } + + else if (obj1.getClass() == Date.class) + { + if (obj2.getClass() == String.class) + { + try + { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy'-'MM'-'dd'T'H':'mm':'ss.S"); + + sdf.setTimeZone(TimeZone.getTimeZone("UTC")); + obj2 = sdf.parse((String) obj2); + + if (obj1.equals(obj2)) + return 0; + } + catch (Exception e) + { + System.out.println(e.getMessage()); + } + + return 1; + } + + else + { + Date temp = (Date) obj1; + + return compare(new Long(temp.getTime()), obj2); + } + + } + + else if (obj2.getClass() == Date.class) + { + return compare(obj2, obj1); + } + + else if (obj1.getClass() == Boolean.class) + { + Boolean temp = (Boolean) obj1; + + if (temp.booleanValue()) + { + if (obj2.toString().equalsIgnoreCase("true")) + return 0; + else + return 1; + } + + else + { + if (obj2.toString().equalsIgnoreCase("true")) + return 1; + else + return 0; + } + } + + else if (obj2.getClass() == Boolean.class) + return compare(obj2, obj1); + + else if (obj1.getClass() == Byte.class || obj2.getClass() == Byte.class) + { + byte b1 = (Double.valueOf(obj1.toString())).byteValue(); + byte b2 = (Double.valueOf(obj2.toString())).byteValue(); + + if (b1 == b2) + return 0; + else if (b1 < b2) + return -1; + else + return 1; + } + + else if (obj1.getClass().toString().charAt(6) == '[') + { + long result = 0; + long multiplier = 1; + + byte[] array = (byte[]) obj1; + for (int i = 0; i < array.length; i++) + { + result += array[array.length - i - 1] * multiplier; + multiplier *= 256; + } + + return compare(obj2, new Long(result)); + } + + else if (obj2.getClass().toString().charAt(6) == '[') + { + return compare(obj2, obj1); + } + + else if (obj1.getClass() == Short.class || obj2.getClass() == Short.class) + { + short s1 = (Double.valueOf(obj1.toString())).shortValue(); + short s2 = (Double.valueOf(obj2.toString())).shortValue(); + + if (s1 == s2) + return 0; + else if (s1 < s2) + return -1; + else + return 1; + } + + else if (obj1.getClass() == Integer.class || obj2.getClass() == Integer.class) + { + int i1 = (Double.valueOf(obj1.toString())).intValue(); + int i2 = (Double.valueOf(obj2.toString())).intValue(); + + if (i1 == i2) + return 0; + else if (i1 < i2) + return -1; + else + return 1; + } + + else if ( obj1.getClass() == Long.class || obj2.getClass() == Long.class + || obj1.getClass() == BigInteger.class || obj2.getClass() == BigInteger.class) + { + long l1 = (Double.valueOf(obj1.toString())).longValue(); + long l2 = (Double.valueOf(obj2.toString())).longValue(); + + if (l1 == l2) + return 0; + else if (l1 < l2) + return -1; + else + return 1; + } + + else if (obj1.getClass() == Float.class || obj2.getClass() == Float.class) + { + float f1 = (Double.valueOf(obj1.toString())).floatValue(); + float f2 = (Double.valueOf(obj2.toString())).floatValue(); + + if (f1 == f2) + return 0; + else if (f1 < f2) + return -1; + else + return 1; + } + + else if (obj1.getClass() == Double.class || obj2.getClass() == Double.class) + { + Double b1 = Double.valueOf(obj1.toString()); + Double b2 = Double.valueOf(obj2.toString()); + + return b1.compareTo(b2); + } + + else if (obj1.getClass() == BigDecimal.class || obj2.getClass() == BigDecimal.class) + { + BigDecimal b1 = new BigDecimal(obj1.toString()); + BigDecimal b2 = new BigDecimal(obj2.toString()); + + return b1.compareTo(b2); + } + + else + { + if (obj1.toString().equals(obj2.toString())) + return 0; + else + return 1; + } + } + + } + + /********************************************************** + * In the following test cases, several instances are commented out. + * For these cases, the test case currently fails. A JIRA issue (TUSCANY-581) has + * been opened to either correct the behavior (then uncomment the lines) or to + * alter the specification against which the test cases were designed (and then + * remove the lines - assuming the alteration is to remove stating the + * nature of the exception). + */ + + public void testBooleanConversion() throws Exception + { + Test FromBoolean = new Test("booleanVal", BOOLEAN_VAL_INDEX); + + FromBoolean.initialize(boolean.class, "Boolean", Boolean.valueOf(true)); + + FromBoolean.attemptConversion(TO_BOOLEAN); + FromBoolean.attemptConversion(TO_STRING); + } + + public void testBooleanExceptions() throws Exception + { + Test FromBoolean = new Test("booleanVal", BOOLEAN_VAL_INDEX); + + FromBoolean.initialize(boolean.class, "Boolean", Boolean.valueOf(true)); + +// FromBoolean.checkConversionException(TO_BYTE, ClassCastException.class); +// FromBoolean.checkConversionException(TO_CHAR, ClassCastException.class); +// FromBoolean.checkConversionException(TO_DOUBLE, ClassCastException.class); +// FromBoolean.checkConversionException(TO_FLOAT, ClassCastException.class); +// FromBoolean.checkConversionException(TO_INT, ClassCastException.class); +// FromBoolean.checkConversionException(TO_LONG, ClassCastException.class); +// FromBoolean.checkConversionException(TO_SHORT, ClassCastException.class); +// FromBoolean.checkConversionException(TO_BYTES, ClassCastException.class); +// FromBoolean.checkConversionException(TO_BIGDECIMAL, ClassCastException.class); +// FromBoolean.checkConversionException(TO_BIGINTEGER, ClassCastException.class); + FromBoolean.checkConversionException(TO_DATAOBJECT, ClassCastException.class); +// FromBoolean.checkConversionException(TO_DATE, ClassCastException.class); + FromBoolean.checkConversionException(TO_LIST, ClassCastException.class); + FromBoolean.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testByteConversion() throws Exception + { + Test FromByte = new Test("byteVal", BYTE_VAL_INDEX); + + FromByte.initialize(byte.class, "Byte", Byte.valueOf("-127")); + + FromByte.attemptConversion(TO_BYTE); + FromByte.attemptConversion(TO_DOUBLE); + FromByte.attemptConversion(TO_FLOAT); + FromByte.attemptConversion(TO_INT); + FromByte.attemptConversion(TO_LONG); + FromByte.attemptConversion(TO_SHORT); + FromByte.attemptConversion(TO_STRING); + } + + public void testByteExceptions() throws Exception + { + Test FromByte = new Test("byteVal", BYTE_VAL_INDEX); + + FromByte.initialize(byte.class, "Byte", Byte.valueOf("-127")); + +// FromByte.checkConversionException(TO_BOOLEAN, ClassCastException.class); +// FromByte.checkConversionException(TO_CHAR, ClassCastException.class); +// FromByte.checkConversionException(TO_BYTES, ClassCastException.class); + FromByte.checkConversionException(TO_BIGDECIMAL, ClassCastException.class); + FromByte.checkConversionException(TO_BIGINTEGER, ClassCastException.class); + FromByte.checkConversionException(TO_DATAOBJECT, ClassCastException.class); +// FromByte.checkConversionException(TO_DATE, ClassCastException.class); + FromByte.checkConversionException(TO_LIST, ClassCastException.class); + FromByte.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testCharConversion() throws Exception + { + Test FromChar = new Test("charVal", CHAR_VAL_INDEX); + + FromChar.initialize(char.class, "Char", new Character('?')); + + FromChar.attemptConversion(TO_CHAR); + FromChar.attemptConversion(TO_STRING); + } + + public void testCharExceptions() throws Exception + { + Test FromChar = new Test("charVal", CHAR_VAL_INDEX); + + FromChar.initialize(char.class, "Char", new Character('?')); + +// FromChar.checkConversionException(TO_BOOLEAN, ClassCastException.class); +// FromChar.checkConversionException(TO_BYTE, ClassCastException.class); +// FromChar.checkConversionException(TO_DOUBLE, ClassCastException.class); +// FromChar.checkConversionException(TO_FLOAT, ClassCastException.class); +// FromChar.checkConversionException(TO_INT, ClassCastException.class); +// FromChar.checkConversionException(TO_LONG, ClassCastException.class); +// FromChar.checkConversionException(TO_SHORT, ClassCastException.class); +// FromChar.checkConversionException(TO_BYTES, ClassCastException.class); +// FromChar.checkConversionException(TO_BIGDECIMAL, ClassCastException.class); +// FromChar.checkConversionException(TO_BIGINTEGER, ClassCastException.class); + FromChar.checkConversionException(TO_DATAOBJECT, ClassCastException.class); +// FromChar.checkConversionException(TO_DATE, ClassCastException.class); + FromChar.checkConversionException(TO_LIST, ClassCastException.class); + FromChar.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testDoubleConversion() throws Exception + { + Test FromDouble = new Test("doubleVal", DOUBLE_VAL_INDEX); + + FromDouble.initialize(double.class, "Double", new Double(Double.MAX_VALUE)); + + FromDouble.attemptConversion(TO_BYTE); + FromDouble.attemptConversion(TO_DOUBLE); + FromDouble.attemptConversion(TO_FLOAT); + FromDouble.attemptConversion(TO_INT); + FromDouble.attemptConversion(TO_LONG); + FromDouble.attemptConversion(TO_SHORT); + FromDouble.attemptConversion(TO_BIGDECIMAL); + FromDouble.attemptConversion(TO_BIGINTEGER); + FromDouble.attemptConversion(TO_STRING); + } + + public void testDoubleExceptions() throws Exception + { + Test FromDouble = new Test("doubleVal", DOUBLE_VAL_INDEX); + + FromDouble.initialize(double.class, "Double", new Double(Double.MAX_VALUE)); + +// FromDouble.checkConversionException(TO_BOOLEAN, ClassCastException.class); +// FromDouble.checkConversionException(TO_CHAR, ClassCastException.class); +// FromDouble.checkConversionException(TO_BYTES, ClassCastException.class); + FromDouble.checkConversionException(TO_DATAOBJECT, ClassCastException.class); +// FromDouble.checkConversionException(TO_DATE, ClassCastException.class); + FromDouble.checkConversionException(TO_LIST, ClassCastException.class); + FromDouble.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testFloatConversion() throws Exception + { + Test FromFloat = new Test("floatVal", FLOAT_VAL_INDEX); + + FromFloat.initialize(float.class, "Float", new Float(Float.MIN_VALUE)); + + FromFloat.attemptConversion(TO_BYTE); + FromFloat.attemptConversion(TO_DOUBLE); + FromFloat.attemptConversion(TO_FLOAT); + FromFloat.attemptConversion(TO_INT); + FromFloat.attemptConversion(TO_LONG); + FromFloat.attemptConversion(TO_SHORT); + FromFloat.attemptConversion(TO_BIGDECIMAL); + FromFloat.attemptConversion(TO_BIGINTEGER); + FromFloat.attemptConversion(TO_STRING); + } + + public void testFloatExceptions() throws Exception + { + Test FromFloat = new Test("floatVal", FLOAT_VAL_INDEX); + + FromFloat.initialize(float.class, "Float", new Float(Float.MIN_VALUE)); + +// FromFloat.checkConversionException(TO_BOOLEAN, ClassCastException.class); +// FromFloat.checkConversionException(TO_CHAR, ClassCastException.class); +// FromFloat.checkConversionException(TO_BYTES, ClassCastException.class); + FromFloat.checkConversionException(TO_DATAOBJECT, ClassCastException.class); +// FromFloat.checkConversionException(TO_DATE, ClassCastException.class); + FromFloat.checkConversionException(TO_LIST, ClassCastException.class); + FromFloat.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testIntConversion() throws Exception + { + Test FromInt = new Test("intVal", INT_VAL_INDEX); + + FromInt.initialize(int.class, "Int", new Integer(5)); + + FromInt.attemptConversion(TO_BYTE); + FromInt.attemptConversion(TO_DOUBLE); + FromInt.attemptConversion(TO_FLOAT); + FromInt.attemptConversion(TO_INT); + FromInt.attemptConversion(TO_LONG); + FromInt.attemptConversion(TO_SHORT); + FromInt.attemptConversion(TO_BIGDECIMAL); + FromInt.attemptConversion(TO_BIGINTEGER); + FromInt.attemptConversion(TO_STRING); + } + + public void testIntExceptions() throws Exception + { + Test FromInt = new Test("intVal", INT_VAL_INDEX); + + FromInt.initialize(int.class, "Int", new Integer(5)); + +// FromInt.checkConversionException(TO_BOOLEAN, ClassCastException.class); +// FromInt.checkConversionException(TO_CHAR, ClassCastException.class); +// FromInt.checkConversionException(TO_BYTES, ClassCastException.class); + FromInt.checkConversionException(TO_DATAOBJECT, ClassCastException.class); +// FromInt.checkConversionException(TO_DATE, ClassCastException.class); + FromInt.checkConversionException(TO_LIST, ClassCastException.class); + FromInt.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testLongConversion() throws Exception + { + Test FromLong = new Test("longVal", LONG_VAL_INDEX); + + FromLong.initialize(long.class, "Long", new Long(7000L)); + + FromLong.attemptConversion(TO_BYTE); + FromLong.attemptConversion(TO_DOUBLE); + FromLong.attemptConversion(TO_FLOAT); + FromLong.attemptConversion(TO_INT); + FromLong.attemptConversion(TO_LONG); + FromLong.attemptConversion(TO_SHORT); + FromLong.attemptConversion(TO_BIGDECIMAL); + FromLong.attemptConversion(TO_BIGINTEGER); + FromLong.attemptConversion(TO_DATE); + FromLong.attemptConversion(TO_STRING); + } + + public void testLongExceptions() throws Exception + { + Test FromLong = new Test("longVal", LONG_VAL_INDEX); + + FromLong.initialize(long.class, "Long", new Long(7000L)); + +// FromLong.checkConversionException(TO_BOOLEAN, ClassCastException.class); +// FromLong.checkConversionException(TO_CHAR, ClassCastException.class); +// FromLong.checkConversionException(TO_BYTES, ClassCastException.class); + FromLong.checkConversionException(TO_DATAOBJECT, ClassCastException.class); + FromLong.checkConversionException(TO_LIST, ClassCastException.class); + FromLong.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testShortConversion() throws Exception + { + Test FromShort = new Test("shortVal", SHORT_VAL_INDEX); + + FromShort.initialize(short.class, "Short", new Short("-8000")); + + FromShort.attemptConversion(TO_BYTE); + FromShort.attemptConversion(TO_DOUBLE); + FromShort.attemptConversion(TO_FLOAT); + FromShort.attemptConversion(TO_INT); + FromShort.attemptConversion(TO_LONG); + FromShort.attemptConversion(TO_SHORT); + FromShort.attemptConversion(TO_STRING); + } + + public void testShortExceptions() throws Exception + { + Test FromShort = new Test("shortVal", SHORT_VAL_INDEX); + + FromShort.initialize(short.class, "Short", new Short("-8000")); + +// FromShort.checkConversionException(TO_BOOLEAN, ClassCastException.class); +// FromShort.checkConversionException(TO_CHAR, ClassCastException.class); +// FromShort.checkConversionException(TO_BYTES, ClassCastException.class); + FromShort.checkConversionException(TO_BIGDECIMAL, ClassCastException.class); + FromShort.checkConversionException(TO_BIGINTEGER, ClassCastException.class); + FromShort.checkConversionException(TO_DATAOBJECT, ClassCastException.class); +// FromShort.checkConversionException(TO_DATE, ClassCastException.class); + FromShort.checkConversionException(TO_LIST, ClassCastException.class); + FromShort.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testStringConversion() throws Exception + { + Test FromString = new Test("stringVal", STRING_VAL_INDEX); + + FromString.initialize(String.class, "String", "5"); + + FromString.attemptConversion(TO_BOOLEAN); + FromString.attemptConversion(TO_BYTE); + FromString.attemptConversion(TO_CHAR); + FromString.attemptConversion(TO_DOUBLE); + FromString.attemptConversion(TO_FLOAT); + FromString.attemptConversion(TO_INT); + FromString.attemptConversion(TO_LONG); + FromString.attemptConversion(TO_SHORT); + FromString.attemptConversion(TO_BIGDECIMAL); + FromString.attemptConversion(TO_BIGINTEGER); + FromString.attemptConversion(TO_STRING); + + FromString.initialize(String.class, "String", "1999-07-25T8:50:14.33Z"); + FromString.attemptConversion(TO_DATE); + } + + public void testStringExceptions() throws Exception + { + Test FromString = new Test("stringVal", STRING_VAL_INDEX); + + FromString.initialize(String.class, "String", "5"); + +// FromString.checkConversionException(TO_BYTES, ClassCastException.class); + FromString.checkConversionException(TO_DATAOBJECT, ClassCastException.class); + FromString.checkConversionException(TO_LIST, ClassCastException.class); + FromString.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testBytesConversion() throws Exception + { + Test FromBytes = new Test("bytesVal", BYTES_VAL_INDEX); + + FromBytes.initialize(byte[].class, "Bytes", new byte[] {10,100}); + + FromBytes.attemptConversion(TO_BYTES); + FromBytes.attemptConversion(TO_BIGINTEGER); + } + + public void testBytesExceptions() throws Exception + { + Test FromBytes = new Test("bytesVal", BYTES_VAL_INDEX); + + FromBytes.initialize(byte[].class, "Bytes", new byte[] {10,100}); + +// FromBytes.checkConversionException(TO_BOOLEAN, ClassCastException.class); +// FromBytes.checkConversionException(TO_BYTE, ClassCastException.class); +// FromBytes.checkConversionException(TO_CHAR, ClassCastException.class); +// FromBytes.checkConversionException(TO_DOUBLE, ClassCastException.class); +// FromBytes.checkConversionException(TO_FLOAT, ClassCastException.class); +// FromBytes.checkConversionException(TO_INT, ClassCastException.class); +// FromBytes.checkConversionException(TO_LONG, ClassCastException.class); +// FromBytes.checkConversionException(TO_SHORT, ClassCastException.class); +// FromBytes.checkConversionException(TO_BIGDECIMAL, ClassCastException.class); + FromBytes.checkConversionException(TO_DATAOBJECT, ClassCastException.class); +// FromBytes.checkConversionException(TO_DATE, ClassCastException.class); +// FromBytes.checkConversionException(TO_STRING, ClassCastException.class); + FromBytes.checkConversionException(TO_LIST, ClassCastException.class); + FromBytes.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testBigDecimalConversion() throws Exception + { + Test FromBigDecimal = new Test("decimalVal", DECIMAL_VAL_INDEX); + + FromBigDecimal.initialize(BigDecimal.class, "BigDecimal", new BigDecimal("-3")); + + FromBigDecimal.attemptConversion(TO_DOUBLE); + FromBigDecimal.attemptConversion(TO_FLOAT); + FromBigDecimal.attemptConversion(TO_INT); + FromBigDecimal.attemptConversion(TO_LONG); + FromBigDecimal.attemptConversion(TO_BIGDECIMAL); + FromBigDecimal.attemptConversion(TO_BIGINTEGER); + FromBigDecimal.attemptConversion(TO_STRING); + } + + public void testBigDecimalExceptions() throws Exception + { + Test FromBigDecimal = new Test("decimalVal", DECIMAL_VAL_INDEX); + + FromBigDecimal.initialize(BigDecimal.class, "BigDecimal", new BigDecimal("-3")); + +// FromBigDecimal.checkConversionException(TO_BOOLEAN, ClassCastException.class); +// FromBigDecimal.checkConversionException(TO_BYTE, ClassCastException.class); +// FromBigDecimal.checkConversionException(TO_CHAR, ClassCastException.class); +// FromBigDecimal.checkConversionException(TO_SHORT, ClassCastException.class); +// FromBigDecimal.checkConversionException(TO_BYTES, ClassCastException.class); + FromBigDecimal.checkConversionException(TO_DATAOBJECT, ClassCastException.class); +// FromBigDecimal.checkConversionException(TO_DATE, ClassCastException.class); + FromBigDecimal.checkConversionException(TO_LIST, ClassCastException.class); + FromBigDecimal.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testBigIntegerConversion() throws Exception + { + Test FromBigInteger = new Test("integerVal", INTEGER_VAL_INDEX); + + FromBigInteger.initialize(BigInteger.class, "BigInteger", new BigInteger("31500")); + + FromBigInteger.attemptConversion(TO_DOUBLE); + FromBigInteger.attemptConversion(TO_FLOAT); + FromBigInteger.attemptConversion(TO_INT); + FromBigInteger.attemptConversion(TO_LONG); + FromBigInteger.attemptConversion(TO_SHORT); + FromBigInteger.attemptConversion(TO_BYTES); + FromBigInteger.attemptConversion(TO_BIGDECIMAL); + FromBigInteger.attemptConversion(TO_BIGINTEGER); + FromBigInteger.attemptConversion(TO_STRING); + } + + public void testBigIntegerExceptions() throws Exception + { + Test FromBigInteger = new Test("integerVal", INTEGER_VAL_INDEX); + + FromBigInteger.initialize(BigInteger.class, "BigInteger", new BigInteger("31500")); + +// FromBigInteger.checkConversionException(TO_BOOLEAN, ClassCastException.class); +// FromBigInteger.checkConversionException(TO_BYTE, ClassCastException.class); +// FromBigInteger.checkConversionException(TO_CHAR, ClassCastException.class); + FromBigInteger.checkConversionException(TO_DATAOBJECT, ClassCastException.class); +// FromBigInteger.checkConversionException(TO_DATE, ClassCastException.class); + FromBigInteger.checkConversionException(TO_LIST, ClassCastException.class); + FromBigInteger.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } + + public void testDateConversion() throws Exception + { + Test FromDate = new Test("dateVal", DATE_VAL_INDEX); + + FromDate.initialize(Date.class, "Date", new Date(System.currentTimeMillis())); + + FromDate.attemptConversion(TO_LONG); + FromDate.attemptConversion(TO_DATE); + FromDate.attemptConversion(TO_STRING); + } + + public void testDateExceptions() throws Exception + { + Test FromDate = new Test("dateVal", DATE_VAL_INDEX); + + FromDate.initialize(Date.class, "Date", new Date(System.currentTimeMillis())); + +// FromDate.checkConversionException(TO_BOOLEAN, ClassCastException.class); +// FromDate.checkConversionException(TO_BYTE, ClassCastException.class); +// FromDate.checkConversionException(TO_CHAR, ClassCastException.class); +// FromDate.checkConversionException(TO_DOUBLE, ClassCastException.class); +// FromDate.checkConversionException(TO_FLOAT, ClassCastException.class); +// FromDate.checkConversionException(TO_INT, ClassCastException.class); +// FromDate.checkConversionException(TO_SHORT, ClassCastException.class); +// FromDate.checkConversionException(TO_BYTES, ClassCastException.class); +// FromDate.checkConversionException(TO_BIGDECIMAL, ClassCastException.class); +// FromDate.checkConversionException(TO_BIGINTEGER, ClassCastException.class); + FromDate.checkConversionException(TO_DATAOBJECT, ClassCastException.class); + FromDate.checkConversionException(TO_LIST, ClassCastException.class); + FromDate.checkConversionException(TO_SEQUENCE, ClassCastException.class); + } +} \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTestCase.java new file mode 100644 index 0000000000..f718a3f330 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTestCase.java @@ -0,0 +1,147 @@ +/** + * + * 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.math.BigDecimal; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + +import junit.framework.TestCase; + +import org.apache.tuscany.sdo.util.SDOUtil; + +import commonj.sdo.Type; +import commonj.sdo.helper.DataHelper; +import commonj.sdo.helper.TypeHelper; + +public class TypeRoundTripTestCase extends TestCase { + + private static class Test { + Type type; + String value; + Object obj; + Comparator comp; + + Test(Type type, String value, Object obj) { + this.type = type; + this.value = value; + this.obj = obj; + } + + Test(Type type, String value, Object obj, Comparator comp) { + this.type = type; + this.value = value; + this.obj = obj; + this.comp = comp; + } + } + + private static class ListComparator implements Comparator { + public int compare(Object list1, Object list2) { + int answer = 1; + if (list1 instanceof List && list2 instanceof List) { + List l1 = (List) list1; + List l2 = (List) list2; + if (l1.size() == l2.size()) { + for (int n = 0; n < l1.size(); n++) { + if (!l1.get(n).equals(l2.get(n))) { + answer = 0; + break; + } + } + } else { + answer = 0; + } + } else { + answer = 0; + } + return answer; + } + } + + private static class BytesComparator implements Comparator { + public int compare(Object o1, Object o2) { + o2 = new String((byte[])o2); + if (o1.equals(o2)) return 1; + else return 0; + } + } + + public void testTypeRoundTrips() throws Exception { + String URI = "commonj.sdo"; + TypeHelper types = TypeHelper.INSTANCE; + + List list = new ArrayList(); + list.add("foo"); + list.add("bar"); + list.add("test"); + Test[] tests = { + new Test(types.getType(URI, "Boolean"), "true", new Boolean(true)), + new Test(types.getType(URI, "Byte"), "49", new Byte((byte)49)), + new Test(types.getType(URI, "Bytes"), "666F6F", "foo", new BytesComparator()), + new Test(types.getType(URI, "Character"), "a", new Character('a')), + new Test(types.getType(URI, "Date"), "2005-12-12T12:12:12.012Z", DataHelper.INSTANCE.toDate("2005-12-12T12:12:12.012Z")), + new Test(types.getType(URI, "DateTime"), "2005-12-12T12:12:12zz", "2005-12-12T12:12:12zz"), + new Test(types.getType(URI, "Day"), "---12", "---12"), + new Test(types.getType(URI, "Decimal"), "12.12", new BigDecimal("12.12")), + new Test(types.getType(URI, "Double"), "12.12", new Double(12.12)), + new Test(types.getType(URI, "Duration"), "P5Y2M10D", "P5Y2M10D"), + new Test(types.getType(URI, "Float"), "12.12", new Float(12.12f)), + new Test(types.getType(URI, "Int"), "12", new Integer(12)), + new Test(types.getType(URI, "Integer"), "12", new BigInteger("12")), + new Test(types.getType(URI, "Long"), "12", new Long(12l)), + new Test(types.getType(URI, "Month"), "--12", "--12"), + new Test(types.getType(URI, "MonthDay"), "--12-12", "--12-12"), + new Test(types.getType(URI, "Object"), "test", "test"), + new Test(types.getType(URI, "Short"), "12", new Short((short)12)), + new Test(types.getType(URI, "String"), "test", "test"), + new Test(types.getType(URI, "Strings"), "foo bar test", list, new ListComparator()), + new Test(types.getType(URI, "Time"), "12:12:12.12", "12:12:12.12"), + new Test(types.getType(URI, "URI"), "http://example.org", "http://example.org"), + new Test(types.getType(URI, "Year"), "2005", "2005"), + new Test(types.getType(URI, "YearMonth"), "2005-12", "2005-12"), + new Test(types.getType(URI, "YearMonthDay"), "2005-12-12", "2005-12-12") + }; + + for (int n = 0; n < tests.length; n++) { + assertEquals( + SDOUtil.convertToString(tests[n].type, SDOUtil.createFromString(tests[n].type, tests[n].value)), + tests[n].value + ); + + //System.out.print("."); + + if (tests[n].comp == null) { + assertEquals( + SDOUtil.createFromString(tests[n].type, SDOUtil.convertToString(tests[n].type, tests[n].obj)), + tests[n].obj + ); + } else { + String o1 = SDOUtil.convertToString(tests[n].type, tests[n].obj); + Object o2 = SDOUtil.createFromString(tests[n].type, o1); + assertEquals(tests[n].comp.compare(tests[n].obj, o2), 1); + } + } + + } + +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLDocumentTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLDocumentTestCase.java new file mode 100644 index 0000000000..1cf59757ef --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLDocumentTestCase.java @@ -0,0 +1,110 @@ +/** + * + * 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 junit.framework.TestCase; + +import commonj.sdo.helper.XMLDocument; +import commonj.sdo.helper.XMLHelper; + + +public class XMLDocumentTestCase extends TestCase +{ + private final String TEST_XML_DOCUMENT = "/XMLDocumentTestCase.xml"; + + // remember that NS1... and NS2... items are expected in sorted order by name + private final String NS1_SCHEMA_NAME = "http://www.example.com/open"; + + private final String NS1_SCHEMA_LOCATION = "/open.xsd"; + + private final String NS2_SCHEMA_NAME = "http://www.example.com/xmlDocumentSchemaLocation"; + + private final String NS2_SCHEMA_LOCATION = "/XMLDocumentSchemaLocation.xsd"; + + private final String NS_SET_NAME_LOCATION = "namespace schemaLocation"; + + //private final String NNS_SCHEMA_LOCATION = "http://www.example.com/XMLDocumentNoNamespaceSchemaLocation.xsd"; + private final String NNS_SCHEMA_LOCATION = "/XMLDocumentNoNamespaceSchemaLocation.xsd"; + + private final String NNS_SET_LOCATION = "noNamespaceSchemaLocation"; + + /** + * This method will load an xml document consisting of a xsi:schemaLocation and + * xsi:noNamespaceSchemaLocation defined. It will then use the XMLDocument API to get and + * set the schemaLocation property. + * + * @throws IOException + */ + public void testSchemaLocation() throws IOException + { + // load the xml document which has xsi:noNamespaceSchemaLocation and xsi:schemaLocation defined + XMLDocument doc = XMLHelper.INSTANCE.load(getClass().getResourceAsStream(TEST_XML_DOCUMENT)); + + // get the schemaLocation + assertEquals(NS1_SCHEMA_NAME + " " + NS1_SCHEMA_LOCATION + " " + NS2_SCHEMA_NAME + " " + NS2_SCHEMA_LOCATION, doc.getSchemaLocation()); + + // set the schemaLocation to another value and test to see if the value was set + doc.setSchemaLocation(NS_SET_NAME_LOCATION); + assertEquals(NS_SET_NAME_LOCATION, doc.getSchemaLocation()); + + // remove the schemaLocation and ensure it returns null + doc.setSchemaLocation(null); + assertNull(doc.getSchemaLocation()); + + // ensure changes to schemaLocation have not changed noNamespaceSchemaLocation + assertEquals(NNS_SCHEMA_LOCATION, doc.getNoNamespaceSchemaLocation()); + } + + /** + * This method will load an xml document consisting of a xsi:schemaLocation and + * xsi:noNamespaceSchemaLocation defined. It will then use the XMLDocument API to get and + * set the noNamespaceSchemaLocation property. + * + * @throws IOException + */ + public void testNoNamespaceSchemaLocation() throws IOException + { + // load the xml document which has xsi:noNamespaceSchemaLocation and xsi:schemaLocation defined + XMLDocument doc = XMLHelper.INSTANCE.load(getClass().getResourceAsStream(TEST_XML_DOCUMENT)); + + // get the noNamespaceSchemaLocation + assertEquals(NNS_SCHEMA_LOCATION, doc.getNoNamespaceSchemaLocation()); + + // set the noNameSpaceSchemaLocation to another value and test to see if the value was set + doc.setNoNamespaceSchemaLocation(NNS_SET_LOCATION); + assertEquals(NNS_SET_LOCATION, doc.getNoNamespaceSchemaLocation()); + + // remove the noNameSpaceSchemaLocation and ensure it returns null + doc.setNoNamespaceSchemaLocation(null); + assertNull(doc.getNoNamespaceSchemaLocation()); + + // ensure changes to noNameSpaceSchemaLocation have not changed schemaLocation + assertEquals(NS1_SCHEMA_NAME + " " + NS1_SCHEMA_LOCATION + " " + NS2_SCHEMA_NAME + " " + NS2_SCHEMA_LOCATION, doc.getSchemaLocation()); + } + + protected void setUp() throws Exception + { + super.setUp(); + } + +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java new file mode 100644 index 0000000000..4afbbf6137 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java @@ -0,0 +1,144 @@ +/** + * + * 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.InputStreamReader; +import java.io.StringReader; +import java.io.StringWriter; +import java.net.URL; +import java.util.List; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLOutputFactory; +import javax.xml.stream.XMLStreamConstants; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.apache.tuscany.sdo.helper.XMLStreamHelper; +import org.apache.tuscany.sdo.util.SDOUtil; + +import commonj.sdo.DataObject; +import commonj.sdo.helper.TypeHelper; +import commonj.sdo.helper.XMLDocument; +import commonj.sdo.helper.XMLHelper; +import commonj.sdo.helper.XSDHelper; + +public class XMLStreamHelperTestCase extends TestCase { + + private XSDHelper xsdHelper = XSDHelper.INSTANCE; + + private TypeHelper typeHelper = TypeHelper.INSTANCE; + + private XMLStreamHelper streamHelper; + + private XMLInputFactory inputFactory; + + private XMLOutputFactory outputFactory; + + private QName module = new QName("http://foo", "module"); + + private QName name = new QName("http://bar", "implementation.mock"); + + private String testName = "foo-ext"; + // private String testName = "complex"; + + private String xml; + + // = "1Dummy2"; + + protected void setUp() throws Exception { + super.setUp(); + streamHelper = SDOUtil.createXMLStreamHelper(typeHelper); + URL url = getClass().getClassLoader().getResource(testName + ".xsd"); + xsdHelper.define(url.openStream(), url.toExternalForm()); + inputFactory = XMLInputFactory.newInstance(); + outputFactory = XMLOutputFactory.newInstance(); + url = getClass().getClassLoader().getResource(testName + ".xml"); + InputStreamReader reader = new InputStreamReader(url.openStream()); + StringBuffer stringBuffer = new StringBuffer(); + char buf[] = new char[1024]; + int size; + while ((size = reader.read(buf)) != -1) + stringBuffer.append(buf, 0, size); + xml = stringBuffer.toString(); + reader.close(); + } + + public void testLoadObject() throws Exception { + XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(xml)); + int event = reader.getEventType(); + while (!(event == XMLStreamConstants.START_ELEMENT && reader.getName().equals(name)) && reader.hasNext()) { + event = reader.next(); + } + DataObject dataObject = streamHelper.loadObject(reader); + Assert.assertNotNull(dataObject); + Assert.assertTrue(dataObject.getString("myAttr").equals("helloworld.HelloWorldImpl")); + } + + public void testLoad() throws Exception { + XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(xml)); + XMLDocument document = streamHelper.load(reader); + Assert.assertNotNull(document); + Assert.assertEquals(document.getRootElementURI(), module.getNamespaceURI()); + Assert.assertEquals(document.getRootElementName(), module.getLocalPart()); + DataObject moduleObject = document.getRootObject(); + List components = moduleObject.getList("component"); + DataObject componentObject = (DataObject) components.get(0); + // componentObject.getDataObject("implementation.mock"); + DataObject implObject = (DataObject) componentObject.getSequence(0).getValue(0); + Assert.assertTrue(implObject.getString("myAttr").equals("helloworld.HelloWorldImpl")); + } + + public void testSave() throws XMLStreamException { + XMLDocument document = XMLHelper.INSTANCE.load(xml); + StringWriter writer = new StringWriter(); + XMLStreamWriter streamWriter = outputFactory.createXMLStreamWriter(writer); + streamHelper.save(document, streamWriter); + streamWriter.flush(); + String xmlStr = writer.toString(); + // System.out.println(xmlStr); + Assert.assertTrue(xmlStr.indexOf("myAttr=\"helloworld.HelloWorldImpl\"")!=-1); + } + + public void testSaveObject() throws XMLStreamException { + XMLDocument document = XMLHelper.INSTANCE.load(xml); + DataObject moduleObject = document.getRootObject(); + List components = moduleObject.getList("component"); + DataObject componentObject = (DataObject) components.get(0); + StringWriter writer = new StringWriter(); + XMLStreamWriter streamWriter = outputFactory.createXMLStreamWriter(writer); + streamHelper.saveObject(componentObject, streamWriter); + streamWriter.flush(); + Assert.assertTrue(writer.toString().indexOf("myAttr=\"helloworld.HelloWorldImpl\"")!=-1); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java new file mode 100644 index 0000000000..4012ee7d3f --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java @@ -0,0 +1,128 @@ +/** + * + * 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 org.apache.tuscany.sdo.util.SDOUtil; + +import junit.framework.TestCase; + +import commonj.sdo.DataObject; +import commonj.sdo.helper.TypeHelper; +import commonj.sdo.helper.XMLDocument; +import commonj.sdo.helper.XMLHelper; +import commonj.sdo.helper.XSDHelper; + +public class XPathTestCase extends TestCase { + + private final String TEST_MODEL = "/xpath.xsd"; + private final String XPATH_XML = "/xpath.xml"; + + /** + * The presence or absence of the @ sign in a path has no meaning. + * Properties are always matched by name independent of their XML representation. + * @throws IOException + */ + public void testAtSignProperty() throws IOException { + 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 drive = doc.getRootObject(); + DataObject folder1 = (DataObject) drive.get("Folder.1"); + String value = folder1.getString("@creation_date"); + + 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); + } +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XSDHelperTestCase.java b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XSDHelperTestCase.java new file mode 100644 index 0000000000..557fa12d87 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XSDHelperTestCase.java @@ -0,0 +1,192 @@ +/** + * + * 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.net.URL; +import java.util.Hashtable; +import java.util.List; +import java.util.Vector; + +import junit.framework.TestCase; + +import org.apache.tuscany.sdo.util.SDOUtil; + +import com.example.simple.impl.SimpleFactoryImpl; +import commonj.sdo.DataObject; +import commonj.sdo.Type; +import commonj.sdo.helper.DataFactory; +import commonj.sdo.helper.TypeHelper; +import commonj.sdo.helper.XSDHelper; + +/** + * @version $Rev$ $Date$ + */ +public class XSDHelperTestCase extends TestCase { + private static final String TEST_MODEL = "/simple.xsd"; + private URL modelURL; + + public void testDefineWithLocation() throws IOException { + XSDHelper xsdHelper = SDOUtil.createXSDHelper(SDOUtil.createTypeHelper()); + List types = xsdHelper.define(modelURL.openStream(), modelURL.toString()); + assertEquals(2, types.size()); + } + + public void testDefineWithNoLocation() { + XSDHelper xsdHelper = SDOUtil.createXSDHelper(SDOUtil.createTypeHelper()); + List types = xsdHelper.define(getClass().getResourceAsStream(TEST_MODEL), null); + assertEquals(2, types.size()); + } + + public void testDuplicateDefineWithLocation() throws IOException { + XSDHelper xsdHelper = SDOUtil.createXSDHelper(SDOUtil.createTypeHelper()); + List types = xsdHelper.define(modelURL.openStream(), modelURL.toString()); + assertEquals(2, types.size()); + + List types2 = xsdHelper.define(modelURL.openStream(), modelURL.toString()); + assertEquals(0, types2.size()); + } + + public void testXSDGeneration_staticSDOType() throws IOException + { + //test for static sdo type. The test succeeds if the IllegalArgumentException is thrown + //by XSDHelper.generate method in which case the string xsd must be null; + XSDHelper xsdHelper = SDOUtil.createXSDHelper(SDOUtil.createTypeHelper()); + DataObject quoteSDO = (DataObject)SimpleFactoryImpl.INSTANCE.createQuote(); + List typeList = new Vector(); + typeList.add(quoteSDO.getType()); + String xsd = null; + + try + { + xsd = xsdHelper.generate(typeList); + xsd = ""; + } + catch ( IllegalArgumentException e ) + { + } + assertNull(xsd); + } + + public void testXSDGeneration_DynamicSDOType() throws IOException + { + //test for dynamic SDOs that have no XSD model. Here the testcase succeeds only if the + //xsd is generated by XSDHelper in which case xsd must not be null + XSDHelper xsdHelper = SDOUtil.createXSDHelper(SDOUtil.createTypeHelper()); + DataObject quoteType = DataFactory.INSTANCE.create("commonj.sdo", "Type"); + quoteType.set("uri", "http://www.example.com/dynamic"); + quoteType.set("name", "DynamicQuote"); + + DataObject aProperty = quoteType.createDataObject("property"); + aProperty.set("name", "symbol"); + aProperty.set("type", TypeHelper.INSTANCE.getType("commonj.sdo", "String")); + + aProperty = quoteType.createDataObject("property"); + aProperty.set("name", "price"); + aProperty.set("type", TypeHelper.INSTANCE.getType("commonj.sdo", "Decimal")); + + aProperty = quoteType.createDataObject("property"); + aProperty.set("name", "volume"); + aProperty.set("type", TypeHelper.INSTANCE.getType("commonj.sdo", "Double")); + + TypeHelper.INSTANCE.define(quoteType); + + Type dynamicQuoteType = + TypeHelper.INSTANCE.getType("http://www.example.com/dynamic", "DynamicQuote"); + + Vector types = new Vector(); + types.add(dynamicQuoteType); + String xsd = null; + + try + { + xsd = xsdHelper.generate(types); + //System.out.println(xsd); + } + catch ( IllegalArgumentException e ) + { + } + assertNotNull(xsd); + + } + + public void testXSDGeneration_DynamicWithNestedStaticSDOType() throws IOException + { + //testing static SDO with XSD Model being contained in a Dynamic SDO not having an XSD Model. + //the schema must be generated with imports / includes for the XSD corresponding to the static + //sdo types. + TypeHelper typeHelper = SDOUtil.createTypeHelper(); + XSDHelper xsdHelper = SDOUtil.createXSDHelper(typeHelper); + + DataObject quoteSDO = (DataObject)SimpleFactoryImpl.INSTANCE.createQuote(); + + + DataObject quoteType = DataFactory.INSTANCE.create("commonj.sdo", "Type"); + quoteType.set("uri", "http://www.example.com/dynamic"); + quoteType.set("name", "DynamicQuote"); + + DataObject aProperty = quoteType.createDataObject("property"); + aProperty.set("name", "symbol"); + aProperty.set("type", typeHelper.getType("commonj.sdo", "String")); + + aProperty = quoteType.createDataObject("property"); + aProperty.set("name", "price"); + aProperty.set("type", typeHelper.getType("commonj.sdo", "Decimal")); + + aProperty = quoteType.createDataObject("property"); + aProperty.set("name", "volume"); + aProperty.set("type", typeHelper.getType("commonj.sdo", "Double")); + + aProperty = quoteType.createDataObject("property"); + aProperty.set("name", "containedQuotes"); + aProperty.set("type", typeHelper.getType(quoteSDO.getType().getURI(), quoteSDO.getType().getName())); + aProperty.set("containment", new Boolean(true)); + + aProperty = quoteType.createDataObject("property"); + aProperty.set("name", "referredQuotes"); + aProperty.set("type", typeHelper.getType(quoteSDO.getType().getURI(), quoteSDO.getType().getName())); + + typeHelper.define(quoteType); + + Type dynamicQuoteType = + typeHelper.getType("http://www.example.com/dynamic", "DynamicQuote"); + Vector types = new Vector(); + types.add(dynamicQuoteType); + String xsd = null; + + try + { + Hashtable schemaLocationMap = new Hashtable(); + schemaLocationMap.put("http://www.example.com/simple", "http://www.example.com/simple/xsd"); + xsd = xsdHelper.generate(types, schemaLocationMap); + //System.out.println(xsd); + } + catch ( IllegalArgumentException e ) + { + } + assertNotNull(xsd); + + } + + protected void setUp() throws Exception { + super.setUp(); + modelURL = getClass().getResource(TEST_MODEL); + } +} diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/SubstitutionValues.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/SubstitutionValues.xsd new file mode 100644 index 0000000000..7aee02c032 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/SubstitutionValues.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentNoNamespaceSchemaLocation.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentNoNamespaceSchemaLocation.xsd new file mode 100644 index 0000000000..7718cb424f --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentNoNamespaceSchemaLocation.xsd @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentSchemaLocation.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentSchemaLocation.xsd new file mode 100644 index 0000000000..c48fab79f1 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentSchemaLocation.xsd @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentTestCase.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentTestCase.xml new file mode 100644 index 0000000000..88160e0b2f --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentTestCase.xml @@ -0,0 +1,14 @@ + + some string + + another string + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/api_test.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/api_test.xsd new file mode 100644 index 0000000000..3ccaebdd57 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/api_test.xsd @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/bank.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/bank.xsd new file mode 100644 index 0000000000..ae23feefa3 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/bank.xsd @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/company.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/company.xsd new file mode 100644 index 0000000000..18e99352be --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/company.xsd @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/customer1.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/customer1.xml new file mode 100644 index 0000000000..5a29e30a3c --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/customer1.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/customer2.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/customer2.xml new file mode 100644 index 0000000000..e9ebb92677 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/customer2.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/datatype.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/datatype.xsd new file mode 100644 index 0000000000..9c03964367 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/datatype.xsd @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xml new file mode 100644 index 0000000000..000909a52e --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xml @@ -0,0 +1,9 @@ + + + 1Dummy2 + + + \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xsd new file mode 100644 index 0000000000..8bad6f9307 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xsd @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo.xsd new file mode 100644 index 0000000000..27a8e3644c --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/foo.xsd @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xml new file mode 100644 index 0000000000..42ff3a3a5b --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xml @@ -0,0 +1,9 @@ + + + fbnt + FlyByNightTechnology + some text + 2000.0 + more text + 1000.0 + \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xsd new file mode 100644 index 0000000000..b9a8487559 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xsd @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed2.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed2.xml new file mode 100644 index 0000000000..d95d179478 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed2.xml @@ -0,0 +1,12 @@ + + + fbnt + FlyByNightTechnology + some text + 2000.0 + more text + 1000.0 + \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixedopen.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixedopen.xml new file mode 100644 index 0000000000..21a62ef2d0 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/mixedopen.xml @@ -0,0 +1,13 @@ + + + fbnt + FlyByNightTechnology + some text + 2000.0 + more text + 1000.0 + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/names.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/names.xsd new file mode 100644 index 0000000000..97b57c1741 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/names.xsd @@ -0,0 +1,33 @@ + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xml new file mode 100644 index 0000000000..d4a5b92e0c --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xml @@ -0,0 +1,8 @@ + + + s1 + + FlyByNightTechnology + + 1000.0 + \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xsd new file mode 100644 index 0000000000..d100d58fc6 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xsd @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd new file mode 100644 index 0000000000..00efaef5e0 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open2.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open2.xml new file mode 100644 index 0000000000..ab992ccf74 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/open2.xml @@ -0,0 +1,9 @@ + + + s1 + + 1000.0 + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/openContentProperty.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/openContentProperty.xml new file mode 100644 index 0000000000..03608365c0 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/openContentProperty.xml @@ -0,0 +1,12 @@ + + + s1 + + FlyByNightTechnology + + 1000.0 + 1100.0 + + mutual-1 + + \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/po.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/po.xsd new file mode 100644 index 0000000000..5c53ac1905 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/po.xsd @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/quote.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/quote.xml new file mode 100644 index 0000000000..d7b5969e23 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/quote.xml @@ -0,0 +1,14 @@ + + + fbnt + FlyByNightTechnology + 1000.0 + 1000.0 + 1000.0 + 1000.0 + 1000.0 + 1000.0 + + 2000.0 + + \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/sdoannotations.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/sdoannotations.xsd new file mode 100644 index 0000000000..98be3a57d7 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/sdoannotations.xsd @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/sdotypes.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/sdotypes.xsd new file mode 100644 index 0000000000..f206c86013 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/sdotypes.xsd @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/shallowquote.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/shallowquote.xml new file mode 100644 index 0000000000..a56f2fe2b7 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/shallowquote.xml @@ -0,0 +1,11 @@ + + + fbnt + FlyByNightTechnology + 1000.0 + 1000.0 + 1000.0 + 1000.0 + 1000.0 + 1000.0 + \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/simple.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/simple.xsd new file mode 100644 index 0000000000..46a2b1f4df --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/simple.xsd @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/simplechangesummary.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/simplechangesummary.xml new file mode 100644 index 0000000000..1a34e0bf80 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/simplechangesummary.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + fbnt + FlyByNightTechnology + 1000.0 + 1000.0 + 1000.0 + 1000.0 + 1000.0 + 1000.0 + + 2000.0 + + + diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xml b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xml new file mode 100644 index 0000000000..3b3e2ffbb4 --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xml @@ -0,0 +1,51 @@ + + + + Folder00000000000 + marries inflamed apprehended beseeming bustle + + + + Brian + rw + + + Fuhwei + r + + + + + Hasan + + + Frank + + + + + + Folder00000000011 + Mumbling Jumblin Pink Panther goofs it up + + + + Imad + x + + + Robbie + rwx + + + + + Yang + + + Art + + + + + \ No newline at end of file diff --git a/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xsd b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xsd new file mode 100644 index 0000000000..0b817d425d --- /dev/null +++ b/sdo-java/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xsd @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3